群辉安装OpenClaw:修订间差异

无编辑摘要
标签已被回退 可视化编辑
无编辑摘要
标签手工回退
 
(未显示另一用户的1个中间版本)
第3行: 第3行:
---
---


<nowiki>##</nowiki> 📦 第一阶段:在群晖上创建 Ubuntu 虚拟机
## 📦 第一阶段:在群晖上创建 Ubuntu 虚拟机
 
<nowiki>###</nowiki> 1.1 安装 Virtual Machine Manager


### 1.1 安装 Virtual Machine Manager
- 登录群晖 DSM → **套件中心** → 搜索并安装 **Virtual Machine Manager**。
- 登录群晖 DSM → **套件中心** → 搜索并安装 **Virtual Machine Manager**。


<nowiki>###</nowiki> 1.2 下载 Ubuntu Server 镜像
### 1.2 下载 Ubuntu Server 镜像
 
- 访问 [Ubuntu 官网下载](https://cn.ubuntu.com/download/server),选择 **Ubuntu 22.04 LTS 或 24.04 LTS 服务器版**(推荐 22.04,更稳定)。
- 访问 [Ubuntu 官网下载](<nowiki>https://cn.ubuntu.com/download/server),选择</nowiki> **Ubuntu 22.04 LTS 或 24.04 LTS 服务器版**(推荐 22.04,更稳定)。
 
- 将下载的 ISO 文件上传到群晖的共享文件夹(如 `docker` 或 `iso` 目录)。
- 将下载的 ISO 文件上传到群晖的共享文件夹(如 `docker` 或 `iso` 目录)。


<nowiki>###</nowiki> 1.3 创建虚拟机
### 1.3 创建虚拟机
 
- 打开 VMM → **虚拟机** → **新增** → 选择 “从 ISO 映像安装”。
- 打开 VMM → **虚拟机** → **新增** → 选择 “从 ISO 映像安装”。
- **存储**:建议分配 64 GB 以上(实际占用会随项目增长)。
- **存储**:建议分配 64 GB 以上(实际占用会随项目增长)。
- **CPU**:分配 4 核心(群晖性能足够)。
- **CPU**:分配 4 核心(群晖性能足够)。
- **内存**:分配 8 GB(32 GB 内存绰绰有余)。
- **内存**:分配 8 GB(32 GB 内存绰绰有余)。
- **网络**:选择 **桥接模式**,确保虚拟机与宿主机在同一局域网,并获得独立 IP,方便后续手机连接 OpenClaw 服务。
- **网络**:选择 **桥接模式**,确保虚拟机与宿主机在同一局域网,并获得独立 IP,方便后续手机连接 OpenClaw 服务。
- **ISO 映像**:选择你上传的 Ubuntu Server ISO。
- **ISO 映像**:选择你上传的 Ubuntu Server ISO。
- 完成创建后启动虚拟机,通过 VMM 的远程控制窗口完成 Ubuntu 系统安装。
- 完成创建后启动虚拟机,通过 VMM 的远程控制窗口完成 Ubuntu 系统安装。


<nowiki>###</nowiki> 1.4 安装 Ubuntu Server
### 1.4 安装 Ubuntu Server
 
- 语言、键盘布局默认。
- 语言、键盘布局默认。
- 网络配置:建议设置静态 IP(例如 `192.168.1.200`),避免 DHCP 变更导致后续连接失效。
- 网络配置:建议设置静态 IP(例如 `192.168.1.200`),避免 DHCP 变更导致后续连接失效。
- 软件选择:只勾选 **OpenSSH server**(无需图形界面)。
- 软件选择:只勾选 **OpenSSH server**(无需图形界面)。
- 创建用户(例如用户名 `ubuntu`),记好密码。
- 创建用户(例如用户名 `ubuntu`),记好密码。
- 安装完成后重启,取出虚拟光驱(ISO)。
- 安装完成后重启,取出虚拟光驱(ISO)。


<nowiki>###</nowiki> 1.5 验证 SSH 连接
### 1.5 验证 SSH 连接
 
- 从你的主电脑使用 SSH 连接虚拟机,后续所有操作均可通过 SSH 完成:
- 从你的主电脑使用 SSH 连接虚拟机,后续所有操作均可通过 SSH 完成:
 
  ```bash
  ```bash
  ssh ubuntu@192.168.1.200  # 替换为你的实际 IP
 
  ```
  ssh ubuntu@192.168.1.200   # 替换为你的实际 IP
 
  ```


---
---


<nowiki>##</nowiki> 🧰 第二阶段:Ubuntu 基础环境配置
## 🧰 第二阶段:Ubuntu 基础环境配置


```bash
```bash
 
# 更新系统包
<nowiki>#</nowiki> 更新系统包
 
sudo apt update && sudo apt upgrade -y
sudo apt update && sudo apt upgrade -y


<nowiki>#</nowiki> 安装常用工具
# 安装常用工具
 
sudo apt install -y curl wget git unzip build-essential
sudo apt install -y curl wget git unzip build-essential


<nowiki>#</nowiki> 可选:设置时区为 Asia/Shanghai
# 可选:设置时区为 Asia/Shanghai
 
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-timezone Asia/Shanghai
```
```


---
---


<nowiki>##</nowiki> 🚀 第三阶段:安装 OpenClaw 服务端
## 🚀 第三阶段:安装 OpenClaw 服务端
 
<nowiki>###</nowiki> 3.1 安装 Node.js(官方推荐版本 22.x)


### 3.1 安装 Node.js(官方推荐版本 22.x)
```bash
```bash
 
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
curl -fsSL <nowiki>https://deb.nodesource.com/setup_22.x</nowiki> | sudo -E bash -
 
sudo apt install -y nodejs
sudo apt install -y nodejs
 
node -# 应显示 v22.x
node -v   # 应显示 v22.x
 
```
```


<nowiki>###</nowiki> 3.2 安装 OpenClaw(通过 npm 全局安装)
### 3.2 安装 OpenClaw(通过 npm 全局安装)
 
```bash
```bash
sudo npm install -g openclaw
sudo npm install -g openclaw
 
# 验证安装
<nowiki>#</nowiki> 验证安装
 
openclaw --version
openclaw --version
```
```


<nowiki>###</nowiki> 3.3 初始化 OpenClaw 配置
### 3.3 初始化 OpenClaw 配置
 
```bash
```bash
openclaw onboard
openclaw onboard
```
```
交互式配置要点:
交互式配置要点:
- **Binding**:选择 `0.0.0.0`(允许局域网其他设备访问)。
- **Binding**:选择 `0.0.0.0`(允许局域网其他设备访问)。
- **Port**:默认 `18789`。
- **Port**:默认 `18789`。
- **API Keys**:根据你使用的 AI 模型(如 OpenAI、Gemini)填入对应的 API Key。
- **API Keys**:根据你使用的 AI 模型(如 OpenAI、Gemini)填入对应的 API Key。
- **记录生成的 token**(后续连接客户端需要)。
- **记录生成的 token**(后续连接客户端需要)。


<nowiki>###</nowiki> 3.4 启动服务并设置守护进程
### 3.4 启动服务并设置守护进程
 
```bash
```bash
 
# 安装 PM2 守护进程
<nowiki>#</nowiki> 安装 PM2 守护进程
 
sudo npm install -g pm2
sudo npm install -g pm2


<nowiki>#</nowiki> 启动 OpenClaw 网关
# 启动 OpenClaw 网关
 
pm2 start $(which openclaw) -- gateway
pm2 start $(which openclaw) -- gateway


<nowiki>#</nowiki> 保存 PM2 配置,并设置开机自启
# 保存 PM2 配置,并设置开机自启
 
pm2 save
pm2 save
pm2 startup
pm2 startup
```
```
执行 `pm2 startup` 后,会输出一条带有 `sudo env` 的命令,请复制并执行它。
执行 `pm2 startup` 后,会输出一条带有 `sudo env` 的命令,请复制并执行它。


<nowiki>###</nowiki> 3.5 验证服务状态
### 3.5 验证服务状态
 
```bash
```bash
 
curl http://localhost:18789/health
curl <nowiki>http://localhost:18789/health</nowiki>
# 预期返回类似 {"status":"ok"}
 
<nowiki>#</nowiki> 预期返回类似 {"status":"ok"}
 
```
```
记录 token(用于后续节点连接):
记录 token(用于后续节点连接):
```bash
```bash
cat ~/.openclaw/openclaw.json | grep token
cat ~/.openclaw/openclaw.json | grep token
```
```


---
---


<nowiki>##</nowiki> 🛠️ 第四阶段:搭建 Flutter/Android 构建环境
## 🛠️ 第四阶段:搭建 Flutter/Android 构建环境
 
<nowiki>###</nowiki> 4.1 安装 JDK 17


### 4.1 安装 JDK 17
```bash
```bash
sudo apt install -y openjdk-17-jdk
sudo apt install -y openjdk-17-jdk
 
java -version  # 确保版本为 17
java -version   # 确保版本为 17
 
```
```


<nowiki>###</nowiki> 4.2 安装 Android SDK(命令行工具)
### 4.2 安装 Android SDK(命令行工具)
 
```bash
```bash
cd ~
cd ~
 
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
wget <nowiki>https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip</nowiki>
 
unzip commandlinetools-linux-*.zip -d android-sdk
unzip commandlinetools-linux-*.zip -d android-sdk
mkdir -p android-sdk/cmdline-tools/latest
mkdir -p android-sdk/cmdline-tools/latest
 
# 将解压的内容移动到 latest 目录(注意路径可能不同)
<nowiki>#</nowiki> 将解压的内容移动到 latest 目录(注意路径可能不同)
 
mv android-sdk/cmdline-tools/* android-sdk/cmdline-tools/latest/ 2>/dev/null || true
mv android-sdk/cmdline-tools/* android-sdk/cmdline-tools/latest/ 2>/dev/null || true
```
```


<nowiki>###</nowiki> 4.3 设置环境变量
### 4.3 设置环境变量
 
编辑 `~/.bashrc`,在末尾添加:
编辑 `~/.bashrc`,在末尾添加:
```bash
```bash
export ANDROID_HOME=$HOME/android-sdk
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools
 
export PATH=$PATH:$HOME/flutter/bin  # Flutter 路径将在下一步添加
export PATH=$PATH:$HOME/flutter/bin   # Flutter 路径将在下一步添加
 
```
```
然后刷新:
然后刷新:
```bash
```bash
source ~/.bashrc
source ~/.bashrc
```
```


<nowiki>###</nowiki> 4.4 安装必要的 SDK 组件
### 4.4 安装必要的 SDK 组件
 
```bash
```bash
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
```
```


<nowiki>###</nowiki> 4.5 安装 Flutter SDK
### 4.5 安装 Flutter SDK
 
```bash
```bash
cd ~
cd ~
 
wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.1-stable.tar.xz
wget <nowiki>https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.1-stable.tar.xz</nowiki>
 
tar xf flutter_linux_*.tar.xz
tar xf flutter_linux_*.tar.xz
 
# 环境变量已在 .bashrc 中添加,直接生效
<nowiki>#</nowiki> 环境变量已在 .bashrc 中添加,直接生效
 
source ~/.bashrc
source ~/.bashrc
```
```


<nowiki>###</nowiki> 4.6 安装 Flutter Linux 桌面依赖(用于 flutter doctor)
### 4.6 安装 Flutter Linux 桌面依赖(用于 flutter doctor)
 
```bash
```bash
sudo apt install -y clang cmake ninja-build libgtk-3-dev
sudo apt install -y clang cmake ninja-build libgtk-3-dev
```
```


<nowiki>###</nowiki> 4.7 运行 flutter doctor 并接受 licenses
### 4.7 运行 flutter doctor 并接受 licenses
 
```bash
```bash
flutter doctor
flutter doctor
 
# 如果显示 Android licenses 未接受,则运行:
<nowiki>#</nowiki> 如果显示 Android licenses 未接受,则运行:
 
flutter doctor --android-licenses
flutter doctor --android-licenses
 
# 一直输入 y 接受所有协议
<nowiki>#</nowiki> 一直输入 y 接受所有协议
 
```
```


<nowiki>###</nowiki> 4.8 克隆 OpenClaw Flutter 项目并测试构建
### 4.8 克隆 OpenClaw Flutter 项目并测试构建
 
```bash
```bash
 
git clone https://github.com/mithun50/openclaw-termux.git
git clone <nowiki>https://github.com/mithun50/openclaw-termux.git</nowiki>
 
cd openclaw-termux/flutter_app
cd openclaw-termux/flutter_app
flutter pub get
flutter pub get
flutter build apk --debug
flutter build apk --debug
```
```
构建成功后,APK 位于 `build/app/outputs/flutter-apk/app-debug.apk`。
构建成功后,APK 位于 `build/app/outputs/flutter-apk/app-debug.apk`。


---
---


<nowiki>##</nowiki> 📱 第五阶段:维基百科 Android App 开发环境
## 📱 第五阶段:维基百科 Android App 开发环境
 
<nowiki>###</nowiki> 5.1 克隆维基百科官方 Android 项目


### 5.1 克隆维基百科官方 Android 项目
```bash
```bash
cd ~
cd ~
 
git clone https://github.com/wikimedia/apps-android-wikipedia.git
git clone <nowiki>https://github.com/wikimedia/apps-android-wikipedia.git</nowiki>
 
cd apps-android-wikipedia
cd apps-android-wikipedia
```
```


<nowiki>###</nowiki> 5.2 使用 Gradle Wrapper 构建(验证环境)
### 5.2 使用 Gradle Wrapper 构建(验证环境)
 
```bash
```bash
./gradlew assembleDebug
./gradlew assembleDebug
```
```
首次构建会下载 Kotlin 编译器、依赖库等,耗时稍长。成功后 APK 位于 `app/build/outputs/apk/debug/`。
首次构建会下载 Kotlin 编译器、依赖库等,耗时稍长。成功后 APK 位于 `app/build/outputs/apk/debug/`。


<nowiki>###</nowiki> 5.3 修改为自己 MediaWiki 站点的关键文件
### 5.3 修改为自己 MediaWiki 站点的关键文件
 
- `app/src/main/java/org/wikipedia/settings/SiteInfo.kt`:修改 API 端点为你的 MediaWiki 地址。
- `app/src/main/java/org/wikipedia/settings/SiteInfo.kt`:修改 API 端点为你的 MediaWiki 地址。
- `app/src/main/res/values/config.xml`:修改应用名称、OAuth 配置等。
- `app/src/main/res/values/config.xml`:修改应用名称、OAuth 配置等。
 
- 详细修改可参考 [MediaWiki 官方文档](https://www.mediawiki.org/wiki/MediaWiki)。
- 详细修改可参考 [MediaWiki 官方文档](<nowiki>https://www.mediawiki.org/wiki/MediaWiki)。</nowiki>


---
---


<nowiki>##</nowiki> 🔌 第六阶段:配置远程控制(将 Ubuntu 开发机作为 OpenClaw 节点)
## 🔌 第六阶段:配置远程控制(将 Ubuntu 开发机作为 OpenClaw 节点)
 
<nowiki>###</nowiki> 6.1 在 Ubuntu 开发机上连接 OpenClaw 服务端


### 6.1 在 Ubuntu 开发机上连接 OpenClaw 服务端
确保 OpenClaw CLI 已安装(之前已全局安装)。
确保 OpenClaw CLI 已安装(之前已全局安装)。
```bash
```bash
 
# 使用 openclaw remote 命令连接(具体命令名称请用 openclaw --help 确认)
<nowiki>#</nowiki> 使用 openclaw remote 命令连接(具体命令名称请用 openclaw --help 确认)
# 假设命令为 openclaw remote connect
 
<nowiki>#</nowiki> 假设命令为 openclaw remote connect
 
openclaw remote connect --host 192.168.1.200 --token <你的服务端token>
openclaw remote connect --host 192.168.1.200 --token <你的服务端token>
```
```
如果命令格式不同,请根据帮助调整。
如果命令格式不同,请根据帮助调整。


<nowiki>###</nowiki> 6.2 在服务端批准节点
### 6.2 在服务端批准节点
 
登录到运行 OpenClaw 服务端的机器(同一台 Ubuntu 虚拟机),查看待批准设备:
登录到运行 OpenClaw 服务端的机器(同一台 Ubuntu 虚拟机),查看待批准设备:
```bash
```bash
openclaw devices list
openclaw devices list
 
# 找到状态为 pending 的设备 ID
<nowiki>#</nowiki> 找到状态为 pending 的设备 ID
 
openclaw devices approve <设备ID>
openclaw devices approve <设备ID>
```
```


<nowiki>###</nowiki> 6.3 验证节点状态
### 6.3 验证节点状态
 
在服务端执行:
在服务端执行:
```bash
```bash
openclaw nodes list
openclaw nodes list
```
```
如果看到你的开发机状态为 `online`,则配置成功。
如果看到你的开发机状态为 `online`,则配置成功。


---
---


<nowiki>##</nowiki> 🧪 第七阶段:验证整体流程
## 🧪 第七阶段:验证整体流程
 
<nowiki>###</nowiki> 7.1 从手机或电脑访问 OpenClaw 服务
 
- 使用 OpenClaw 官方 App(Kotlin 版)或社区 Flutter 版,配置服务器地址为 `<nowiki>http://192.168.1.200:18789`,填入</nowiki> token。


### 7.1 从手机或电脑访问 OpenClaw 服务
- 使用 OpenClaw 官方 App(Kotlin 版)或社区 Flutter 版,配置服务器地址为 `http://192.168.1.200:18789`,填入 token。
- 连接成功后,应该能看到你的 Ubuntu 开发机作为一个在线节点。
- 连接成功后,应该能看到你的 Ubuntu 开发机作为一个在线节点。


<nowiki>###</nowiki> 7.2 尝试远程执行命令
### 7.2 尝试远程执行命令
 
- 在 OpenClaw 聊天界面中,发送指令:“请在 Ubuntu 开发机上执行 `ls -la /home`”。
- 在 OpenClaw 聊天界面中,发送指令:“请在 Ubuntu 开发机上执行 `ls -la /home`”。
- 如果配置正确,AI 会调用远程节点执行命令并返回结果。
- 如果配置正确,AI 会调用远程节点执行命令并返回结果。


---
---


<nowiki>##</nowiki> 💡 重要提示与排错
## 💡 重要提示与排错


| 问题 | 解决方法 |
| 问题 | 解决方法 |
|------|----------|
|------|----------|
| 虚拟机无法访问外网 | 检查 VMM 网络是否为桥接模式,确认 Ubuntu 内网络配置正确。 |
| 虚拟机无法访问外网 | 检查 VMM 网络是否为桥接模式,确认 Ubuntu 内网络配置正确。 |
| OpenClaw 服务启动失败 | 查看 PM2 日志:`pm2 logs openclaw`。 |
| OpenClaw 服务启动失败 | 查看 PM2 日志:`pm2 logs openclaw`。 |
| Flutter 构建找不到 Android SDK | 确认 `ANDROID_HOME` 环境变量已设置,且 `sdkmanager` 可用。 |
| Flutter 构建找不到 Android SDK | 确认 `ANDROID_HOME` 环境变量已设置,且 `sdkmanager` 可用。 |
| 远程连接超时 | 检查防火墙是否开放 18789 端口:`sudo ufw allow 18789/tcp`。 |
| 远程连接超时 | 检查防火墙是否开放 18789 端口:`sudo ufw allow 18789/tcp`。 |
| 维基百科项目编译内存不足 | 分配更多内存给虚拟机,或在 `gradle.properties` 中调整 JVM 参数。 |
| 维基百科项目编译内存不足 | 分配更多内存给虚拟机,或在 `gradle.properties` 中调整 JVM 参数。 |