Synology 上别用 apt,纯 Docker 走起
第一步我就栽了。按常规 Linux 流程 apt-get update,直接卡死。Synology DSM 是定制 Linux,根本不支持 apt。
解法很简单:完全跳过宿主机包管理,纯 Docker 部署。SSH 进 NAS,手动写 docker-compose.yml,docker compose up -d 拉起来,不碰宿主机任何东西。这个思路后面会反复用到——在 Synology 上,Docker 就是你的全部。
容器反复重启:Missing config
容器起来就重启,看日志全是 Missing config。三步修复:环境变量、配置文件挂载、数据目录映射,三个同时做,缺一个都不行。
紧接着又遇到权限问题:
EACCES: permission denied, mkdir '/home/node/.openclaw/canvas'
容器默认以非 root 用户跑,没有写权限。在 docker-compose.yml 加一行 user: "0:0" 用 root 跑,问题解决。
Web UI 只能 HTTPS 或 localhost 访问
打开 Control UI 就报安全限制的错,这个绕不过去。最省事的方案是 SSH 隧道:
ssh -L 本地端口:localhost:容器端口 用户名地址
然后浏览器访问 localhost:本地端口 就行。说实话这个限制一开始挺烦人的,但 SSH 隧道配好之后其实也没什么额外成本。
Discord 配对的几个暗坑
Bot 在 Discord 里回复了配对码,按文档说的执行 CLI 命令去批准,结果找不到命令。原因是 OpenClaw CLI 没有暴露为容器内的系统命令。别纠结,直接用 Web UI 的 Pairing 页面点一下批准就行。
配对成功后,Bot 显示在线,但发消息没反应。查 openclaw.json 发现里面有个 "groupPolicy": "allowlist",意思是 bot 只响应白名单里的服务器。改成:
"groupPolicy": "all"
这里还有个隐藏雷:如果你手动加了 groupAllowlist 字段,OpenClaw 会直接拒绝启动,报 Config invalid。这个字段在当前版本根本不存在,删掉它。
第三方模型接入:openai-responses 不是 openai
我想加 DeepSeek,按直觉用 "api": "openai" 配置,bot 直接崩了,config 验证失败。
踩完才知道:OpenAI 兼容的第三方 provider 要用 "api": "openai-responses",不是 "openai"。这个区别文档里没怎么强调,但搞错了就是起不来。
配置文件的严格校验
OpenClaw 对配置文件做严格校验,遇到未知 key 直接拒绝启动。我当时想加 errorHandling、timeout 这些字段增强稳定性,结果 bot 起不来。
内置的稳定性配置是有限的,想做外部保护,用 Docker 的 restart: unless-stopped 加 cron 监控脚本代替,比在配置文件里瞎加字段靠谱得多。
多实例部署和更新注意事项
同一台 NAS 跑两个 bot,各自独立目录,分配不同端口段就行。但有两个坑我当时都踩了:
- 配置文件名固定是
openclaw.json。我迁移第二个 bot 时把文件命名成了clawdbot.json,容器死活找不到。跟 bot 叫什么名字无关,它就认openclaw.json。 - 插件依赖问题。如果原来的配置里有飞书插件但新环境没装,启动会报错。把 feishu plugin 条目从配置里删掉就好。
更新也是个小坑:docker compose pull 拉了新镜像,但容器还在用旧镜像跑。必须:
docker compose pull
docker compose up -d --force-recreate
或者在 Synology DSM 的 Docker 界面里手动重启容器。
长会话 context 溢出
这个问题跑久了一定会遇到。长时间运行的会话积累大量消息,bot 响应变慢甚至出错。
我的做法是写一个 session 归档脚本:超过 120 条消息时,把最旧的 80 条压缩成 AI 摘要,保留最新 40 条。用 cron 每小时跑一次,基本上就不会再溢出了。
三类问题的规律
回头看,自托管 OpenClaw 最容易出问题的地方就三类:
- 环境问题:Synology 不支持 apt,Web UI 需要 HTTPS/localhost,SSH 隧道是最省事的方案
- 配置问题:配置文件严格校验,不能加未知字段;第三方 API 用
openai-responses不是openai;配置文件名固定是openclaw.json - 运维问题:更新后要用新镜像重建容器;多实例靠独立目录和不同端口;长会话要做 context 管理
如果你也在考虑把 OpenClaw 部署到自己的 NAS 上跑 Discord bot,这些坑基本上是绕不开的。提前知道,能省不少时间。有类似经历的欢迎评论区交流。