🦀 把 OpenClaw 部署到 Linux 服务器 Docker 的全过程:优势、实战、踩坑实录

0 阅读4分钟

原本我以为:

"Docker 跑个 OpenClaw,不就是拉镜像 → 启动 → 完事?"

结果现实告诉我:

年轻人,别太自信。

这篇文章完整复盘:

  • 为什么要用 Linux 服务器 + Docker
  • 实际部署怎么做
  • 我踩过哪些坑
  • 最终如何优雅收场

🚀 为什么要在 Linux 服务器上用 Docker 部署 OpenClaw?

核心优势:稳定、隔离、可迁移。

1️⃣ 稳定

Linux 服务器适合长期运行:

  • 不怕关机
  • 不怕睡眠
  • 24×7 在线

如果你想让 OpenClaw 成为真正在线助手,服务器是标配。


2️⃣ Docker 带来的优势

✅ 环境隔离

  • 不污染宿主机环境
  • 不和其他 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

修改Dockerfile

由于在安装的过程中需要访问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

配置

安装过程的选择,通过上下左右键来选择,输入回车键来确定选择。

image-20260225132246146

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

image-20260225132425249

image-20260225132854638

image-20260225133137322

image-20260225133158141

访问

你以为到这边就能正常访问了,NONONO!

由于openclaw对安全问题处理比较严格,不允许非本地电脑访问,需要修改相关的配置

编辑你挂载的配置文件:

./data/config/openclaw.json

加入:

{
  "gateway": {
    "controlUi": {
      "allowedOrigins": [
        "http://你的服务器IP:18789",
        "http://localhost:18789"
      ]
    }
  }
}

查看容器的信息,出现下面即是正常运行:

image-20260225134513606

http://IP:18789/

image-20260225225201517

端口转发

虽然能正常范文,还是出现异常,不能正常使用

control ui requires device identity (use HTTPS or localhost secure context)

我们通过端口转发,把本地的端口绑定到服务器的端口,实际是使用本地来访问openclaw,具体命令如下:

#powershell
ssh -L 18789:localhost:18789 user@服务器IP

如果出现unauthorized: gateway token missing (open the dashboard URL and paste the token in Control UI settings)

那是token不一致问题,在输入安装的时候会生成一个token,在配置文件中也会有一个token,要让这两个保持一致

看配置docker-compose的配置信息

docker compose config 

image-20260225225953256

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

image-20260225230113922

可以修改./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 <requestId>

image-20260225230832797

到这边终于能正常访问了

image-20260225230900008


💥 踩坑实录

🧨 坑一:CLI 执行不了

错误使用:

openclaw devices list

正确方式:

docker compose exec openclaw node dist/index.js devices list

🔒 坑二:权限问题(EACCES)

报错:

EACCES: permission denied
/home/node/.openclaw/identity/device.json

解决:

chown -R 1000:1000 ./data

核心认知:Docker volume 权限 ≠ 容器权限。


🔐 坑三:Gateway Token Mismatch

报错:

unauthorized: gateway token mismatch

原因:

volume 中残留旧配置(openclaw.json)。

彻底解决:

rm -rf ./data/*
docker compose down
docker compose up -d

🌐 坑四:非 Loopback 安全限制

  • 非 127.0.0.1
  • 没 HTTPS
  • 未设置 allowedOrigins

都会被拒绝访问。

OpenClaw 默认安全级别较高。


🧠 最重要的认知升级

容器是无状态的,但 volume 是有记忆的。

排错优先顺序:

  1. 看 volume
  2. 看 openclaw.json
  3. 再看 docker-compose

🎯 推荐生产架构

用户 → SSH/Nginx → OpenClaw Gateway → 模型 API

建议:

  • 不公网暴露 Gateway
  • 正确设置 volume 权限
  • 使用 HTTPS

🏁 总结

部署 OpenClaw 本身不难。

难的是:

  • 理解 Docker 权限
  • 理解 volume 持久化
  • 理解 Gateway 安全机制

一旦跑通,非常稳定且可扩展。


如果你正在被 token 或权限问题折磨,先检查 volume,再重启。

很多问题都会消失。