Cloudflare Tunnel:零成本把本地服务暴露到公网
在开发 AI 应用时,我经常需要让外部访问本机运行的服务——比如给朋友测试、或者手机上调试。传统方法要么需要公网 IP,要么用 ngrok(有流量限制)。后来发现 Cloudflare Tunnel 完全免费,且稳定性更好。
原理
Cloudflare Tunnel 的工作方式:
访客 → Cloudflare 边缘节点 → 加密隧道 → 你的本机 → 本地服务本机运行一个叫 cloudflared 的守护进程,主动向 Cloudflare 建立出站连接。这意味着你不需要开放任何入站端口,防火墙设置也不用改。
安装
bash
# macOS
brew install cloudflare/cloudflare/cloudflared
# Linux
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb配置
bash
# 登录(会弹出浏览器授权)
cloudflared tunnel login
# 创建 tunnel
cloudflared tunnel create my-app
# 路由域名到 tunnel
cloudflared tunnel route dns my-app app.yourdomain.com生成 ~/.cloudflared/config.yml:
yaml
tunnel: <TUNNEL_ID>
credentials-file: ~/.cloudflared/<TUNNEL_ID>.json
protocol: http2
ingress:
- hostname: app.yourdomain.com
service: http://localhost:8000
originRequest:
connectTimeout: 30s
- service: http_status:404启动
bash
# 前台测试
cloudflared tunnel run my-app
# 注册为系统服务(开机自启)
sudo cloudflared service install注意事项
- 国内访问速度受 Cloudflare 线路影响,偶尔较慢(晚高峰)
- 服务中断时需要切换到备用方案(如阿里云 VPS)
- 免费版无流量限制,但有合理使用条款
这套方案是我 Psycho 项目的主要发布方式,目前运行非常稳定。