cftunnel 体验报告:Cloudflare Tunnel 一键管理,让内网穿透零门槛
公网访问本地服务:开发者的真实痛点
开发微信小程序需要回调地址,本地运行的服务要给客户演示,树莓派上的监控要远程查看。这些场景背后都有一个共同需求:把内网服务暴露到公网。
传统方案要么需要一台公网服务器做中转,要么要折腾 DDNS 配置,还要操心证书续期。cloudflared 原生的配置流程对新手并不友好:下载二进制、创建 tunnel、配置路由、编写 systemd 服务……一通操作下来,命令行参数能写满一张 A4 纸。
cftunnel 正是为解决这个问题而生。
核心原理:封装 cloudflared 的命令行封装
cftunnel 本质上是对 cloudflared 的封装与增强。它的工作流程如下:
┌─────────────┐ HTTPS ┌─────────────┐ HTTP ┌─────────────┐
│ 用户终端 │ ───────────► │ Cloudflare │ ───────────► │ 本地服务 │
│ (浏览器/客户端) │ ◄─────────── │ 边缘节点 │ ◄─────────── │ (localhost) │
└─────────────┘ └─────────────┘ └─────────────┘
▲
│
┌─────────────┐
│ cftunnel │
│ (管理进程) │
└─────────────┘
- cftunnel 调用 cloudflared 创建 tunnel,生成唯一的 tunnel ID
- DNS 记录指向
<tunnel-id>.cfargotunnel.com - Cloudflare 边缘节点接收请求,通过长连接转发至本地
- 全程 TLS 加密,自动获得 Cloudflare 免费 SSL 证书
整个过程中,数据经过 Cloudflare 边缘节点转发,无需暴露真实 IP,也不需要在路由器上做端口映射。
安装与快速上手
支持主流操作系统,一行命令即可完成安装:
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/openclaw/cftunnel/main/install.sh | bash
# 验证安装
cftunnel --version
# 输出: cftunnel version 0.8.1
创建隧道并启动服务只需三步:
# 一键创建 tunnel(自动配置 Cloudflare 凭证)
cftunnel tunnel create my-service
# 启动隧道,暴露本地 8080 端口
cftunnel tunnel run my-service --port 8080
# 访问输出中的 URL 即可在公网访问本地服务
对于 OpenClaw 用户,cftunnel 提供了更深入的集成:
# OpenClaw 环境下一键启动
cftunnel openclaw enable
# 查看隧道状态
cftunnel status
竞品对比
| 特性 | cftunnel | 原生 cloudflared | frp | ngrok |
|---|---|---|---|---|
| 配置复杂度 | ★☆☆☆☆ | ★★★★☆ | ★★★☆☆ | ★★☆☆☆ |
| 商业依赖 | 无 | 无 | 需公网服务器 | 需付费账号 |
| 自托管 | ✓ | ✓ | ✓ | ✗ |
| OpenClaw 集成 | ✓ | ✗ | ✗ | ✗ |
| 自动重连 | ✓ | 需配置 | ✓ | ✓ |
最大的差异在于 OpenClaw 深度集成。对于已经在使用 OpenClaw 的用户,cftunnel 提供了原生的配置同步和状态监控能力,真正做到「开箱即用」。
适用场景
快速演示
本地开发完成后,立即生成公网 URL 分享给客户测试,无需部署到测试服务器。
家庭网络
远程访问 NAS、软路由或树莓派上的服务。比如在办公室查看家里 NAS 上的文件,或者远程管理家里的 HomeAssistant。
Webhook 开发
调试需要公网回调的接口(如 GitHub Webhook、微信支付回调)。本地起服务,一行命令暴露到公网,省去反复部署的麻烦。
内网穿透学习
学生学习网络穿透原理的入门工具。cftunnel 的命令行设计直观,查看帮助文档即可理解 tunnel 的工作方式。
对于追求稳定生产环境的企业用户,仍建议深入了解 cloudflared 的完整配置选项;cftunnel 则更适合快速原型验证和个人使用场景。
感兴趣的朋友可以前往 GitHub 项目页面了解更多信息: