2026-10-19

免费出海策略(2):Cloudflare Tunnel——没公网 IP,也能把本地服务变成 https

免费出海策略(2):Cloudflare Tunnel——没公网 IP,也能把本地服务变成 https

一句话导读:家里电脑或便宜 VPS 上跑的网站/机器人后台,没有公网 IP、不能开防火墙端口,照样能变成 https://xxx.你的域名.com 公开访问。Cloudflare Tunnel 免费、自动上 HTTPS,还能给敏感后台加一道邮箱登录墙。

前置条件(需要什么)

分步骤

步骤 1:在 Zero Trust 面板创建一个 Tunnel

登录 Cloudflare 后进 Zero Trust(one.dash.cloudflare.com)→ 左侧 Networks → Tunnels → Create a tunnel → 连接器选 Cloudflared → 起个名字(比如 homelab)→ 保存。面板会给你一串 token(很长的 base64 字符串),复制好,它只显示一次,丢了就重新生成。官方文档把全流程压缩在 5 分钟内。

Cloudflare 官方文档:创建第一个 Tunnel

步骤 2:在服务器上装 cloudflared,用 token 跑起来

按你机器的系统二选一(任选一条路):

# 路线 A:Debian/Ubuntu 直接装
curl -L https://pkg.cloudflare.com/install.sh | sudo bash
sudo apt install cloudflared
sudo cloudflared service install <上一步复制的TOKEN>
# 注册成系统服务,开机自启、崩了自动重启

# 路线 B:Docker 一条命令(已有 Docker 的直接用)
docker run -d --name cf-tunnel --restart unless-stopped \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run --token <上一步复制的TOKEN>

回到 Zero Trust 面板,Tunnel 状态变绿 Healthy 就是通了。原理:cloudflared 从你的机器向外连 Cloudflare 边缘,不需要你开任何入站端口,防火墙保持关闭也行。

Docker 部署 Cloudflare Tunnel 分步教程

步骤 3:配一个公网域名指向本地服务

回到 Tunnel 页面 → Public Hostname 标签 → Add a public hostname,按表填:

字段 填什么(示例)
Subdomain bot
Domain 你的域名.com
Service Type HTTP
URL localhost:3000

保存后 Cloudflare 自动建一条 DNS CNAME(bot.你的域名.com → <tunnel-id>.cfargotunnel.com)。浏览器打开 https://bot.你的域名.com,证书是 Cloudflare 边缘自动发的,你本地完全不用配 TLS。

一个 Tunnel 可以挂多个域名/多个本地端口:再加一条 Public Hostname 就行,比如 api.你的域名.com → localhost:8080。

2026 年实测:localhost 挂域名全流程

步骤 4(可选):临时分享 & 给后台加登录墙

注意事项、费用、坑点

来源