群辉安装OpenClaw:修订间差异
无编辑摘要 |
无编辑摘要 标签:手工回退 |
||
| (未显示另一用户的1个中间版本) | |||
| 第3行: | 第3行: | ||
--- | --- | ||
## 📦 第一阶段:在群晖上创建 Ubuntu 虚拟机 | |||
### 1.1 安装 Virtual Machine Manager | |||
- 登录群晖 DSM → **套件中心** → 搜索并安装 **Virtual Machine Manager**。 | - 登录群晖 DSM → **套件中心** → 搜索并安装 **Virtual Machine Manager**。 | ||
### 1.2 下载 Ubuntu Server 镜像 | |||
- 访问 [Ubuntu 官网下载](https://cn.ubuntu.com/download/server),选择 **Ubuntu 22.04 LTS 或 24.04 LTS 服务器版**(推荐 22.04,更稳定)。 | |||
- 访问 [Ubuntu 官网下载]( | |||
- 将下载的 ISO 文件上传到群晖的共享文件夹(如 `docker` 或 `iso` 目录)。 | - 将下载的 ISO 文件上传到群晖的共享文件夹(如 `docker` 或 `iso` 目录)。 | ||
### 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 系统安装。 | ||
### 1.4 安装 Ubuntu Server | |||
- 语言、键盘布局默认。 | - 语言、键盘布局默认。 | ||
- 网络配置:建议设置静态 IP(例如 `192.168.1.200`),避免 DHCP 变更导致后续连接失效。 | - 网络配置:建议设置静态 IP(例如 `192.168.1.200`),避免 DHCP 变更导致后续连接失效。 | ||
- 软件选择:只勾选 **OpenSSH server**(无需图形界面)。 | - 软件选择:只勾选 **OpenSSH server**(无需图形界面)。 | ||
- 创建用户(例如用户名 `ubuntu`),记好密码。 | - 创建用户(例如用户名 `ubuntu`),记好密码。 | ||
- 安装完成后重启,取出虚拟光驱(ISO)。 | - 安装完成后重启,取出虚拟光驱(ISO)。 | ||
### 1.5 验证 SSH 连接 | |||
- 从你的主电脑使用 SSH 连接虚拟机,后续所有操作均可通过 SSH 完成: | - 从你的主电脑使用 SSH 连接虚拟机,后续所有操作均可通过 SSH 完成: | ||
```bash | |||
ssh ubuntu@192.168.1.200 # 替换为你的实际 IP | |||
``` | |||
--- | --- | ||
## 🧰 第二阶段:Ubuntu 基础环境配置 | |||
```bash | ```bash | ||
# 更新系统包 | |||
sudo apt update && sudo apt upgrade -y | sudo apt update && sudo apt upgrade -y | ||
# 安装常用工具 | |||
sudo apt install -y curl wget git unzip build-essential | sudo apt install -y curl wget git unzip build-essential | ||
# 可选:设置时区为 Asia/Shanghai | |||
sudo timedatectl set-timezone Asia/Shanghai | sudo timedatectl set-timezone Asia/Shanghai | ||
``` | ``` | ||
--- | --- | ||
## 🚀 第三阶段:安装 OpenClaw 服务端 | |||
### 3.1 安装 Node.js(官方推荐版本 22.x) | |||
```bash | ```bash | ||
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - | |||
curl -fsSL | |||
sudo apt install -y nodejs | sudo apt install -y nodejs | ||
node -v # 应显示 v22.x | |||
node - | |||
``` | ``` | ||
### 3.2 安装 OpenClaw(通过 npm 全局安装) | |||
```bash | ```bash | ||
sudo npm install -g openclaw | sudo npm install -g openclaw | ||
# 验证安装 | |||
openclaw --version | openclaw --version | ||
``` | ``` | ||
### 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**(后续连接客户端需要)。 | ||
### 3.4 启动服务并设置守护进程 | |||
```bash | ```bash | ||
# 安装 PM2 守护进程 | |||
sudo npm install -g pm2 | sudo npm install -g pm2 | ||
# 启动 OpenClaw 网关 | |||
pm2 start $(which openclaw) -- gateway | pm2 start $(which openclaw) -- gateway | ||
# 保存 PM2 配置,并设置开机自启 | |||
pm2 save | pm2 save | ||
pm2 startup | pm2 startup | ||
``` | ``` | ||
执行 `pm2 startup` 后,会输出一条带有 `sudo env` 的命令,请复制并执行它。 | 执行 `pm2 startup` 后,会输出一条带有 `sudo env` 的命令,请复制并执行它。 | ||
### 3.5 验证服务状态 | |||
```bash | ```bash | ||
curl http://localhost:18789/health | |||
curl | # 预期返回类似 {"status":"ok"} | ||
``` | ``` | ||
记录 token(用于后续节点连接): | 记录 token(用于后续节点连接): | ||
```bash | ```bash | ||
cat ~/.openclaw/openclaw.json | grep token | cat ~/.openclaw/openclaw.json | grep token | ||
``` | ``` | ||
--- | --- | ||
## 🛠️ 第四阶段:搭建 Flutter/Android 构建环境 | |||
### 4.1 安装 JDK 17 | |||
```bash | ```bash | ||
sudo apt install -y openjdk-17-jdk | sudo apt install -y openjdk-17-jdk | ||
java -version # 确保版本为 17 | |||
java - | |||
``` | ``` | ||
### 4.2 安装 Android SDK(命令行工具) | |||
```bash | ```bash | ||
cd ~ | cd ~ | ||
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip | |||
wget | |||
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 目录(注意路径可能不同) | |||
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 | ||
``` | ``` | ||
### 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/ | |||
``` | ``` | ||
然后刷新: | 然后刷新: | ||
```bash | ```bash | ||
source ~/.bashrc | source ~/.bashrc | ||
``` | ``` | ||
### 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" | ||
``` | ``` | ||
### 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 | |||
tar xf flutter_linux_*.tar.xz | tar xf flutter_linux_*.tar.xz | ||
# 环境变量已在 .bashrc 中添加,直接生效 | |||
source ~/.bashrc | source ~/.bashrc | ||
``` | ``` | ||
### 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 | ||
``` | ``` | ||
### 4.7 运行 flutter doctor 并接受 licenses | |||
```bash | ```bash | ||
flutter doctor | flutter doctor | ||
# 如果显示 Android licenses 未接受,则运行: | |||
flutter doctor --android-licenses | flutter doctor --android-licenses | ||
# 一直输入 y 接受所有协议 | |||
``` | ``` | ||
### 4.8 克隆 OpenClaw Flutter 项目并测试构建 | |||
```bash | ```bash | ||
git clone https://github.com/mithun50/openclaw-termux.git | |||
git clone | |||
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`。 | ||
--- | --- | ||
## 📱 第五阶段:维基百科 Android App 开发环境 | |||
### 5.1 克隆维基百科官方 Android 项目 | |||
```bash | ```bash | ||
cd ~ | cd ~ | ||
git clone https://github.com/wikimedia/apps-android-wikipedia.git | |||
git clone | |||
cd apps-android-wikipedia | cd apps-android-wikipedia | ||
``` | ``` | ||
### 5.2 使用 Gradle Wrapper 构建(验证环境) | |||
```bash | ```bash | ||
./gradlew assembleDebug | ./gradlew assembleDebug | ||
``` | ``` | ||
首次构建会下载 Kotlin 编译器、依赖库等,耗时稍长。成功后 APK 位于 `app/build/outputs/apk/debug/`。 | 首次构建会下载 Kotlin 编译器、依赖库等,耗时稍长。成功后 APK 位于 `app/build/outputs/apk/debug/`。 | ||
### 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 官方文档]( | |||
--- | --- | ||
## 🔌 第六阶段:配置远程控制(将 Ubuntu 开发机作为 OpenClaw 节点) | |||
### 6.1 在 Ubuntu 开发机上连接 OpenClaw 服务端 | |||
确保 OpenClaw CLI 已安装(之前已全局安装)。 | 确保 OpenClaw CLI 已安装(之前已全局安装)。 | ||
```bash | ```bash | ||
# 使用 openclaw remote 命令连接(具体命令名称请用 openclaw --help 确认) | |||
# 假设命令为 openclaw remote connect | |||
openclaw remote connect --host 192.168.1.200 --token <你的服务端token> | openclaw remote connect --host 192.168.1.200 --token <你的服务端token> | ||
``` | ``` | ||
如果命令格式不同,请根据帮助调整。 | 如果命令格式不同,请根据帮助调整。 | ||
### 6.2 在服务端批准节点 | |||
登录到运行 OpenClaw 服务端的机器(同一台 Ubuntu 虚拟机),查看待批准设备: | 登录到运行 OpenClaw 服务端的机器(同一台 Ubuntu 虚拟机),查看待批准设备: | ||
```bash | ```bash | ||
openclaw devices list | openclaw devices list | ||
# 找到状态为 pending 的设备 ID | |||
openclaw devices approve <设备ID> | openclaw devices approve <设备ID> | ||
``` | ``` | ||
### 6.3 验证节点状态 | |||
在服务端执行: | 在服务端执行: | ||
```bash | ```bash | ||
openclaw nodes list | openclaw nodes list | ||
``` | ``` | ||
如果看到你的开发机状态为 `online`,则配置成功。 | 如果看到你的开发机状态为 `online`,则配置成功。 | ||
--- | --- | ||
## 🧪 第七阶段:验证整体流程 | |||
### 7.1 从手机或电脑访问 OpenClaw 服务 | |||
- 使用 OpenClaw 官方 App(Kotlin 版)或社区 Flutter 版,配置服务器地址为 `http://192.168.1.200:18789`,填入 token。 | |||
- 连接成功后,应该能看到你的 Ubuntu 开发机作为一个在线节点。 | - 连接成功后,应该能看到你的 Ubuntu 开发机作为一个在线节点。 | ||
### 7.2 尝试远程执行命令 | |||
- 在 OpenClaw 聊天界面中,发送指令:“请在 Ubuntu 开发机上执行 `ls -la /home`”。 | - 在 OpenClaw 聊天界面中,发送指令:“请在 Ubuntu 开发机上执行 `ls -la /home`”。 | ||
- 如果配置正确,AI 会调用远程节点执行命令并返回结果。 | - 如果配置正确,AI 会调用远程节点执行命令并返回结果。 | ||
--- | --- | ||
## 💡 重要提示与排错 | |||
| 问题 | 解决方法 | | | 问题 | 解决方法 | | ||
|------|----------| | |------|----------| | ||
| 虚拟机无法访问外网 | 检查 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 参数。 | | ||