Tailscale

Tailscale(Gateway 控制台)

OpenClaw 可以自动配置 Tailscale Serve(tailnet)或 Funnel(公共)用于 Gateway 控制台和 WebSocket 端口。
这样 Gateway 可以继续绑定 loopback,而由 Tailscale 提供 HTTPS、路由以及(Serve 下)身份 header。

模式

认证

设置 gateway.auth.mode 控制握手:

tailscale.mode = "serve"gateway.auth.allowTailscaletrue 时,
有效的 Serve 代理请求可通过 Tailscale 身份 header
tailscale-user-login)进行认证,而无需 token/密码。OpenClaw 会通过本地 Tailscale
守护进程(tailscale whois)解析 x-forwarded-for 地址并与 header 匹配,确认身份后接受。
OpenClaw 只在请求来自 loopback 且包含 Tailscale 的 x-forwarded-forx-forwarded-protox-forwarded-host 时视为 Serve。
要强制显式凭证,设置 gateway.auth.allowTailscale: false 或强制 gateway.auth.mode: "password"

配置示例

仅 tailnet(Serve)

{
  gateway: {
    bind: "loopback", // 中文注释:Gateway 仍只监听本地
    tailscale: { mode: "serve" }
  }
}

访问:https://<magicdns>/(或你设置的 gateway.controlUi.basePath

仅 tailnet(绑定 Tailnet IP)

当你想让 Gateway 直接监听 Tailnet IP(无需 Serve/Funnel)时使用:

{
  gateway: {
    bind: "tailnet",
    auth: { mode: "token", token: "your-token" }
  }
}

从另一台 Tailnet 设备连接:

注意:loopback(http://127.0.0.1:18789)在此模式下 不可用

公网(Funnel + 共享密码)

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "funnel" },
    auth: { mode: "password", password: "replace-me" }
  }
}

建议使用 OPENCLAW_GATEWAY_PASSWORD,不要把密码写进磁盘。

CLI 示例

openclaw gateway --tailscale serve # 中文注释:使用 Tailnet Serve
openclaw gateway --tailscale funnel --auth password # 中文注释:使用 Funnel + 密码认证

说明

浏览器控制(远程 Gateway + 本地浏览器)

如果 Gateway 在一台机器上运行,但你想在另一台机器上控制浏览器,
在浏览器机器上运行 节点主机 并保持两台设备在同一 tailnet。
Gateway 会把浏览器动作代理到节点;不需要单独的控制服务器或 Serve URL。

避免对浏览器控制使用 Funnel;把节点配对当作操作员访问。

Tailscale 前置条件 + 限制

了解更多