Tailscale(Gateway 网关仪表盘)
OpenClaw 可以为 Gateway 网关仪表盘和 WebSocket 端口自动配置 Tailscale Serve(tailnet)或 Funnel(公共)。这使 Gateway 网关保持绑定到 loopback,同时 Tailscale 提供 HTTPS、路由和(对于 Serve)身份头。 This keeps the Gateway bound to loopback while Tailscale provides HTTPS, routing, and (for Serve) identity headers.模式
serve:仅限 Tailnet 的 Serve,通过tailscale serve。Gateway 网关保持在127.0.0.1上。 The gateway stays on127.0.0.1.funnel:通过tailscale funnel的公共 HTTPS。OpenClaw 需要共享密码。 OpenClaw requires a shared password.off:默认(无 Tailscale 自动化)。
认证
设置gateway.auth.mode 来控制握手:
token(设置OPENCLAW_GATEWAY_TOKEN时的默认值)password(通过OPENCLAW_GATEWAY_PASSWORD或配置的共享密钥)
tailscale.mode = "serve" 且 gateway.auth.allowTailscale 为 true 时,
有效的 Serve 代理请求可以通过 Tailscale 身份头(tailscale-user-login)进行认证,无需提供令牌/密码。OpenClaw 通过本地 Tailscale 守护进程(tailscale whois)解析 x-forwarded-for 地址并将其与头匹配来验证身份,然后才接受它。
OpenClaw 仅在请求从 loopback 到达并带有 Tailscale 的 x-forwarded-for、x-forwarded-proto 和 x-forwarded-host 头时才将其视为 Serve 请求。
要要求显式凭证,设置 gateway.auth.allowTailscale: false 或强制 gateway.auth.mode: "password"。 OpenClaw verifies
the identity by resolving the x-forwarded-for address via the local Tailscale
daemon (tailscale whois) and matching it to the header before accepting it.
OpenClaw only treats a request as Serve when it arrives from loopback with
Tailscale’s x-forwarded-for, x-forwarded-proto, and x-forwarded-host
headers.
To require explicit credentials, set gateway.auth.allowTailscale: false or
force gateway.auth.mode: "password".
配置示例
仅限 Tailnet(Serve)
https://<magicdns>/(或你配置的 gateway.controlUi.basePath)
仅限 Tailnet(绑定到 Tailnet IP)
当你希望 Gateway 网关直接监听 Tailnet IP 时使用此方式(无 Serve/Funnel)。- 控制 UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
http://127.0.0.1:18789)将不工作。
公共互联网(Funnel + 共享密码)
OPENCLAW_GATEWAY_PASSWORD 而不是将密码提交到磁盘。
CLI 示例
注意事项
- Tailscale Serve/Funnel 需要安装并登录
tailscaleCLI。 tailscale.mode: "funnel"除非认证模式为password,否则拒绝启动,以避免公共暴露。- 如果你希望 OpenClaw 在关闭时撤销
tailscale serve或tailscale funnel配置,设置gateway.tailscale.resetOnExit。 gateway.bind: "tailnet"是直接 Tailnet 绑定(无 HTTPS,无 Serve/Funnel)。gateway.bind: "auto"优先 loopback;如果你想要仅 Tailnet,使用tailnet。- Serve/Funnel 仅暴露 Gateway 网关控制 UI + WS。节点通过相同的 Gateway 网关 WS 端点连接,因此 Serve 可以用于节点访问。 节点通过 同一个 Gateway WS 端点连接,因此 Serve 可以用于节点访问。
浏览器控制(远程 Gateway 网关 + 本地浏览器)
如果你在一台机器上运行 Gateway 网关但想在另一台机器上驱动浏览器, 在浏览器机器上运行一个节点主机并让两者保持在同一个 tailnet 上。 Gateway 网关会将浏览器操作代理到节点;不需要单独的控制服务器或 Serve URL。 Gateway 会将浏览器操作代理到节点;不需要单独的控制服务器或 Serve URL。 避免将 Funnel 用于浏览器控制;将节点配对视为操作者访问。Tailscale 前提条件 + 限制
- Serve 需要为你的 tailnet 启用 HTTPS;如果缺少,CLI 会提示。
- Serve 注入 Tailscale 身份头;Funnel 不会。
- Funnel 需要 Tailscale v1.38.3+、MagicDNS、启用 HTTPS 和 funnel 节点属性。
- Funnel 仅支持通过 TLS 的端口
443、8443和10000。 - macOS 上的 Funnel 需要开源 Tailscale 应用变体。
了解更多
- Tailscale Serve 概述:https://tailscale.com/kb/1312/serve
tailscale serve命令:https://tailscale.com/kb/1242/tailscale-serve- Tailscale Funnel 概述:https://tailscale.com/kb/1223/tailscale-funnel
tailscale funnel命令:https://tailscale.com/kb/1311/tailscale-funnel