本文记录了从源码到 Docker 容器化部署 OpenClaw 的完整流程,包括编译打包、迁移到其他机器以及访问配置。
1. 克隆源码
首先,从官方仓库克隆 OpenClaw 源码:
git clone https://github.com/openclaw/openclaw.gitcd openclaw
2. 编译与打包(执行 docker-setup.sh 脚本)
在源码目录下,执行 docker-setup.sh 脚本完成编译和打包:
./docker-setup.sh
执行后会完成以下操作:
- 安装依赖(npm / pnpm)
- 将 TypeScript 源码编译为 JavaScript,并生成
dist/目录 - 构建 Docker 镜像,包含已经编译好的 OpenClaw
可以通过以下命令检查是否成功:
docker images | grep openclaw
或者在容器内运行:
docker run --rm openclaw:local node dist/index.js --version
如果输出版本号,即表示编译完成。
3. 启动 Docker 容器
使用 docker-compose 启动 OpenClaw 网关和 CLI:
docker-compose up -d
启动后,网关默认监听 18789 端口。
4. 配置 Token 并访问 Control UI
-
进入容器生成 Dashboard Token:
docker-compose exec openclaw-cli openclaw dashboard --no-open
输出类似:
Dashboard URL: http://127.0.0.1:18789/#token=<your-token>
-
拷贝 URL 到浏览器,使用 Token 登录 Control UI。
-
若需要多设备访问,可在
openclaw.json中配置:"gateway": { "controlUi": { "allowInsecureAuth": true }}
注意:此方式仅限使用 Token 登录,且存在安全风险,请仅在可信网络中使用。
5. 迁移到其他机器
迁移时,除了 Docker 镜像,还需要迁移 配置和环境文件:
-
保存 Docker 镜像:
docker save openclaw:local -o openclaw.tar
-
在目标机器加载镜像:
docker load -i openclaw.tar
-
迁移配置文件和环境变量:
拷贝 docker-compose.yml 和 .env 文件scp docker-compose.yml .env user@target:/home/user/openclaw/# 拷贝 OpenClaw 配置目录scp -r /root/.openclaw user@target:/root/
-
在目标机器启动容器:
cd /home/user/openclawdocker-compose up -d
这样可以保证原有的 Token、Workspace 和插件配置完整迁移。
6. 注意事项
- HTTPS / 设备身份
- 默认 Control UI 需要 设备身份,否则浏览器会报错
control ui requires device identity。 - 在公网访问或多设备访问时,推荐使用 HTTPS(可用自签名证书或 Tailscale Serve)保护 Token。
- 若必须使用 HTTP,可在
openclaw.json中添加: "gateway": {
"controlUi": {
"allowInsecureAuth": true
}
} 仅支持 Token 登录,安全性降低。
- 默认 Control UI 需要 设备身份,否则浏览器会报错
- 跨域访问
- 默认 Control UI 允许
http://localhost或127.0.0.1。 - 若从其他主机访问,确保
gateway.controlUi.allowedOrigins包含你的浏览器访问地址。例如: "gateway": {
"controlUi": {
"allowedOrigins": ["http://172.244.44.35:18789"\]
}
}
- 默认 Control UI 允许
- 设备授权
- 当多台设备访问时,可能需要 配对批准: openclaw devices list
openclaw devices approve - 配对失败或 Token 登录过多次失败,会出现
unauthorized: too many failed authentication attempts,需等待或重新生成 Token。
- 当多台设备访问时,可能需要 配对批准: openclaw devices list
- Token 多设备使用
- 默认同一个 Token 仅允许单设备登录。
- 若需要多人访问,可考虑为每个用户生成独立 Token 或配置
allowInsecureAuth(存在安全风险)。