原本我以为:
“Docker 跑个 OpenClaw,不就是拉镜像 → 启动 → 完事?”
结果现实告诉我:
年轻人,别太自信。
这篇文章完整复盘:
- 为什么要用 Linux 服务器 + Docker
- 实际部署怎么做
- 我踩过哪些坑
- 最终如何优雅收场
核心优势:稳定、隔离、可迁移。
Linux 服务器适合长期运行:
- 不怕关机
- 不怕睡眠
- 24×7 在线
如果你想让 OpenClaw 成为真正在线助手,服务器是标配。
✅ 环境隔离
- 不污染宿主机环境
- 不和其他 Node 项目冲突
- 不受系统 Node 版本影响
✅ 可复制性
测试环境、生产环境可一键复制:
docker compose up -d
✅ 快速回滚
删容器 → 重建 → 恢复 volume。
推荐:
- Ubuntu 22.04
- 2核4G 起步
- docker与docker-compose的环境
git clone https://gh-proxy.com/https://github.com/openclaw/openclaw.git
由于在安装的过程中需要访问github,你懂的,那是相当的慢。所以需要修改修改Dockerfile文件
RUN curl -fsSL https://bun.sh/install | bash 改成:
RUN apt-get update && apt-get install -y unzip curl RUN curl -L https://gh-proxy.com/https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip -o bun.zip && unzip bun.zip && mv bun-linux-x64/bun /usr/local/bin/bun && chmod +x /usr/local/bin/bun && rm -rf bun.zip bun-linux-x64
容器中使用的node账户,默认是放在/root/.openclaw/目录下,没有node的访问权限,所以安装会报错,错误如下:
◇ Select channel (QuickStart) │ Skip for now Error: EACCES: permission denied, open '/home/node/.openclaw/openclaw.json.7.82108e98-b043-4034-9e3b-e3d283ecf73d.tmp'
这边把配置文件与工作空间文件放到下载的openclaw目录下
mkdir -p ./data/config mkdir -p ./data/workspace #授权 chown -R 1000:1000 ./data
#注意查看config与workspace里面的文件是否都有授权,没有的话,继续授权,如: [root@localhost config]# chown -R 1000:1000 ./data/config/identity/ [root@localhost config]# chown -R 1000:1000 ./data/config/workspace/
#注意运行时需要设置换个环境 export OPENCLAW_CONFIG_DIR=./data/config export OPENCLAW_WORKSPACE_DIR=./data/workspace ./docker-setup.sh
安装过程的选择,通过上下左右键来选择,输入回车键来确定选择。

Yes->QuickStart->Skip for now->All providers->Enter model manually->直接回车键->Skip for now->hooks,此处可以多选,全选,上下左右键来选择,按space来厕,然后输入回车键来确定选择




你以为到这边就能正常访问了,NONONO!
由于openclaw对安全问题处理比较严格,不允许非本地电脑访问,需要修改相关的配置
编辑你挂载的配置文件:
./data/config/openclaw.json
加入:
{ "gateway": { "controlUi": { "allowedOrigins": [ "http://你的服务器IP:18789", "http://localhost:18789" ] } } }
查看容器的信息,出现下面即是正常运行:

http://IP:18789/

虽然能正常范文,还是出现异常,不能正常使用
control ui requires device identity (use HTTPS or localhost secure context)
我们通过端口转发,把本地的端口绑定到服务器的端口,实际是使用本地来访问openclaw,具体命令如下:
#powershell ssh -L 18789:localhost:18789 user@服务器IP
那是token不一致问题,在输入安装的时候会生成一个token,在配置文件中也会有一个token,要让这两个保持一致
看配置docker-compose的配置信息
docker compose config

其中OPENCLAW_GATEWAY_TOKEN即是token信息,查看./data/config/openclaw.json文件的token

可以修改./data/config/openclaw.json为docker-compose中的token信息,然后重启docker即可。
你以为到这边就能正常使用了,NONONO!
openclaw还需要认证访问服务的设备才能正常使用。
登录容器后执行:
#登录容器 docker exec -it openclaw-openclaw-gateway-1 /bin/bash # 列出待处理的请求 node dist/index.js devices list # 按请求 ID 批准 node dist/index.js devices approve

到这边终于能正常访问了

错误使用:
openclaw devices list
正确方式:
docker compose exec openclaw node dist/index.js devices list
报错:
EACCES: permission denied /home/node/.openclaw/identity/device.json
解决:
chown -R 1000:1000 ./data
核心认知:Docker volume 权限 ≠ 容器权限。
报错:
unauthorized: gateway token mismatch
原因:
volume 中残留旧配置(openclaw.json)。
彻底解决:
rm -rf ./data/* docker compose down docker compose up -d
- 非 127.0.0.1
- 没 HTTPS
- 未设置 allowedOrigins
都会被拒绝访问。
OpenClaw 默认安全级别较高。
容器是无状态的,但 volume 是有记忆的。
排错优先顺序:
- 看 volume
- 看 openclaw.json
- 再看 docker-compose
用户 → SSH/Nginx → OpenClaw Gateway → 模型 API
建议:
- 不公网暴露 Gateway
- 正确设置 volume 权限
- 使用 HTTPS
部署 OpenClaw 本身不难。
难的是:
- 理解 Docker 权限
- 理解 volume 持久化
- 理解 Gateway 安全机制
一旦跑通,非常稳定且可扩展。
如果你正在被 token 或权限问题折磨,先检查 volume,再重启。
很多问题都会消失。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/274677.html