这阵子看到大家都在玩龙虾,虽然官方也提供了文档,大部分公众号的 Docker 参差不齐,实际部署下来也遇到了很多坑。正好最近有吃土的 VPS,重装了最新的 Debian 13,虽然各大面板(BT、1Panel 等)均提供了一键部署,但我觉得要长期用还得按自己的需求来。


1. 部署

首先需要确定使用方式,这决定了你用什么方式部署。先通过 README.md 整体了解一下这个项目。

通过阅读文档,我们知道 OpenClaw 可以跑在本地宿主机、虚拟机、云服务器等载体上。如何和它对话呢?它支持非常多的渠道,我选择了 Telegram

因为小龙虾的能力上限取决于模型能力,所以毋庸置疑,直接选择当前的顶级模型:Claude 或者 GPT。

结论:最佳配置方案 = 海外 VPS + Telegram + 顶级模型

640-Peun

💡 建议先花点时间阅读一下部署文档再动手,以减少后续不必要的麻烦。

1.1 手动在云服务器上部署

git clone https://github.com/openclaw/openclaw.git
cd openclaw
./docker-setup.sh

运行脚本后,会在宿主机上创建两个重要文件夹,它们会被挂载到 Docker 容器中:

目录

说明

~/.openclaw

配置目录 — 存储 OpenClaw 的记忆、配置文件、第三方 API 密钥等

~/openclaw/workspace

工作空间目录 — Agent 可直接访问的文件目录,Agent 创建的文件也会保存在这里

1.2 Docker 启动

OpenClaw 后会自动打开配置引导:

640-Qgzf
  1. 先选择 Skip for now 跳过

640-kRHC
  1. 消息渠道想用 Telegram,需要先做两件事:

    • 在 Telegram 中搜索 @userinfobot,获取自己账号的用户 ID

    • 搜索 @BotFather,创建机器人:

      • 先创建机器人名(昵称)

      • 再创建机器人用户名

      • 创建好后会给你一个 Bot API Token,记住这个 Token

  2. 等到 Telegram (Bot API) 这里的时候,填上一步获取的 Bot API Token

    640-TzRD
  3. 一路跳过,hooks 这里选择:session-memory

  4. 等出现 Token 提示,说明配置完成:

Token: 24b38f4bb1401bd949f5a2cc156e99bad6591847919f3ce0ab4cab02d69e037e

大功告成。浏览器访问 http://公网IP:18789,但是这里最好用域名来访问(后面 5.2 有说明)。


2. 消息通知渠道

在服务器上执行配对命令:

# 宿主机直接执行
openclaw pairing approve telegram YKEY9974

# Docker 版执行方式
docker compose run --rm openclaw-cli pairing approve telegram YKEY9974

注意:

  • 配对码默认 1 小时过期

  • 每个渠道待处理请求默认上限 3 个

  • 执行命令的时候如果过期,日志会提示:

[openclaw] Failed to start CLI: Error: No pending pairing request found for code: 8AGF3F58

这个需要重新在 Telegram 发送机器人 /start 获取新配对码。

640-zCZR

配对成功:

640-xdQi

3. 模型选择

这里很多人都会纠结,我对比了很多家。只需要从两个角度来考虑:

按任务复杂度

任务类型

推荐模型

编程、金融、数据分析等复杂任务

Claude Opus 4.6、GPT 5.2 Pro

整理文件资料、P 图、写作等日常任务

Kimi 2.5、GLM 5.0、MiniMax-M2.5

按使用频次

使用频率

推荐方案

高频使用

开通模型包月/包年套餐,GLM5 优先推荐,能力基本上能和 Opus 4.5 打平

低频使用

推荐企业级 API 按量付费,稳定且便宜,如 Atlas Cloud、接口 AI


4. Skills & MCP

Skills 推荐去 ClawHub 社区 下载,注册个账号,可以获取 API 密钥让小龙虾自己去安装。

推荐 Skills:

  • find-skills

  • Agent Browser DevTools

  • MCP auto-updater

  • Openclaw Command Center

  • self-improving-agent

  • MCP

640-Htrp

💡 因为我用的是智谱的模型,所以可以用这几个专属的 MCP,应该比第三方 MCP 的效果要好。先装上再说,不好用到时候再换就行。


5. 踩坑点

5.1 权限问题:EACCES permission denied

现象:

./docker-setup.sh 启动镜像之后,出现报错:

Error: EACCES: permission denied, open '/home/node/.openclaw/openclaw.json.7.xxx.tmp'

原因:

Docker 权限不够 — 容器用户(uid=1000)试图写入 root(或其他用户)拥有的目录。

解决方案:

chown -R 1000:1000 "$HOME/.openclaw"

修改完权限后可以直接执行以下命令重新完成初始化向导:

docker compose run --rm openclaw-cli onboard

5.2 浏览器访问 http://公网IP:18789 的安全问题

现象:

页面报错:

disconnected (1008): control ui requires HTTPS or localhost (secure context)
This page is HTTP, so the browser blocks device identity.
Use HTTPS (Tailscale Serve) or open http://127.0.0.1:18789 on the gateway host.
If you must stay on HTTP, set gateway.controlUi.allowInsecureAuth: true (token-only).

相关文档:

解决方案:

开启 HTTPS,需要到服务器上去创建一个反向代理站点。这里我直接使用 Caddy 来管理多个子域名,详细过程自行搜索。

最后可以使用域名来访问小龙虾。


5.3 Docker 用户部署遇到的问题

5.3.1 disconnected (1008): pairing required

原因:

控制 UI 第一次从"新浏览器/新设备"连到 Gateway 时,需要做一次性"设备配对批准"(即使同一台机器、同一个 Tailnet 也可能需要)。

openclaw devices list
openclaw devices approve <requestId>

如果上面的解决不了,参考以下四步排查:

Step 1 — 修复容器网络

CLI 容器无法访问 127.0.0.1 的网关,因为容器内部的 localhost 指向自己。在 docker-compose.yml 中添加:

openclaw-cli:
  depends_on:
    - openclaw-gateway
  environment:
    OPENCLAW_GATEWAY_URL: ws://openclaw-gateway:18789

Step 2 — 设置 Gateway 绑定到局域网

内置向导默认使用回环地址,但浏览器请求是通过 Docker 的桥接网络(172.18.0.x)到达的。在 ~/.openclaw/openclaw.json 中:

"gateway": {
  "bind": "lan"
}

Step 3 — 同步 Gateway Token

docker-setup.sh.env 文件中生成一个令牌,但引导向导会将不同的令牌写入 openclaw.json。请确保 ~/.openclaw/openclaw.json 中的 gateway.auth.token.env 文件中的 OPENCLAW_GATEWAY_TOKEN 匹配。

Step 4 — 批准待匹配设备

设备卡在待处理状态,因为 CLI 无法连接到网关来批准它们:

# 选项 A — 在网关容器内直接运行
docker compose exec openclaw-gateway node dist/index.js devices list
docker compose exec openclaw-gateway node dist/index.js devices approve <request-id>

# 选项 B — 手动将条目从 pending.json 移至 paired.json
# ~/.openclaw/devices/pending.json → ~/.openclaw/devices/paired.json
# 将 pending.json 清空为 {},然后重启网关