测试环境:DS218+ / DSM 7.2.2 / OpenClaw v2026.3.13准备工作
- 安装Container Manager(群晖套件中心)
- 开启NAS的SSH(控制面板 → 终端机和SNMP → 勾选“启动SSH功能”)
3. 用SSH连接到NAS(Windows PowerShell或终端):# bashsudo mkdir -p /volume1/docker/openclaw
第一步:拉取OpenClaw镜像(可选,已有镜像可跳过)
# bashsudo docker pull ghcr.io/openclaw/openclaw:latest
第二步:生成配置文件(通过临时容器)
# bashsudo docker run -it --name openclaw-temp ghcr.io/openclaw/openclaw:latest node openclaw.mjs gateway run --allow-unconfigured --dev
等待输出中出现 `Dev config ready: ~/.openclaw/openclaw.json`,然后按 Ctrl+C 停止容器。第三步:复制配置文件并删除临时容器
# bashsudo docker cp openclaw-temp:/home/node/.openclaw/openclaw.json /volume1/docker/openclaw/sudo docker rm openclaw-temp-
第四步:修改配置文件(关键)
# bashsudo vi /volume1/docker/openclaw/openclaw.json
找到 "gateway" 部分,在 "auth" 的结束大括号 `}` 后面加一个逗号,然后添加以下 "controlUi" 字段(注意缩进和逗号):# json"controlUi": { "allowedOrigins": [ "http://你的NASIP:18789", "http://127.0.0.1:18789", "http://localhost:18789" ]}
将 `你的NASIP` 替换为你的NAS真实IP(例如 `192.168.0.241`)。保存退出(`:wq`)。 grep -A 5 "controlUi" /volume1/docker/openclaw/openclaw.json
第五步:修复权限(最重要)
# bash# 父目录权限sudo chmod 755 /volume1/docker# 配置目录所有者改为容器内用户(UID 1000)sudo chown -R 1000:1000 /volume1/docker/openclawsudo chmod 755 /volume1/docker/openclawsudo chmod 644 /volume1/docker/openclaw/openclaw.json
第六步:运行正式容器
# bashsudo docker run -d \--name openclaw \--net=host \-v /volume1/docker/openclaw:/home/node/.openclaw \--restart unless-stopped \ghcr.io/openclaw/openclaw:latest \node openclaw.mjs gateway run --allow-unconfigured --bind lan
使用 `--net=host` 让容器直接使用宿主机网络,简化端口映射。如果后续宿主机无法访问 `127.0.0.1`,可改用 `-p 18789:18789` 替换 `--net=host`。第七步:验证容器运行
# bashsudo docker ps | grep openclaw
应显示状态为 `Up`(可能带 `(health: starting)`,稍后变健康)。第八步:测试网关健康状态
# bashcurl -v http://127.0.0.1:18789/healthz
如果返回 `HTTP/1.1 200 OK` 和 `{"ok":true,"status":"live"}`,表示网关正常。# bashcurl -v http://你的NASIP:18789/healthz
第九步:获取token并在浏览器访问
# bashgrep token /volume1/docker/openclaw/openclaw.json
### 访问方式A(局域网IP直连,推荐)
http://你的NASIP:18789/?token=你的token
### 访问方式B(本地127.0.0.1,需Windows端口转发)
如果希望用 `http://127.0.0.1:18789` 访问,需在Windows上配置端口转发(管理员PowerShell):# powershellnetsh interface portproxy add v4tov4 listenport=18789 listenaddress=0.0.0.0 connectport=18789 connectaddress=你的NASIPnetsh interface portproxy show all
然后访问 `http://127.0.0.1:18789/?token=你的token`。第十步:设备配对(首次访问必做)
浏览器打开上述地址后,如果提示 `pairing required`,需在容器内批准设备:# bashsudo docker exec openclaw openclaw devices list
2. 如果有 `pending` 设备,记下ID并批准:# bashsudo docker exec openclaw openclaw devices approve <设备ID>
## 常见问题及解决方法
Q1: 容器启动后一直Restarting 或health: starting 不健康
sudo docker logs openclaw
端口被占用(更换端口,但需同步修改配置和转发规则)。Q2: 宿主机curl 127.0.0.1:18789 失败,但局域网IP成功
直接使用局域网IP访问(无需纠结127.0.0.1)。Q3: 浏览器访问提示origin not allowed
确认controlUi.allowedOrigins 已包含你当前访问的地址(IP或域名)。sudo docker restart openclaw
Q4: 浏览器提示pairing required 但devices list 无待批准设备
在浏览器中访问时不要带token,强制进入配对流程。Q5: 如何添加模型?
进入UI后,在设置或模型管理页面手动添加;或进入容器执行如下命令按向导配置。完成
现在你已经拥有一个稳定运行的OpenClaw服务。后续可参考第二篇教程配置AI模型和集成聊天通道。# bashsudo docker stop openclawsudo docker rm openclawsudo rm -rf /volume1/docker/openclaw