乐于分享
好东西不私藏

【技术分享】2小时踩坑记:如何让AI助手通过Tailscale安全暴露Web界面

【技术分享】2小时踩坑记:如何让AI助手通过Tailscale安全暴露Web界面

本文记录了一次真实的运维踩坑经历:如何让部署在VPS上的AI助手(OpenClaw)通过Tailscale安全地暴露Web管理界面,避免SSH隧道的繁琐。

背景:为什么需要这个配置?

我有一台腾讯云VPS(2核2G),上面跑着我的AI助手”星期三”。之前一直通过SSH隧道访问它的Web管理界面,每次都要输入命令,实在麻烦。

需求很简单:在本地电脑上直接打开浏览器就能访问,就像访问本地服务一样。

安全要求:不能直接暴露公网端口,毕竟AI助手能执行命令,安全第一。

技术选型:为什么是Tailscale?

对比了几个方案:

1. SSH隧道 ✅ 安全,但每次都要输命令

2. 直接暴露端口 ❌ 太危险,绝对不行

3. Tailscale ✅✅ 完美匹配需求

Tailscale的优势:

– 基于WireGuard,点对点加密

– 只有加入同一网络的设备能访问

– 自动提供HTTPS证书

– 不需要配置防火墙规则

踩坑实录:从早8点到早10点

第一坑:版本兼容性问题

错误配置:

json"bind""tailscale","tailscale": {  "mode""daemon"}

正确配置(OpenClaw 4.1):

json"bind""loopback","tailscale": {  "mode""serve"}

教训: 新版本API变了,文档没及时更新。

第二坑:WebSocket安全限制

现象:页面能打开,但登录后一直转圈。

错误信息:

SECURITY ERROR: Cannot connect over plaintext ws://

原因:OpenClaw要求远程WebSocket必须用安全的wss://(HTTPS)。

解决方案:

1. 用Tailscale的HTTPS域名(自动有证书)

2. 或者允许不安全连接(仅限Tailscale内网)

第三坑:CORS跨域问题

现象: 

origin not allowed

原因:浏览器安全策略,需要显式允许来源。

解决方案:在配置里加上自己的域名/IP。

第四坑:Tailscale Serve配置

错误命令:

bashtailscale serve --bg 443 127.0.0.1:port(你的端口号,openclaw默认是18789

正确命令:

bashtailscale serve port(你的端口号,openclaw默认是18789

额外步骤:

1. 要在Tailscale管理页面启用Serve功能

2. 可能需要设备配对:`sudo tailscale pair`

3. 设置operator权限避免每次用sudo

最终方案:最佳实践配置

OpenClaw配置(openclaw.json)

`json{  "gateway": {    "port": 你的port,    "bind""loopback",    "controlUi": {      "allowInsecureAuth"true,      "allowedOrigins": [        "https://我的VPS.tailscale域名.ts.net"      ]    },    "tailscale": {      "mode""serve",      "resetOnExit"true    }  }}

Tailscale命令

bash# 启用Serve功能(网页点一下)# 设置operator权限(避免sudo)sudo tailscale set --operator=$USER
# 暴露端口tailscale serve 你的port

神奇的效果

配置完成后,发生了神奇的事情:

1. 本地电脑访问:

http://127.0.0.1/` ← Tailscale自动映射

2. 任何Tailscale设备: 

https://我的VPS.tailscale域名.ts.net

3. 就像访问本地服务一样自然

经验总结

技术层面

1. 安全第一: `loopback`绑定+Tailcale Serve是最佳组合

2. 版本注意: 新版本API可能有变化

3. HTTPS必须: 现代浏览器对WebSocket安全要求严格

运维层面

1. 文档价值:踩坑过程一定要记录

2. 逐步调试:从错误信息入手,不要盲目尝试

3. 社区资源:Tailscale和OpenClaw文档都很详细

适用场景

这个方案适合:

– ✅ 个人项目/实验环境

– ✅ 小团队内部工具

– ✅ 需要从多设备访问的服务

– ✅ 对安全有要求但不想搞复杂VPN

不适合:

– ❌ 需要公网访问的场景(用Tailscale Funnel)

– ❌ 大规模生产环境

最后

耗时:2.5小时(大部分在查文档和试错)

结果: ✅ 完美解决

心情: 从”这什么鬼”到”原来如此”的典型技术人体验

技术就是这样,踩坑的时候很痛苦,解决后的成就感也很真实。下一步打算让家里的NUC也能访问vps openclaw的webchat。

*本文基于真实踩坑经历整理,希望对你有帮助。