OpenClaw Docker 部署实战:从零到 QQ 机器人完整指南

2026年7月8日 server 17 分钟阅读 2 次阅读
📖 文章摘要

从零开始在 Ubuntu 服务器上通过 Docker 部署 OpenClaw,配置 Nginx 反代 + Let's Encrypt SSL + QQ Bot,附完整踩坑记录。 ---

一、环境准备

服务器要求

项目 要求
操作系统 Ubuntu 20.04 / 22.04 / 24.04
CPU 1 核以上
内存 建议 2GB+
磁盘 至少 10GB 可用空间
网络 公网 IP,开放 80/443 端口

实际资源占用参考(2核4G 服务器):

  • OpenClaw 容器:约 200-400MB 内存,CPU 占用 <1%
  • Nginx:约 10MB 内存
  • 系统总计:约 800MB / 3.8GB(21%),剩余充足

连接服务器

ssh ubuntu@<服务器IP> -p <SSH端口>

二、安装 Docker

# 1. 更新系统包
sudo apt update && sudo apt upgrade -y

# 2. 安装依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 3. 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 4. 添加 Docker APT 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 6. 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 7. 重新登录使组权限生效
exit

验证安装:

docker --version
docker run hello-world

三、部署 OpenClaw

1. 创建项目目录

mkdir -p ~/openclaw/config ~/openclaw/workspace

2. 生成认证 Token

openssl rand -hex 32

输出示例(保存好,后续访问需要用到):

a1b2c3d4e5f6...(64位十六进制字符串)

3. 创建配置文件

nano ~/openclaw/config/openclaw.json

写入以下内容:

{
  "agents": {
    "defaults": {
      "workspace": "/home/node/.openclaw/workspace"
    }
  },
  "gateway": {
    "mode": "local",
    "auth": {
      "mode": "token",
      "token": "<你的Token>"
    },
    "controlUi": {
      "allowedOrigins": ["*"],
      "allowInsecureAuth": true
    }
  }
}

⚠️ 最新版本已不支持 auth.mode: "none",必须使用 Token 认证。

4. 启动容器

docker run -d \
  --name openclaw \
  -p 18789:18789 \
  --memory 1g \
  --memory-swap 1g \
  -v ~/openclaw/config:/home/node/.openclaw \
  -v ~/openclaw/workspace:/home/node/.openclaw/workspace \
  --restart unless-stopped \
  openclaw/openclaw:latest \
  openclaw gateway

参数说明:

  • --memory 1g:内存上限 1GB,防止内存泄漏拖垮服务器
  • -v ~/openclaw/config:/home/node/.openclaw:挂载配置目录
  • -v ~/openclaw/workspace:/home/node/.openclaw/workspace:挂载工作空间(记忆、身份信息持久化)

5. 验证启动

docker ps | grep openclaw
docker logs openclaw --tail 10

预期看到 [gateway] ready[heartbeat] started


四、配置 Nginx 反代 + SSL 证书

背景

浏览器从 2024 年起强制要求 WebSocket 必须在 HTTPS 下建立。直接用 HTTP 访问会被阻止 WebSocket 连接。

1. DNS 解析

在域名管理面板添加 A 记录:

记录类型 主机记录 记录值
A claw <服务器IP>

验证:

nslookup claw.<你的域名>

2. 申请 Let's Encrypt 免费证书

sudo certbot certonly --nginx -d claw.<你的域名> \
  --non-interactive --agree-tos --email <你的邮箱>

3. 创建 Nginx 配置

sudo tee /etc/nginx/conf.d/claw.conf > /dev/null << 'EOF'
server {
    listen 443 ssl;
    server_name claw.<你的域名>;

    ssl_certificate /etc/letsencrypt/live/claw.<你的域名>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/claw.<你的域名>/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://127.0.0.1:18789;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 86400;
    }
}

server {
    if ($host = claw.<你的域名>) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name claw.<你的域名>;
    return 404;
}
EOF

4. 测试并重载

sudo nginx -t
sudo systemctl reload nginx

5. 开放防火墙

sudo ufw allow 80
sudo ufw allow 443

⚠️ 云服务器还需在安全组中放行 80 和 443 端口。

6. 验证访问

curl -sk -o /dev/null -w "HTTP %{http_code}" https://claw.<你的域名>/

返回 HTTP 200 即成功。


五、首次访问:设备配对

首次通过 HTTPS 访问时,浏览器会提示"设备配对"。

在服务器上执行:

# 从页面提示或服务器日志中获取 requestId
docker logs openclaw --tail 20 2>&1 | grep 'requestId'

# 批准请求
docker exec openclaw openclaw devices approve <requestId>

批准后刷新浏览器即可。

每个新浏览器/新设备首次访问都需要批准一次。


六、配置 AI 模型

