乐于分享
好东西不私藏

群晖NAS安装OpenClaw容器 | 亲测详细版无障碍部署(修订版)

群晖NAS安装OpenClaw容器 | 亲测详细版无障碍部署(修订版)
测试环境:DS218+ / DSM 7.2.2 / OpenClaw v2026.3.13

准备工作

  1. 安装Container Manager(群晖套件中心)
  2. 开启NAS的SSH(控制面板 → 终端机和SNMP → 勾选“启动SSH功能”)
3. 用SSH连接到NAS(Windows PowerShell或终端):
# bashssh 你的用户名@你的NASIP
4. 创建配置目录:
# 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)`,稍后变健康)。

第八步:测试网关健康状态

在NAS上执行:
# bashcurl -v http://127.0.0.1:18789/healthz
如果返回 `HTTP/1.1 200 OK` 和 `{"ok":true,"status":"live"}`,表示网关正常。
若失败,尝试用NAS的局域网IP测试:
# bashcurl -v http://你的NASIP:18789/healthz
若成功,说明服务已运行,问题出在宿主机本地访问。

第九步:获取token并在浏览器访问

# bashgrep token /volume1/docker/openclaw/openclaw.json
复制token值。

### 访问方式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`,需在容器内批准设备:
1. 查看待批准设备:
# bashsudo docker exec openclaw openclaw devices list
2. 如果有 `pending` 设备,记下ID并批准:
# bashsudo docker exec openclaw openclaw devices approve <设备ID>
3. 刷新浏览器,即可进入仪表盘。

## 常见问题及解决方法

Q1: 容器启动后一直Restarting 或health: starting 不健康

检查日志
sudo docker logs openclaw
常见原因
配置文件JSON格式错误(逗号缺失/多余)。
权限问题(重新执行第五步)。
端口被占用(更换端口,但需同步修改配置和转发规则)。

Q2: 宿主机curl 127.0.0.1:18789 失败,但局域网IP成功

检查Windows端口转发规则是否正确。
临时关闭Windows防火墙测试。
直接使用局域网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 configure

完成

现在你已经拥有一个稳定运行的OpenClaw服务。后续可参考第二篇教程配置AI模型和集成聊天通道。
如果仍需完全删除容器(如需重装),可用以下命令:
# bashsudo docker stop openclawsudo docker rm openclawsudo rm -rf /volume1/docker/openclaw
 注意:这会清除所有配置,请提前备份所需文件。