剪藏#剪藏#老IT有话说

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

2026 年 3 月 21 日1 分钟
分享Twitter / XTelegram微博
群晖NAS安装OpenClaw容器 | 亲测详细版无障碍部署(修订版) 封面

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

Notion image

准备工作

  1. 安装Container Manager(群晖套件中心)

  2. 开启NAS的SSH(控制面板 → 终端机和SNMP → 勾选“启动SSH功能”)

Notion image

  1. 用SSH连接到NAS(Windows PowerShell或终端):
JAVASCRIPT
# bash
ssh 你的用户名@你的NASIP
  1. 创建配置目录:
JAVASCRIPT
# bash
sudo mkdir -p /volume1/docker/openclaw

第一步:拉取OpenClaw镜像(可选,已有镜像可跳过)

JAVASCRIPT
# bash
sudo docker pull ghcr.io/openclaw/openclaw:latest

如果之前拉取过,此步会很快完成。

Notion image

第二步:生成配置文件(通过临时容器)

JAVASCRIPT
# 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 停止容器。

第三步:复制配置文件并删除临时容器

JAVASCRIPT
# bash
sudo docker cp openclaw-temp:/home/node/.openclaw/openclaw.json /volume1/docker/openclaw/
sudo docker rm openclaw-temp-

第四步:修改配置文件(关键)

JAVASCRIPT
# bash
sudo vi /volume1/docker/openclaw/openclaw.json

找到 "gateway" 部分,在 "auth" 的结束大括号 } 后面加一个逗号,然后添加以下 "controlUi" 字段(注意缩进和逗号):

JAVASCRIPT
# json
"controlUi": {
  "allowedOrigins": [
  "http://你的NASIP:18789",
  "http://127.0.0.1:18789",
  "http://localhost:18789"
  ]
}

你的NASIP 替换为你的NAS真实IP(例如 192.168.0.241)。保存退出(:wq)。

检查点:可用下面命令确认添加成功。

JAVASCRIPT
 grep -A 5 "controlUi" /volume1/docker/openclaw/openclaw.json

第五步:修复权限(最重要)

JAVASCRIPT
# 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

如果漏掉此步,容器将无法读取配置,导致启动失败。

第六步:运行正式容器

JAVASCRIPT
# 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

第七步:验证容器运行

JAVASCRIPT
# bash
sudo docker ps | grep openclaw

应显示状态为 Up(可能带 (health: starting),稍后变健康)。

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

在NAS上执行:

JAVASCRIPT
# bash
curl -v http://127.0.0.1:18789/healthz

如果返回 HTTP/1.1 200 OK{"ok":true,"status":"live"},表示网关正常。

若失败,尝试用NAS的局域网IP测试:

JAVASCRIPT
# bash
curl -v http://你的NASIP:18789/healthz

若成功,说明服务已运行,问题出在宿主机本地访问。

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

JAVASCRIPT
# bash
grep token /volume1/docker/openclaw/openclaw.json

复制token值。

### 访问方式A(局域网IP直连,推荐)

JAVASCRIPT
http://你的NASIP:18789/?token=你的token

这是最直接的方式,无需额外配置。

### 访问方式B(本地127.0.0.1,需Windows端口转发)

如果希望用 http://127.0.0.1:18789 访问,需在Windows上配置端口转发(管理员PowerShell):

JAVASCRIPT
# 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,需在容器内批准设备:

  1. 查看待批准设备:
JAVASCRIPT
# bash
sudo docker exec openclaw openclaw devices list
  1. 如果有 pending 设备,记下ID并批准:
JAVASCRIPT
# bash
sudo docker exec openclaw openclaw devices approve <设备ID>
  1. 刷新浏览器,即可进入仪表盘。

Notion image

## 常见问题及解决方法

Q1: 容器启动后一直Restartinghealth: starting 不健康

检查日志

JAVASCRIPT
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或域名)。

添加后需重启容器:

JAVASCRIPT
sudo docker restart openclaw

Q4: 浏览器提示pairing requireddevices list 无待批准设备

在浏览器中访问时不要带token,强制进入配对流程。

或者清除浏览器缓存/使用无痕模式重试。

检查容器日志看是否有连接错误。

Q5: 如何添加模型?

进入UI后,在设置或模型管理页面手动添加;或进入容器执行如下命令按向导配置。

JAVASCRIPT
openclaw configure

完成

现在你已经拥有一个稳定运行的OpenClaw服务。后续可参考第二篇教程配置AI模型和集成聊天通道。

如果仍需完全删除容器(如需重装),可用以下命令:

JAVASCRIPT
# bash
sudo docker stop openclaw
sudo docker rm openclaw
sudo rm -rf /volume1/docker/openclaw

注意:这会清除所有配置,请提前备份所需文件。

原文地址: https://mp.weixin.qq.com/s?__biz=MzcwODE3NTkzNQ==&mid=2247483952&idx=1&sn=3e4c94c636442933a7e2d2941ac5e993&chksm=f48901b59f90f780d7d23785607d2674bd67dbc9c1acf21ed99c438b0ef81f43f5fbce5a5539&mpshare=1&scene=1&srcid=0321mjW0rOtksJDzDVSlsZE8&sharer_shareinfo=c8695ddec11bd6b5e20ca1168bdb185f&sharer_shareinfo_first=c8695ddec11bd6b5e20ca1168bdb185f#rd

相关文章