云服务器 + Tailscale 把本地 LLM 服务变成公网服务

背景

因为之前鼓捣了一套「全天候办公系统 」,让我的一堆电脑组成了一个办公集群,让我可以随时随地办公。(详见《码农的快乐你不懂:随便一台破电脑,都能远程高效开发!真·零帧起手·爽爆了!》)

所以我是 Tailscale + RustDesk 的重度用户。这不,这个集群最近又加入了一台 AI 服务器(详见《双 16G V100 本地部署 Qwen3.6》)。

所以我就在想,能不能把这个 AI 服务器启动的服务,变成公网服务,这样就能方便各种工具的接入了。

但是内网服务暴露到公网,要么用收费的软件,要么每次启动地址都会变,都不太符合需求。

于是就有了这个方案云服务器 + Tailscale。

步骤

准备

  • 云服务器 :你得有个外网能访问的云服务器,我用的是阿里云的 ECS, 2C2G 的配置就够用了。记得装上 Nginx;
  • 域名 :最好有个域名,否则直接用 IP 访问的话不太方便,也不太安全。买个最便宜的个人域名就行。比如 myname.top;
  • Tailscale:保证你的 ECS 和本地机器上都安装了 Tailscale,并登录在同一个虚拟内网里。进 Tailscale 的后台看看就知道了;
  • 放开 UDP 41641 端口:在 ECS 的安全管理中,放开 UDP 的 41641 端口,这样 Tailscale 才能直连。

做完上面工作,基本网络层面就差不多搭好了。你可以登录 ECS 上,ping 一下你的本地主机的 Tailscale 内网 IP,应该是能通的。

sh 复制代码
tailscale ping 100.115.247.79

pong from mini-ubuntu (100.115.247.79) via DERP(hkg) in 161ms # 不是直连
pong from mini-ubuntu (100.115.247.79) via 101.96.65.126:41641 in 196ms # 直连成功

tailscale status # 查看状态,看是否有 direct 字样

奇怪,为什么我测试的 DERP 比直连还快呢......

配置 Nginx

首先,你要把域名的 DNS 配到你的 ECS 的公网 IP 上。比如 test.myname.top 到 114.113.112.111。

然后,配置 ECS 的 Nginx:

sh 复制代码
cd /etc/nginx/conf.d
touch test.myname.top.conf

然后把下面的内容粘贴进去:

sh 复制代码
server {
    listen 80;
    server_name test.myname.top; # 你的域名

    location / {
        proxy_pass http://100.100.99.99:5678; # 本地服务的 Tailscale IP + 服务端口

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

然后

sh 复制代码
sudo nginx -t

sudo nginx -s reload

这时候,如果你启动了本地服务,那么访问 test.myname.top 的时候,应该就能访问到了。

注意,如果没访问成功,看看你的本地服务是不是起在了 127.0.0.1:5678 上,改成 0.0.0.0:5678 试试。

增加 HTTPS

如果想进一步配置 HTTPS,就安装 certbot 上免费证书即可。

sh 复制代码
sudo dnf install certbot python3-certbot-nginx -y

sudo certbot --nginx -d test.myname.top

第一次使用,应该会让你输入个邮箱,输入个能用的就行。

注意,上了 HTTPS 之后,你的本地服务可能需要一些配置上的调整,否则可能造成访问失败等问题。

结语

感觉打开了新世界的大门了,也许我的一堆被当成服务器使用的废电脑,能压榨出更多的价值了。

另外,需要注意的是,如果你部署的是网页服务,那么很有可能会因为备案之类的问题被拦截。

所以最好还是提供接口方面的服务比较好。

当然,这个方案的稳定性肯定比不上直接在 ECS 上装服务了,但是在一些非严肃、小范围使用的场景下,还是比较合适的。

它可以突破 ECS 配置的限制,把本地算力部署上去,还是比较有想象力的。

等后面再玩出别的花样,我再来分享~

相关推荐
范桂飓13 小时前
AWS Strands Agents 技术解析
人工智能·云计算·aws
workflower15 小时前
AI 产业链带动效应加速,催生AI 原生企业
人工智能·机器学习·机器人·云计算·无人机
GPU实战笔记1 天前
云端服务启动后浏览器访问失败:先查端口链路还是重装应用?
云计算·web服务·故障排查·端口访问
sbjdhjd1 天前
云安全 | Docker 容器逃逸复盘(二):2375 未授权接口如何突破容器管理边界
网络安全·docker·云原生·数据挖掘·开源·云计算·云安全
star_start_sky2 天前
华为认证 HCIA、HCIP、HCIE 怎么选?数通、云、存储、安全路线详解
华为云·云计算·华为认证·技术学习·备考指南
翼龙云_cloud2 天前
阿里云国际代理商:ECS部署DeepSeek大模型指南
服务器·阿里云·大模型·云计算
GPU实战笔记2 天前
云端任务输出增长后:本地扩容数据盘与项目网盘的关机计费边界
云计算·gpu租用·云端gpu·存储计费·项目网盘
sbjdhjd3 天前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
网络安全·docker·云原生·容器·kubernetes·云计算·云安全
deepseek233 天前
硬预算帽默认值拆解:AWS 九月上线支出上限、GCP 七月跟进,Agent 时代按量付费必须默认断供
人工智能·llm·云计算·agent·aws