本文动笔前已对照 OpenClaw 官方文档(Docker、安装器、网关安全)核对命令与端口;面向要落地 OpenClaw 安装教程、Docker 部署、反向代理与 生产环境加固 的工程师,以及希望在 远程 Mac 上稳定跑 Agent/批处理脚本的 MacCompute 类用户。站内:首页、手记与指南索引、帮助文档。
2026 年 OpenClaw 部署背景与典型使用场景
OpenClaw 将「网关 + CLI + 控制界面」绑在一起:你要么在本机走最快迭代(官方建议日常开发用常规安装),要么在 VPS/团队服务器上用 Docker 换隔离与可复现。常见场景包括:内网或零信任网络中的助手网关、与 IM/工单联动的自动化、以及把长耗时任务放到常驻主机(配合下文远程 Mac)。本文是教程型步骤文,不是概念水文;版本细节以仓库与文档更新为准。
环境与前置检查清单(可勾选)
在跑任何脚本前逐项打勾,能避开九成「装完连不上」问题。
- Docker:Docker Desktop 或 Docker Engine + Compose v2 可用(docker compose version)。
- 内存与磁盘:本地构建镜像官方写明至少约 2GB RAM(否则 pnpm install 易出现 exit 137);预留镜像、日志与 workspace 空间。
- 全局 CLI 路径:若不走 Docker,需 Node 24(或文档列出的 22 LTS 兼容版本)与 Git;安装入口为 openclaw.ai 提供的 install.sh / install-cli.sh。
- 公网暴露前:读完官方「网络暴露 / 绑定 / 防火墙」章节再改绑定或开防火墙口;Linux VPS 上跑 Docker 时按文档核对 DOCKER-USER 与宿主机防火墙,避免发布端口或转发规则与预期不一致。
- 域名与证书:若要做 HTTPS 反代,准备好域名解析与 ACME(Caddy)或 certbot(Nginx)流程。
可复现安装路径:全局 CLI 与 Docker / docker-setup 对比
两条路径可并存于不同环境:开发机 CLI、生产机 Compose。
| 维度 | 全局 CLI(install.sh / install-cli.sh) | Docker(仓库根 ./docker-setup.sh) |
|---|---|---|
| 适用 | 本机最快迭代、日常开发 | VPS 隔离、可重复交付、无本地 Node 污染 |
| 入口命令(示例) | curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash | 克隆官方仓库后 ./docker-setup.sh;可选 export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" 跳本地构建 |
| 控制界面 | 按本机网关配置访问(Docker 文档默认示例为 http://127.0.0.1:18789/) | 同上;Token 写入 .env,在 Control UI Settings 粘贴 |
| 自动化/CI | --no-onboard 等非交互参数 | docker compose run -T --rm openclaw-cli … 去掉伪 TTY |
最小 Docker 复现命令(摘自官方流程):
git clone https://github.com/openclaw/openclaw.git && cd openclaw
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" # 可选:跳过本地 build
./docker-setup.sh
完成后浏览器打开 http://127.0.0.1:18789/ 完成 Token 配置。需要再次打印 Dashboard 链接时:docker compose run --rm openclaw-cli dashboard --no-open。
最小安全配置:监听地址、Token、沙箱与出站
绑定模式:官方强调在配置里使用 gateway.bind 的模式值(lan / loopback / custom / tailnet / auto),而不是把 0.0.0.0 或 localhost 当作绑定别名。Docker 场景下环境变量 OPENCLAW_GATEWAY_BIND 默认 lan,以便宿主机访问发布端口;若改为 loopback,仅容器网络命名空间内直连可靠,宿主机访问发布端口可能失败。
Token 与设备配对:网关 Token 应视为机密;出现 unauthorized 或 WebSocket pairing required 时,用 CLI 拉新链接并按 devices approve 流程批准浏览器。
沙箱(可选):执行 export OPENCLAW_SANDBOX=1 && ./docker-setup.sh 可为 Docker 网关引导沙箱;Agent 沙箱默认 docker.network 为 none(无出站),需要外网时再显式评估风险后放开。公网 VPS 务必阅读官方「Security hardening for network exposure」并处理防火墙与 Docker 链(文档提到 DOCKER-USER 等策略)。
探活(可复制):
curl -fsS http://127.0.0.1:18789/healthz
curl -fsS http://127.0.0.1:18789/readyz
Nginx / Caddy 反向代理与 HTTPS 落地步骤
生产环境建议只把 443 暴露给公网,网关仍监听本机 127.0.0.1:18789(或同机 bridge),由反代终结 TLS 并转发 WebSocket。
Nginx(片段思路): proxy_pass http://127.0.0.1:18789;,并设置 Upgrade / Connection 头以支持 WS;证书用 Let’s Encrypt。具体 server_name 与证书路径按你的发行版文档填写。
Caddy(极简示例):
claw.example.com {
reverse_proxy 127.0.0.1:18789
}
上线后仍应用 WAF/速率限制、仅允许公司 IP 或 Tailscale 入口,并轮换网关 Token。
问题排查矩阵:常见报错与对策
| 现象 | 优先检查 | 建议动作 |
|---|---|---|
| 构建 exit 137 | 内存、Swap | 加大构建机内存或改用 OPENCLAW_IMAGE 拉官方镜像 |
| 宿主机打不开 18789 | OPENCLAW_GATEWAY_BIND / loopback | Docker 下尝试 lan;按文档用 openclaw-cli config set gateway.bind lan 等修正 |
| CLI 显示 172.x 网关 / 反复 pairing | gateway.mode / bind | 文档示例:config set gateway.mode local、config set gateway.bind lan |
| EACCES 挂载目录 | 容器内 uid 1000 | Linux 宿主机对 bind mount 执行 chown -R 1000:1000(官方示例) |
| 沙箱工具无网络 | 默认 network none | 确认是否故意禁用出站;若业务需要外网,按文档调整并评估暴露面 |
| 健康检查失败 | 容器日志、通道断连 | 看 /healthz vs /readyz;readyz 可能在通道未就绪时返回 503 |
业务实例:在远程 Mac 上串联构建 / 脚本 / 通知
把 OpenClaw 网关或「仅 CLI + 定时任务」放在 7×24 远程 Mac 上,可避免笔记本合盖断连。示例流程(预期:推送一次触发后,远端完成构建日志落盘并发企业微信/Slack Webhook):
- 通过 SSH 登录远程 Mac(密钥与 known_hosts 固化,参见 SSH/VNC 清单)。
- 安装 Docker Desktop 或 colima,拉仓库执行 ./docker-setup.sh,确认 healthz 返回 200。
- 用 launchd 或常驻 shell 包装 docker compose up -d,开机自启网关。
- 工作目录放在持久卷或主机 bind(如 OPENCLAW_EXTRA_MOUNTS),Agent 脚本写入 ./artifacts。
- 在 Agent 流程末步调用 curl Webhook,或在仓库侧 CI 只负责「投递任务」,Mac 侧消费队列。
预期结果:网关进程由 Docker 健康检查守护;任务日志与产物在挂载目录可追溯;公网侧仅暴露反代 443 时攻击面可控。
FAQ 与排错清单
- 能否不用 Docker 只跑沙箱?
- 官方说明:Agent 沙箱可用 Docker,但不要求整个网关必须跑在 Docker 里。
- openclaw-cli 与 gateway 同 compose 网络安全吗?
- 文档将其视为共享信任边界;需要更强隔离时从独立主机/容器网络调用 CLI。
- 上线前最后 3 查?
- Token 轮换、反代仅本机回源、防火墙默认拒绝;然后跑一遍 gateway probe 与业务冒烟脚本。
需要节点与网络说明可继续看站内文章《跨区域远程 Mac 选型》;SSH 首次连接见《SSH/VNC 清单》。