在群晖上部署 OpenClaw

背景

OpenClaw(aka ClawBot, MoltBot)火了一阵了,本来对于这种 LLM 套壳项目,准备保持“让子弹飞一会”的态度先观望下。但是最近看到这个项目的提示词觉得挺有意思,决定利用群晖部署一个玩玩。

开始

简单 Google 了一下没发现很直观的文档,遂决定自己挖坑尝试。首先在自带的 Container Manager 中切换镜像仓库到 https://docker.1ms.run,搜 openclaw 即可找到一个 alpine/openclaw。

dockerhub 中简单了解下相关信息,感觉靠谱,拉下来试试。

docker 部署方式可以参考官方文档,这里通过 Container Manager 启动的话需要注意预构建的镜像的方式差异,参考官方的 Dockerfiledocker-setup.sh添加以下配置:

  • 端口主要是 openclaw 用到的 gateway 和 bridge 的两个端口
  • 存储的话主要把 openclaw 家目录的配置目录挂载出来,后面需要修改

  • OPENCLAW_GATEWAY_TOKEN:这里的 token 是 gateway 所需要的,不加的话容器启动就会报错。直接使用 openssl rand -hex 32 命令生成一个粘贴进去即可。
  • OPENCLAW_GATEWAY_BIND:由于我是通过 tailscale 远程访问(或者说 NAS 大部分情况都是远程访问),这里需要修改为 lan 模式绑定到 0.0.0.0 的地址。(实际发现还得修改下面的启动命令,这里的必要性懒得验证了)

  • 实际测试发现启动命令的优先级更高,需要在后面添加 --bind lan 启动参数。

成功启动后直接访问 http://<tailscale-ip>:18789 即可进入 dashboard,不过会发现存在报错导致无法使用:

1
2
3
4
disconnected (1008): control ui requires HTTPS or localhost (secure context)
This page is HTTP, so the browser blocks device identity. Use HTTPS (Tailscale Serve) or open http://127.0.0.1:18789 on the gateway host.
If you must stay on HTTP, set gateway.controlUi.allowInsecureAuth: true (token-only).
Docs: Tailscale Serve · Docs: Insecure HTTP

主要原因是一些安全策略的限制,这里偷懒的话可以直接在之前挂载出来的目录中手动添加配置 allowInsecureAuth 来允许远程 http 访问。

在挂载的 /docker/openclaw 中新建 openclaw.json 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"gateway": {
"bind": "lan",
"port": 18789,
"auth": {
"mode": "token",
"token": "<your-token>"
},
"controlUi": {
"enabled": true,
"allowInsecureAuth": true
}
}
}

配置好后重启之前的容器即可正常访问 dashboard。