Tailscale 与远程访问示意图

OpenClaw 跑在 VPS 上之后,下一个真实问题通常不是模型能力,而是:你怎么从公司电脑、家里电脑、安卓手机上稳定访问它。如果每次都要本地 SSH 端口转发,能用,但不够顺手;如果直接裸露公网,又容易把控制面板暴露过头。

这一篇讲的就是远程访问的第三阶段:如何用 Tailscale 把 OpenClaw 变成跨设备可用、但又不直接裸奔公网的个人控制台

先给一个实践建议

如果你只是自己一个人跨电脑和手机使用,不要一上来就做公网暴露。先把 Tailscale 跑通,再决定要不要把管理入口做成更公开的形态。大部分个人使用场景里,Tailscale 已经足够顺手,而且风险更低

一、为什么 Tailscale 比直接开公网更适合个人场景

如果你的需求是“我自己在多台设备上用”,那 Tailscale 通常比公网反代更合适,原因有三个:

它的本质不是“远程桌面工具”,而是给你的设备之间建一层稳定、私有的加密网络。

二、一个常见误区:不要执着于 tailnet IP + HTTP

很多人一开始会这么想:

http://100.x.x.x:18789

这在某些简单服务上能跑,但放到 OpenClaw Control UI 上,经常会踩中两个坑:

原因很简单:Control UI 不只是一个静态网页,它还有 WebSocket、来源校验、设备配对和认证逻辑。单纯靠 tailnet IP 直连,并不总是最稳的做法。

三、更稳的方案:loopback + allowTailscale + Tailscale Serve

在个人环境里,更推荐这套组合:

这样做的好处是:Gateway 本身仍然只听本机,真正对外呈现的入口交给 Tailscale Serve。访问体验更像“有一个私有 HTTPS 控制台”,而不是“记一个很丑的内网 IP”。

四、为什么一定要用真实 MagicDNS,而不是占位符

这一步很容易犯低级错误。配置 allowedOrigins 时,必须用真实的 MagicDNS 域名,而不是教程里示例写法。

正确做法通常是从:

tailscale status --json

里读取:

Self.DNSName

然后把它写成:

"https://dufresnevps.tail408683.ts.net"

如果你把 YOURMAGIC.ts.net 这种占位符原样填进去,后面 WebSocket 校验一定会出问题。

五、首次访问时的 pairing 到底是什么

当你第一次从某个浏览器或设备访问 Control UI 时,可能会看到:

pairing required

这不是坏事,说明入口、来源校验和 Gateway 通信其实已经基本通了,只是还差一步设备授权。

你需要做的是:

  1. 在设备上打开 Control UI
  2. 让 Gateway 产生一个 pending pairing request
  3. 在 VPS 上批准这个设备

一旦批准,以后这个设备再访问就会顺很多。

六、电脑和手机的实际使用方式

电脑

安卓手机

手机端体验不一定会像桌面那样完美,但比每次临时开 SSH 隧道已经顺得多。

六点五、实际落地时最容易踩的坑

七、这一阶段最关键的结果是什么

不是“页面能打开”这么简单,而是这三件事都成立:

做到这一步后,OpenClaw 就不再是“只能在你自己电脑上 SSH 进来才用得了”的工具,而是真的变成你的跨设备技术控制台。

上一篇 OpenClaw 接入实战(二):权限设计、目录授权与“尽量少问就把活干完” 专题导读 查看 OpenClaw 接入专题总览与阅读顺序