本文记录了从源码到 Docker 容器化部署 OpenClaw 的完整流程,包括编译打包、迁移到其他机器以及访问配置。

首先,从官方仓库克隆 OpenClaw 源码:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
在源码目录下,执行 docker-setup.sh 脚本完成编译和打包:
./docker-setup.sh
执行后会完成以下操作:
dist/ 目录可以通过以下命令检查是否成功:
docker images | grep openclaw
或者在容器内运行:
docker run --rm openclaw:local node dist/index.js --version
如果输出版本号,即表示编译完成。
使用 docker-compose 启动 OpenClaw 网关和 CLI:
docker-compose up -d
启动后,网关默认监听 18789 端口。
docker-compose exec openclaw-cli openclaw dashboard --no-open
输出类似:
Dashboard URL: http://127.0.0.1:18789/#token=<your-token>
openclaw.json 中配置:"gateway": {
"controlUi": {
"allowInsecureAuth": true
}
}
注意:此方式仅限使用 Token 登录,且存在安全风险,请仅在可信网络中使用。
迁移时,除了 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/openclaw
docker-compose up -d
这样可以保证原有的 Token、Workspace 和插件配置完整迁移。
control ui requires device identity。openclaw.json 中添加: "gateway": {http://localhost 或 127.0.0.1。gateway.controlUi.allowedOrigins 包含你的浏览器访问地址。例如: "gateway": {unauthorized: too many failed authentication attempts,需等待或重新生成 Token。allowInsecureAuth(存在安全风险)。