📖 前言
在 HomeLab 环境下,使用 Docker Compose 部署服务能极大提升配置的可维护性。
本文记录如何在 Unraid 上通过 Compose 部署 OpenClaw,实现 Gemini 2.5 Pro 模型对接到 QQ 和 Telegram。
一、 部署架构与环境
宿主机:Unraid
网络模式:外部网络 (eth0),固定 IP
192.168.1.29存储路径:
/mnt/zfs/docker/OpenClaw/data:核心配置文件/mnt/zfs/docker/OpenClaw/workspace:运行工作区
插件安装:确保你的 Unraid 已经从
Community Applications安装了 Docker Compose Manager。核心配置文件:预先创建好
openclaw.json并粘贴以下核心结构,防止 UI 自动生成乱码。
二、 核心部署:Docker Compose
1. 创建 Stack
进入 Unraid 的 Docker 页面,滑到底部找到 Compose 区域。
点击 Add New Stack,命名为
OpenClaw。
2. 编辑 Compose 文件
点击右侧的 Edit Stack,在弹出的编辑器中填入以下内容:
YAML
services:
openclaw-gateway:
image: ghcr.io/openclaw/openclaw:latest
container_name: OpenClaw
user: "0:0"
init: true
restart: unless-stopped
environment:
- HOME=/home/node
- TZ=Asia/Shanghai
- OPENCLAW_CONFIG_PATH=/home/node/.openclaw/openclaw.json
- OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1
- OPENCLAW_GATEWAY_BIND=lan
- OPENCLAW_GATEWAY_PORT=18789
volumes:
- /mnt/zfs/docker/OpenClaw/data:/home/node/.openclaw # 核心配置存储
- /mnt/zfs/docker/OpenClaw/workspace:/home/node/.openclaw/workspace
- /etc/localtime:/etc/localtime:ro
networks:
eth0:
ipv4_address: 192.168.1.29 # 根据你的网络环境设置固定 IP
command: ["node", "dist/index.js", "gateway", "--allow-unconfigured"]
networks:
eth0:
external: true
3. 保存并启动
点击 Save,然后点击 Up 启动容器。
三、 关键:配置 AI 模型 (Gemini-Cluster)
在 Unraid 的 Compose 模式下,网页端 UI 修改往往不能即时同步或保存失效,建议直接通过终端或 SMB 修改 /mnt/zfs/docker/OpenClaw/data/openclaw.json。
这是让机器人能说话的核心步骤。建议通过终端直接编辑 /mnt/zfs/docker/OpenClaw/data/openclaw.json,在 models 节点下配置你的中转地址和模型。
JSON
{
"models": {
"providers": {
"Gemini-Cluster": {
"baseUrl": "你的中转 API 地址", // 你的中转 API 地址
"apiKey": "sk-your-key-here", // 你的 API 密钥
"auth": "api-key",
"api": "openai-responses",
"authHeader": true,
"models": [
{
"id": "gemini-2.5-pro",
"name": "gemini-2.5-pro",
"api": "openai-responses",
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
}
}
}
配置要点:
baseUrl:如果你使用中转,请务必带上
/v1。contextWindow:Gemini 2.5 Pro 拥有超长上下文,建议设为
1000000以发挥其优势。
四、 渠道接入 (QQ & Telegram)
1. Telegram (注意 accounts 嵌套)
由于新版本采用了多账户逻辑,必须在 accounts 下配置,否则不会生效:
JSON
"telegram": {
"enabled": true,
"accounts": {
"openclawbot": {
"botToken": "你的TOKEN",
"allowFrom": [ XXXXXXX ], // 你的 TG 用户 ID
"groupPolicy": "allowlist"
}
}
}
2. QQ 机器人
建议同时保留 appId 和 clientSecret 字段以确保插件兼容性:
JSON
"qqbot": {
"enabled": true,
"appId": "你的机器人ID",
"clientSecret": "你的SECRET",
"allowFrom": ["*"]
}
五、 进阶调教:赋予 AI “主人意识”
模型配置完成后,在 OpenClaw 网页端进入 Nodes 页面,编辑 Gemini-Cluster 的 System Prompt。当然,也可以让机器人直接写入,这是让 AI 记住你身份的关键
写入内容最好让常用的模型直接输出你的用户画像提示词
六、 经验总结
先 JSON 后启动:建议先在宿主机写好
openclaw.json再启动容器,避免 UI 保存失败。IP 固定:使用 Compose 分配固定 IP 后,内网访问面板更稳定。
备份:完成配置后,执行
cp openclaw.json openclaw.json.bak是个好习惯。