今天在尝试用我的本机设备访问局域网内另一个设备上 OpenClaw 的 Control UI,但是发现这个东西没那么好设置。
说明:Control UI 可以控制 OpenClaw 的各种设置,暴露在网上是比较危险的。我是让它只在局域网里面可用,所以问题不大。对于不懂网络的人,不建议随便改这些东西。
常规思路
需要先设置把 binding 改成 lan,也就是 0.0.0.0,也就是让 OpenClaw Control UI 可以接收并监听所有 IP 来的请求。而默认的是 local,也就是 127.0.0.1,它只能接收本机请求。
然后要设置 allow list,只有在 allow list 里的 IP 访问,它才会正常工作。
但是当我这么设置了以后,发现它还是报错了:control ui requires device identity (use HTTPS or localhost secure context)。我又加了 allowInsecureAuth: true,但是仍然无效。
以上这几点都可以直接编辑 ~/.openclaw/openclaw.json 文件,编辑完成后运行 openclaw gateway restart 重启 gateway 生效。
1 | { |
于是我就找到了这个 GitHub issue。看起来,为了安全,OpenClaw 要求必须走 HTTPS。
当然,我也按照 AI 给的方式配置了 HTTPS 的证书,然而还是没有效果,他又报了一个新的错误 pairing required。AI 说,这是因为我设置的 auth 是 pair 模式,而不是 token 模式,但是可以看到截图里,其实我设置的就是 token 模式。
所以直接放弃了这种方式,劝大家也不要浪费时间试这个了。
简化思路:SSH Tunnel
于是我尝试了一个更简单的办法,直接用 SSH 设置一个 Tunnel,发现很好用。
首先需要给 OpenClaw 所在的设备配置 SSH server,这个网上有很多教程,就不赘述了。
配好了以后,在本机运行下面的命令,把 USER 和 IP 分别替换成 OpenClaw 设备上的用户名和局域网 IP 地址:
1 | ssh -L 8080:127.0.0.1:18789 USER@IP |
这样本机 8080 端口的数据流量,就会转发到 OpenClaw 设备的 18789 端口,于是本机就可以直接访问 localhost:8080,从而访问这个 dashboard 了。
由于我设置的是 token 模式,还需要在 dashboard 上手动输入 token,点击确认就能进去了。
这个很简单,把配置文件里的mode改成password,然后设置一个password就可以了。
1 | "auth": { |
AI 自动实现反向代理
前面这种方式只能用于电脑,如果你想手机上局域网也可以访问,更简单的办法是在 OpenClaw 所在的设备上运行一个反向代理。
既然 AI 可以自动写代码,这个问题就很好解决了。我直接给“小龙虾”(OpenClaw)发了一条消息:
我想在你的设备上建一个反向代理,用 Node.js 代码实现,PM2 管理。当我在局域网里面访问你这个设备上的 9000 端口时,直接代理到 control UI 对应的 18789 端口。
过了几分钟,它就在自己的设备上用 Node.js 写了一个反向代理。我实际去看了代码也不复杂,没多少行。
然后我在局域网里其他设备上,通过浏览器HTTPS访问这个设备的 IP 地址,加 9000 端口,就可以看到这个 dashboard 了。同样也要输入 password / token。
快速记录一下这个问题,希望对有需要的人有帮助。
如果觉得文章有帮助,欢迎分享转发,也欢迎关注我的公众号“搬砖的小明”,及时获取更新