2 min read

用 Tailscale Serve 把本地服务变成内网 HTTPS 访问,超简单!

最近在搞内网开发环境搭建,遇到一个挺头疼的问题:本地跑的服务怎么让同事通过内网访问?而且还得是 HTTPS 的...

以前我都是用 frp 之类的内网穿透工具,配置起来还挺麻烦。直到发现了 Tailscale 的 serve 功能,简直是神器!

Tailscale serve 是啥?简单说就是让你把本地服务通过 Tailscale 的网络暴露出去,还自动配上 HTTPS 证书。对于内网开发测试场景再合适不过了。

下面我来一步步教你怎么用:

第一步:在控制台创建服务

先打开 Tailscale 的管理后台,进入 https://login.tailscale.com/admin/services

点击 "Define a Service" 新建一个服务。这里有几个关键配置:

  • Service name: 这就是你后面访问的域名,比如我设为 "myapp",那后面访问地址就是 https://myapp.tailnet-name.ts.net
  • Ports: 固定填 443,因为我们要用 HTTPS

填好后保存就行。

第二步:在服务所在机器上配置代理

SSH 到跑着本地服务的机器上,比如你的服务跑在 localhost:3000,那就执行:

sudo tailscale serve --service=svc:servicename --https=443 127.0.0.1:3000

注意把 servicename 换成你在第一步设置的 Service name。

这个命令的意思就是:把本地的 127.0.0.1:3000 服务,通过 Tailscale serve 暴露出去,映射到 Tailscale 分配的域名的 443 端口。

第三步:回到控制台审批

配置完代理后,回到 Tailscale 管理后台,你会看到刚才创建的服务处于等待审批的状态,点击 "Approval" 就行了。

搞定!现在你的内网其他设备(只要加入同一个 Tailscale 网络)就可以通过 HTTPS 访问你的本地服务了。

一些小技巧

  • 服务端口不要用 80,直接上 HTTPS 更安全
  • 域名最好用有意义的名字,方便团队其他成员识别
  • 如果服务端口变了,重新执行第二步的命令就行
  • 停止服务可以用 sudo tailscale serve stop

相比于传统的内网穿透方案,Tailscale serve 有几个明显优势:

  1. 零配置证书:HTTPS 证书自动搞定,不用自己折腾 Let's Encrypt
  2. 安全可靠:基于 Tailscale 的私有网络,只有授权的设备才能访问
  3. 操作简单:几条命令搞定,不用配置复杂的端口映射

好了,这就是 Tailscale serve 的使用方法,希望能帮到有同样需求的你!