问题背景
很多频道(如 Telegram Webhook、企业微信、飞书)需要一个公网可访问的 URL 来接收消息回调。如果你的 OpenClaw 运行在家里的电脑或公司内网,传统方案需要:
- 购买云服务器
- 配置域名和 SSL 证书
- 设置端口映射或反向代理
Tailscale Funnel 提供了一个零配置的替代方案。
什么是 Tailscale Funnel?
Tailscale 是一个基于 WireGuard 的零配置 VPN。Funnel 是其公网入口功能,可以将 Tailscale 网络中的服务暴露到互联网,自动提供 HTTPS 域名。
安装 Tailscale
macOS / Linux
# macOS
brew install tailscale
# Ubuntu/Debian
curl -fsSL https://tailscale.com/install.sh | sh
Windows
从 Tailscale 官网 下载安装。
安装后登录:
sudo tailscale up
配置 OpenClaw 使用 Tailscale
在 openclaw.json5 中启用 Tailscale 集成:
{
gateway: {
bind: "tailscale", // 绑定到 Tailscale 网络
tailscale: {
mode: "funnel", // serve | funnel
port: 18789
}
}
}
两种模式的区别:
| 模式 | 访问范围 | 适用场景 |
|---|---|---|
serve |
仅 Tailscale 网络内 | 私有访问,手机远程管理 |
funnel |
公网可访问 | 接收 Webhook 回调 |
启动网关
openclaw gateway
启动后终端会显示分配的公网地址:
[gateway] Tailscale Funnel enabled
[gateway] Public URL: https://your-machine.tailnet-name.ts.net
[gateway] Dashboard: https://your-machine.tailnet-name.ts.net/
配置频道 Webhook
将 Tailscale 分配的 URL 填入频道配置:
Telegram Webhook
{
channels: {
telegram: {
botToken: "123456:ABC-DEF",
webhookUrl: "https://your-machine.tailnet-name.ts.net/webhook/telegram"
}
}
}
飞书 Webhook
{
channels: {
feishu: {
appId: "cli_xxx",
appSecret: "xxx",
webhookUrl: "https://your-machine.tailnet-name.ts.net/webhook/feishu"
}
}
}
使用 Serve 模式远程管理
如果只需要从手机远程访问 Dashboard,使用 serve 模式更安全:
{
gateway: {
tailscale: {
mode: "serve"
}
}
}
在手机上安装 Tailscale 客户端并登录同一账号,即可通过内网地址访问 OpenClaw Dashboard。
安全建议
- 启用认证:Funnel 模式下务必配置 Gateway 认证
{
gateway: {
auth: {
method: "token",
token: "your-secret-token"
}
}
}
- 限制 ACL:在 Tailscale 管理后台配置 ACL 规则,限制 Funnel 的访问端口
- 定期轮换:定期更换 Gateway 的认证 Token
- 监控日志:关注 Gateway 日志中的异常请求
与 ngrok / frp 的对比
| 特性 | Tailscale Funnel | ngrok | frp |
|---|---|---|---|
| 免费额度 | 充足 | 有限 | 需自建服务器 |
| HTTPS | 自动 | 自动 | 需配置 |
| 稳定性 | 高 | 中 | 取决于服务器 |
| 配置复杂度 | 低 | 低 | 高 |
| 固定域名 | ✅ | 付费 | ✅ |
常见问题
Funnel 启动失败
确保在 Tailscale 管理后台启用了 Funnel 功能(需要在 DNS 设置中启用 MagicDNS 和 HTTPS)。
延迟较高
Tailscale Funnel 的流量经由 DERP 中继节点,国内用户延迟可能在 200-500ms。对于 Webhook 场景,这个延迟完全可接受。