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

测试环境:DS218+ / DSM 7.2.2 / OpenClaw v2026.3.13

准备工作
-
安装Container Manager(群晖套件中心)
-
开启NAS的SSH(控制面板 → 终端机和SNMP → 勾选“启动SSH功能”)

- 用SSH连接到NAS(Windows PowerShell或终端):
# bash
ssh 你的用户名@你的NASIP- 创建配置目录:
# bash
sudo mkdir -p /volume1/docker/openclaw第一步:拉取OpenClaw镜像(可选,已有镜像可跳过)
# bash
sudo docker pull ghcr.io/openclaw/openclaw:latest如果之前拉取过,此步会很快完成。

第二步:生成配置文件(通过临时容器)
# bash
sudo 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 停止容器。
第三步:复制配置文件并删除临时容器
# bash
sudo docker cp openclaw-temp:/home/node/.openclaw/openclaw.json /volume1/docker/openclaw/
sudo docker rm openclaw-temp-第四步:修改配置文件(关键)
# bash
sudo 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/openclaw
sudo chmod 755 /volume1/docker/openclaw
sudo chmod 644 /volume1/docker/openclaw/openclaw.json如果漏掉此步,容器将无法读取配置,导致启动失败。
第六步:运行正式容器
# bash
sudo 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。
第七步:验证容器运行
# bash
sudo docker ps | grep openclaw应显示状态为 Up(可能带 (health: starting),稍后变健康)。
第八步:测试网关健康状态
在NAS上执行:
# bash
curl -v http://127.0.0.1:18789/healthz如果返回 HTTP/1.1 200 OK 和 {"ok":true,"status":"live"},表示网关正常。
若失败,尝试用NAS的局域网IP测试:
# bash
curl -v http://你的NASIP:18789/healthz若成功,说明服务已运行,问题出在宿主机本地访问。
第九步:获取token并在浏览器访问
# bash
grep 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):
# powershell
netsh interface portproxy add v4tov4 listenport=18789 listenaddress=0.0.0.0 connectport=18789 connectaddress=你的NASIP
netsh interface portproxy show all然后访问 http://127.0.0.1:18789/?token=你的token。
第十步:设备配对(首次访问必做)
浏览器打开上述地址后,如果提示 pairing required,需在容器内批准设备:
- 查看待批准设备:
# bash
sudo docker exec openclaw openclaw devices list- 如果有
pending设备,记下ID并批准:
# bash
sudo docker exec openclaw openclaw devices approve <设备ID>- 刷新浏览器,即可进入仪表盘。

## 常见问题及解决方法
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 openclawQ4: 浏览器提示pairing required 但devices list 无待批准设备
在浏览器中访问时不要带token,强制进入配对流程。
或者清除浏览器缓存/使用无痕模式重试。
检查容器日志看是否有连接错误。
Q5: 如何添加模型?
进入UI后,在设置或模型管理页面手动添加;或进入容器执行如下命令按向导配置。
openclaw configure完成
现在你已经拥有一个稳定运行的OpenClaw服务。后续可参考第二篇教程配置AI模型和集成聊天通道。
如果仍需完全删除容器(如需重装),可用以下命令:
# bash
sudo docker stop openclaw
sudo docker rm openclaw
sudo rm -rf /volume1/docker/openclaw注意:这会清除所有配置,请提前备份所需文件。