📖 前言

在 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 记住你身份的关键

写入内容最好让常用的模型直接输出你的用户画像提示词


六、 经验总结

  1. 先 JSON 后启动:建议先在宿主机写好 openclaw.json 再启动容器,避免 UI 保存失败。

  2. IP 固定:使用 Compose 分配固定 IP 后,内网访问面板更稳定。

  3. 备份:完成配置后,执行 cp openclaw.json openclaw.json.bak 是个好习惯。