Tailscale 是 OpenClaw 远程访问的首选方案:无需手动配置端口转发,自动提供 HTTPS,并通过 Tailscale 身份认证增强安全性。OpenClaw 内置了 Tailscale 集成,可自动配置 Serve(内网)或 Funnel(公网)模式。
三种模式
| 模式 | 说明 | 安全级别 |
|---|---|---|
off | 不使用 Tailscale 自动化(默认) | — |
serve | Tailnet 内网访问,通过 tailscale serve | 最高 |
funnel | 公网 HTTPS,通过 tailscale funnel | 中等 |
配置示例
方案一:仅内网(Serve,推荐)
Gateway 绑定本地,Tailscale Serve 提供内网 HTTPS:
{
"gateway": {
"bind": "loopback",
"tailscale": { "mode": "serve" }
}
}访问地址:https://<magicdns>/(或自定义的 gateway.controlUi.basePath)
Tailscale 身份认证可免去手动输入 token/password:
{
"gateway": {
"bind": "loopback",
"tailscale": { "mode": "serve" },
"auth": { "allowTailscale": true }
}
}OpenClaw 通过验证请求来源(
tailscale whois匹配 IP + 身份头部)确认 Tailscale 身份的真实性,HTTP API 端点仍需 token/password。
方案二:直接绑定 Tailnet IP(无 Serve/Funnel)
{
"gateway": {
"bind": "tailnet",
"auth": { "mode": "token", "token": "your-token" }
}
}从其他 Tailnet 设备访问:
- Control UI:
http://<tailscale-ip>:18789/ - WebSocket:
ws://<tailscale-ip>:18789
注意:此模式下
http://127.0.0.1:18789不可用。
方案三:公网(Funnel + 共享密码)
{
"gateway": {
"bind": "loopback",
"tailscale": { "mode": "funnel" },
"auth": { "mode": "password", "password": "replace-me" }
}
}密码推荐通过环境变量设置:
OPENCLAW_GATEWAY_PASSWORD=...,避免明文写入配置文件。
注意:Funnel 模式必须配置 password 认证,否则 OpenClaw 拒绝启动(防止意外公网暴露)。
CLI 快速启动
openclaw gateway --tailscale serve
openclaw gateway --tailscale funnel --auth password浏览器控制(远程 Gateway + 本地浏览器)
如果 Gateway 运行在远端机器,但需要控制本地浏览器:
- 在浏览器所在机器运行一个 node host
- 两台机器都在同一 Tailnet
- Gateway 通过 Tailnet 将浏览器操作代理到 node
不要用 Funnel 做浏览器控制,node 配对应该视同操作员访问,保持内网。
注意事项
- Tailscale Serve/Funnel 需要
tailscaleCLI 已安装并登录 gateway.bind: "auto"优先选择 loopback;需要 Tailnet 直连时用tailnet- Serve/Funnel 只暴露 Gateway 控制 UI + WebSocket,Node 通过同一 WebSocket 端点连接
- 设置
gateway.tailscale.resetOnExit: true可在关闭时自动清除 Tailscale 配置
前置条件与限制
- Tailscale 账号需开通 Funnel 功能(免费账号有 Funnel 限制)
- Funnel 的公网 URL 格式:
https://<node>.<tailnet>.ts.net/ - Tailscale Serve 的 MagicDNS URL 只在 tailnet 内部可访问
原文:Tailscale - OpenClaw | 来源:OpenClaw 官方文档