告别复杂配置:cftunnel 让 Cloudflare Tunnel 管理变得如此简单
先抛痛点:一次糟糕的 Tunnel 配置经历
上周给客户部署演示环境,需要把本地 3000 端口暴露出去。打开终端,一通操作:创建 tunnel、配置 DNS 路由、设置权限、后台运行……跑了两趟才成功。
如果只是想让同事快速预览本地效果,这些步骤确实过于繁琐。cftunnel 就是为解决这个场景而生的——把复杂的 tunnel 管理流程压缩成几次简单的配置操作。
Cloudflare Tunnel 的工作原理
在深入 cftunnel 之前,先理清 Cloudflare Tunnel 的技术链路:
用户请求 → Cloudflare 边缘节点 → 加密隧道 → 本地服务
传统方案需要开放防火墙端口,而 Cloudflare Tunnel 的做法是让你的服务器主动向 Cloudflare 建立出站连接。公网流量通过这条隧道反向代理到内网,真实 IP 完全隐藏。
这套机制的优势在于:无需路由器端口映射、不暴露服务器地址、且流量默认经过 Cloudflare CDN 加速。
cftunnel 如何简化管理流程
cftunnel(v0.8.1)做的事情很明确——用配置文件替代手敲命令。
传统方式
cloudflared tunnel create my-tunnel
cloudflared tunnel route dns my-tunnel tunnel.example.com
cloudflared tunnel run --token ${TOKEN}
需要记忆子命令、参数顺序、token 管理……出问题了只能靠日志排查。
cftunnel 方式
一个 YAML 配置文件搞定:
tunnels:
- name: demo-site
token: "$TUNNEL_TOKEN"
services:
- url: http://localhost:3000
host: tunnel.example.com
daemon: true
log_level: info
启动命令:
cftunnel run --config cftunnel.yaml
配置文件可以提交到仓库,多项目切换时一目了然,不像命令行参数那样难以追溯。
多隧道统一管理
当本地同时跑着三四个项目时,cftunnel 可以集中管理所有 tunnel 状态,避免开一堆终端窗口。配置文件里列出所有隧道,启动后后台运行,按需切换。
快速部署指南
安装
go install github.com/你的用户名/cftunnel@latest
或者下载预编译二进制:
curl -fsSL https://example.com/install.sh | sh
暴露本地 Web 服务
准备好 Cloudflare Token 后,创建 config.yaml:
tunnels:
- name: web-dev
token: "你的-token"
services:
- url: http://localhost:8080
host: dev.example.com
运行:
cftunnel run -c config.yaml
成功后访问 dev.example.com 即可到达本地 8080 端口。
暴露 SSH 端口(远程开发场景)
有时候需要从外网 SSH 到本地机器:
tunnels:
- name: ssh-access
token: "你的-token"
services:
- url: ssh://localhost:22
host: ssh.example.com
配合 Cloudflare Access 策略,可以做到免密码+设备验证的远程访问,比直接开放 22 端口安全得多。
与主流方案横向对比
| 维度 | cftunnel | frp | ngrok |
|---|---|---|---|
| 部署难度 | 低 | 中 | 低 |
| 自托管支持 | ✅ | ✅ | ❌(仅云服务) |
| 成本 | 免费(Cloudflare 配额外) | 免费 | 有限免费额度 |
| 配置文件管理 | ✅ | ✅ | ❌ |
| 多隧道管理 | ✅ | ✅ | ❌ |
| 开源可审计 | ✅ | ✅ | ❌ |
frp 的优势是完全自控制,适合对数据完全隔离有要求的场景。ngrok 开箱即用但无法私有部署。cftunnel 介于两者之间——利用 Cloudflare 基础设施,同时保持配置的可控性。
实际应用场景
本地开发预览:写好 demo 后丢给甲方看,不再需要 deploy 到测试服务器。
Webhook 调试:接收 Stripe、GitHub 等第三方回调,无需部署公网服务即可调试签名逻辑。
临时技术分享:线下分享时暴露本地服务,演示完毕关闭即可。
这些场景的特点是临时性、低频次,用完即走。cftunnel 比传统部署方案更契合这种使用模式。
开始尝试
项目已开源,可访问 GitHub 页面查看源码和文档。如果你有改进想法,欢迎提 Issue 或 PR。
如果本文帮你解决了问题,欢迎给项目点个 Star。