Linux下用Docker安全部署OpenClaw
本文是我在 Linux 系统下,使用 Docker 方式安装和配置 OpenClaw 的实践记录,这样既不影响当前工作环境,又避免了误操作和数据泄露的风险。相对宿主机安装,Docker安装操作在浏览器时会稍微麻烦一点(使用CDP协议),但不用买新机器,又能保证数据安全,还挺重要的。
文中详细列出了从环境准备、安装步骤到实际使用中遇到的关键问题(如用户权限、服务配对和网络连接)及其解决方案,旨在为有类似需求的开发者提供一份可直接参考的避坑指南。
1 项目资源
- 官方网站:https://clawd.bot/
- 代码仓库: https://github.com/openclaw/openclaw (注:项目曾用名 Moltbot)
2 项目概况
OpenClaw 是一个以 TypeScript 为主的大型项目,代码量超过 50 万行。其运行环境要求 Node.js ≥ 22,同时官方也提供了 Docker 安装方式,便于部署。
项目配置主要涉及两个文件:
- 源码目录中的
.env文件,用于设置环境变量。 - 根据用户配置生成的
$HOME/.openclaw/openclaw.json文件。
3 模型选择与成本
如果主要目的是测试 OpenClaw 的功能,在模型成本上有一个高性价比的选择:Kimi 2.5。
获取试用与 Token:
- 访问 Kimi Code (https://www.kimi.com/code) 可开通 4.99 元/7 天 的试用。请注意,此试用为自动续费,若后续不需使用,请务必在微信支付管理中及时关闭。
- 开通后,可在控制台 (https://www.kimi.com/code/console) 查看用量并获取 API Token。
4 Docker 安装指南
官方 Docker 安装文档:https://github.com/openclaw/openclaw/blob/main/docs/install/docker.md
4.1 获取与构建代码
项目迭代迅速,建议拉取最新代码。生产环境建议切换到稳定版本。以下以获取 v2026.2.2
版本为例。
1 | git clone https://github.com/openclaw/openclaw |
可以手动调整 DockerBuild时可加几个参数: -
OPENCLAW_INSTALL_BROWSER=1
作用:构建时安装 Chromium 和 Xvfb,还会把 Playwright
的浏览器依赖装好,形如:--build-arg OPENCLAW_INSTALL_BROWSER=1
- OPENCLAW_DOCKER_APT_PACKAGES="python3 wget …"
作用:构建时顺手把你要的系统包一起装进去,运行时默认用户确实是 node,Dockerfile
最后明确切到了非 root
用户运行,也就是 USER node。聊天过程中基本不能安装系统级命令行工具,如果需要什么工具,可以在这里指定。至少python3-pip python3-venv
在我使用的版本里没有,并且是肯定需要的
安装脚本说明:
- 如果因网络问题导致下载缓慢或失败,可在docker
build构建镜像时,通过
--build-arg参数指定代理,形如:--build-arg HTTP_PROXY=http://192.168.10.168:12346 --build-arg HTTPS_PROXY=http://192.168.10.168:12346 - 该脚本会先执行
docker build构建镜像(构建后约 3.22GB,包含浏览器的 4.13G),这里本身带基本的python和Node.js环境。 - 随后进入交互式引导配置,选择:Manual->Local gateway->Moonshot AI->Kimi Coding API key->Keep current->Gateway bind: 0.0.0.0->Token,其余非必要步骤均可跳过以简化流程。
- 设置中如果提示的 Workspace directory 指镜像内的目录,一般不改,是容器中用户数据存储的目录,建议不改动。
- 默认的登录用户是node,没有系统权限,安装工具不太方便,但有些 node.js 工具可以安装当前用户下面。后面还是要把安装位置映射出来,以免重打镜像后都要重新安装
提示:如果安装引导过程卡住,可按 Ctrl+C 中断。随后检查 $HOME/.openclaw/ 目录下的配置文件openclaw.json是否已正确生成。若文件正常,可直接手动启动服务:
1 | docker compose up -d openclaw-gateway |
如果一开始没有登录,后面也可以运行后再登录 1
openclaw models auth login --provider github-copilot
4.2 访问管理面板
安装并启动成功后,即可通过浏览器访问 OpenClaw 的管理面板。
- 访问地址:
http://localhost:18789?token=<你的Token> - Token
获取:安装过程中
docker-setup.sh脚本会显示用于认证的 Token(有的版本token是自己输入的),请妥善保存。
正常打开网页后,就可以在此和 openclaw 聊天了。
5 常见问题与解决方案
5.1 登录错误提示1
在web登录时提示:
origin not allowed (open the Control UI from the gateway host or allow it in gateway.controlUi.allowedOrigins)
在非本机的环境下安装常会遇到这个问题,把访问它的网址加入就行,比如“http://192.168.10.168:18789”
按提示修改$HOME/.openclaw/openclaw.json中的allowedOrigins。
改完后重启容器docker restart openclaw-openclaw-gateway-1
5.2 登录错误提示2
在web登录时提示:
control ui requires device identity (use HTTPS or localhost secure context)
出于安全因素,用 http://局域网IP:端口,通常不满足。
临时解决方案是修改 $HOME/.openclaw/openclaw.json 中的
controlUi 部分,加入:
1 | "dangerouslyDisableDeviceAuth": true |
但这样不安全,不建议这么做。
5.3 登录错误提示3
浏览器访问提示 “Pairing Required”
原因:这个设备当时在待审批列表里,还没批准,所以即使 token 对了,也会被拒绝。
解决方法:
1 | cd /exports/git/openclaw |
5.4 用户 ID 不一致导致的权限问题
问题描述:在已存在常规用户(如 linux,UID=1000)的系统上新建 node 用户,其
UID 通常为 1001。而 OpenClaw 的 Docker
镜像内默认 node 用户的 UID 为 1000。这种 UID
不匹配会导致容器无法读写宿主机上由“真 node
用户”创建的数据目录。
解决方案:调整宿主机上配置目录的权限,使其对所有用户可读写(适用于测试环境)。
1 | sudo chmod 777 /home/node/.openclaw -R |
注意:更规范的长期解决方案是在构建 Docker
镜像时指定与宿主机 node 用户一致的
UID/GID,或创建用户时直接指定 UID=1000。
5.5 CLI 客户端无法连接网关
问题描述:openclaw-cli 客户端容器无法连接到 openclaw-gateway 网关容器。
解决方案:此问题通常是因为 CLI
容器内部无法正确解析网关地址。需在 openclaw.json 的 gateway 部分明确指定网关的可访问
URL(如宿主机局域网
IP,如:ws://192.168.10.165:18789)。
补充说明:openclaw-cli 客户端的主要用途是在初始安装阶段生成配置。日常管理和操作完全可以通过直接 exec 进入 openclaw-gateway 容器内执行命令来完成,因此
CLI 与 Gateway 的网络连通性并非必需。
6 参考文档
- OpenClaw+Kimi K2.5+Moltbook保姆级部署指南,确实可以封神了! https://blog.csdn.net/qq_43270074/article/details/157669461
7 后记
实话说,安装起来确实有点麻烦。作者也提到他完全依赖大模型生成代码,自己并不 review。当代码量变得庞大且复杂时,即使有大模型的辅助,也很难在每次修改时全面考虑到层层调用逻辑的关联。所以这次安装的时候,即使完全按照界面提示操作,某些设置还是会引发“找不到变量xxx”、卡住等问题,也可能是我用的环境比较小众。
这个迭代速度实在太快了。上周项目的名字还叫“小龙虾”时,对应的 Docker 镜像大小是1.88G,这周就已经增加到4.2G了(增加了playwright, python等工具);两次安装过程中遇到的问题也完全不一样。上周 TypeScript 的有效代码量是45万行,本周已经增长到了50万行;我试用了核心功能后感觉,有很大精简余地。随着项目变得越来越复杂和庞大,重构可能会影响功能,不重构慢慢就驾驭不了了。也许是我OUT了,AI时代没有这个问题?拭目以待吧。
尽管安装过程让人头秃,但用起来是真香,而且我觉得 token 的用量目前也是可控且可以接受的,使用Docker方法安装也并没有想象中那么危险和不可控,后续会单开文章聊聊使用体验以及那些令人惊艳的使用场景。
