cftunnel:一条命令搞定 Cloudflare Tunnel 管理

内网穿透的痛点

本地跑了个服务想让外网访问?家里宽带没有公网 IP,部署云服务器又觉得杀鸡用牛刀。frp、ngrok 这些传统方案要么配置繁琐,要么稳定性堪忧,遇到需要快速演示的场景,光搞定穿透就折腾半天。

cftunnel 就是来解决这个问题的——它把 Cloudflare Tunnel 的管理流程大幅简化,一条命令搞定 tunnel 的创建、启动和管理。

Cloudflare Tunnel 工作原理

Cloudflare Tunnel 采用反向代理架构:本地启动 tunnel 客户端连接 Cloudflare 边缘节点,外部用户访问的是 Cloudflare 域名,流量通过加密隧道直接到达本地服务。

这种架构带来三个核心优势:

  • 无需公网中转服务器,零额外成本
  • Cloudflare 提供 DDoS 防护和全球 CDN 加速
  • 一次配置,长期稳定运行

但官方客户端 cloudflared 对新手不太友好,尤其是多 tunnel 管理时,命令行参数复杂且容易混淆。

cftunnel 核心设计

cftunnel 将 cloudflared 常用操作封装为简洁的子命令,核心理念是:一个服务,一个 tunnel,一行命令

主要功能

  • 一键创建 tunnel:自动生成 tunnel 名称和 UUID,无需手动记录
  • 服务别名:给每个 tunnel 起个好记的名字,方便管理
  • 后台守护进程:确保 tunnel 稳定在线,断线自动重连
  • 统一配置管理:记录所有 tunnel 的映射关系

快速上手

# 安装
curl -fsSL https://raw.githubusercontent.com/你的用户名/cftunnel/main/install.sh | bash

# 创建 tunnel,指向本地 8080 端口
cftunnel create myblog --port 8080 --name "博客服务"

# 启动 tunnel
cftunnel start myblog

# 查看运行状态
cftunnel list

整个过程比直接用 cloudflared tunnel run <UUID> 少打很多参数,cftunnel 会自动处理 credentials 文件路径和 tunnel 注册流程。

与同类工具对比

特性 cftunnel frp/ngrok cloudflared 直接使用
配置复杂度
依赖外部服务器
免费额度 Cloudflare 免费层 有限制 Cloudflare 免费层
多 tunnel 管理 内置 需手动配置 需记忆 UUID
适用场景 个人/小团队快速部署 有公网服务器的场景 进阶用户

对于不需要自定义域名的场景,Cloudflare Tunnel 本身已足够好用,cftunnel 只是在易用性上做了增强。

典型使用场景

场景一:客户演示

本地开发完成后想快速演示给客户,直接运行:

cftunnel create demo --port 3000

分享 Cloudflare 分配的随机子域名,对方即可访问,完全不需要对方安装任何客户端。

场景二:团队协作

OpenClaw 项目开发完成后,需要让团队成员或外部用户快速预览,cftunnel 可以一键创建 tunnel,将本地服务暴露给指定用户,同时通过 Cloudflare 的访问策略控制权限。

场景三:临时调试环境

临时需要公网访问的调试环境,无需购买云服务器,几分钟即可搭建,调试完成后一键删除。

在 OpenClaw 中的应用

OpenClaw 项目产出的内容经常需要外网访问支持。通过 cftunnel,可以让 OpenClaw 的本地服务快速支持外网访问,结合 Cloudflare Zero Trust 的访问策略,还能实现:

  • 基于邮箱域名的访问控制
  • 单点登录集成
  • 访问日志和审计

这样团队成员只需要一个 Cloudflare 账号,就能安全地访问各个内网服务。

总结

cftunnel 不是替代 cloudflared,而是降低了它的使用门槛。如果你经常需要让本地服务快速暴露到公网,又不想维护复杂的穿透配置,可以试试这个工具。从创建到启动一条命令搞定,剩下的交给 Cloudflare 的基础设施。

项目地址:[GitHub 仓库链接],欢迎 Star 和贡献。