以 xiaomimimo 为例

修改 ~/openclaw/config/openclaw.json,在根级别添加 models 字段:

{
  "models": {
    "mode": "merge",
    "providers": {
      "xiaomimimo": {
        "baseUrl": "https://api.xiaomimimo.com/v1",
        "apiKey": "<你的API Key>",
        "api": "openai-completions",
        "models": [
          {
            "id": "mimo-v2.5",
            "name": "MiMo v2.5",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 1000000,
            "maxTokens": 32000
          }
        ]
      }
    }
  }
}

字段说明:

  • api:API 协议类型,可选 openai-completionsanthropic-messagesgoogle-generative-aiollama
  • contextWindow:上下文窗口大小(token 数)
  • idname 都是必填字段

重启并设置为默认模型:

docker restart openclaw
sleep 10
docker exec openclaw openclaw models set xiaomimimo/mimo-v2.5

验证:

docker exec openclaw openclaw models list

七、配置 QQ Bot(可选)

1. 前置条件

  • QQ 开放平台 注册并创建机器人应用
  • 获取 AppIDAppSecret
  • 在沙箱配置中添加测试成员

2. 安装插件

docker exec openclaw openclaw plugins install @tencent-connect/openclaw-qqbot@latest

3. 添加通道

docker exec openclaw openclaw channels add --channel qqbot --token "<AppID>:<AppSecret>"

4. 重启并验证

docker restart openclaw
sleep 10
docker exec openclaw openclaw channels status --channel qqbot

预期输出:connected

5. 禁用内置冲突插件

docker exec openclaw openclaw plugins disable qqbot
docker restart openclaw

八、访问地址

https://claw.<你的域名>#token=<你的Token>

使用 #token= 而非 ?token=,Token 不会被发送到服务器,更安全。


九、踩坑清单

1. 容器启动失败:配置格式错误

现象: 日志显示 Invalid config

解决: 恢复备份 cp config.json.bak config.json && docker restart openclaw

2. 502 Bad Gateway

现象: HTTPS 能连但返回 502

解决: 容器可能还在启动中,等 10 秒再试。检查 docker ps 确认容器状态。

3. OpenAI 在香港不可用

现象: 403 Forbidden: Country, region, or territory not supported

解决: 香港服务器无法直接使用 OpenAI,需配置其他模型(xiaomimimo、DeepSeek 等)。

4. WorkspaceVanishedError

现象: QQ Bot 收到消息但不回复

解决: 删除 attestation 文件:

docker exec openclaw rm -rf /home/node/.openclaw/workspace-attestations
docker restart openclaw

5. 多个 QQ Bot 插件冲突

现象: 日志出现 plugin skill name collision

解决: 禁用内置插件:docker exec openclaw openclaw plugins disable qqbot

6. 模型配置导致容器崩溃

现象: models.providers.xxx.models.0.name: Invalid input

解决: 模型配置中 idname 都是必填字段。

7. 手机 QQ 内置浏览器无法登录

现象: 域名能访问但登不了

解决: QQ 内置浏览器被识别为新设备,需要在服务器上批准设备配对。建议用 Chrome/Safari 访问。


十、常用命令速查

用途 命令
查看容器状态 docker ps
查看日志 docker logs openclaw --tail 20
重启容器 docker restart openclaw
测试 Nginx sudo nginx -t
重载 Nginx sudo systemctl reload nginx
查看证书 sudo certbot certificates
查看模型 docker exec openclaw openclaw models list
查看通道 docker exec openclaw openclaw channels status
批准设备 docker exec openclaw openclaw devices approve <requestId>

十一、卸载清理

# 停止并删除容器
docker stop openclaw && docker rm openclaw

# 删除镜像
docker rmi openclaw/openclaw:latest

# 删除项目目录
rm -rf ~/openclaw

# 删除 Nginx 配置
sudo rm /etc/nginx/conf.d/claw.conf
sudo nginx -t && sudo systemctl reload nginx

# 删除 SSL 证书(可选)
sudo certbot delete --cert-name claw.<你的域名>

总结

阶段 关键步骤 注意事项
Docker 安装 官方源安装 务必重启加载新内核
OpenClaw 配置 Token 认证 + 模型配置 idname 都必填
容器启动 挂载 config + workspace --memory 1g 限制
Nginx 反代 443 → 18789 WebSocket 必需 Upgrade 头
SSL 证书 Let's Encrypt 免费 DNS 先解析成功
防火墙 ufw + 云安全组 两边都要放行
设备配对 首次访问手动批准 换浏览器需重新批准
QQ Bot 安装官方插件 禁用内置冲突插件
最后更新:2026年7月9日CC BY-NC-SA 4.0

评论

暂无评论,来写第一条吧

© 2026 My Blog. Built with Nuxt.js + FastAPI.