cftunnel 教程:3步实现 OpenClaw 内网穿透(附配置详解)
为什么你的 OpenClaw 插件只能本地访问?
本地开发了一个 OpenClaw 插件,想让外地的同事或客户预览效果。问题来了:
没有公网服务器,想让同事访问你的本地开发环境,要么得折腾半天端口映射,要么得花钱买云服务器。更麻烦的是,直接暴露端口还存在安全风险。
传统方案的问题:
- frp:需要自己维护一台中转服务器,配置繁琐
- ngrok:免费额度有限,想绑自定义域名就得付费
- 端口映射:公司网络往往没有路由权限,根本没法操作
如果你的团队正在用 OpenClaw 做开发,有一个更省心的选择:cftunnel。
cftunnel 是什么
cftunnel 是一个 Cloudflare Tunnel 管理工具,核心功能是简化 tunnel 的创建、配置和管理流程。截至目前版本 0.8.1,在 GitHub 已获得 277 颗星。
它解决的问题很明确:让你不需要记忆 cloudflared 的各种命令行参数,通过一条命令完成内网穿透。
核心原理
Cloudflare Tunnel 的数据流向:
本地服务 → cloudflared 客户端 → Cloudflare Edge → 用户
cftunnel 在这个链路中扮演「配置管理」角色,自动完成配置文件生成、证书认证和 tunnel 生命周期管理。
相比传统反向代理,Cloudflare Tunnel 的核心优势在于不需要暴露任何端口到公网,流量经过 Cloudflare 加密转发,从根本上降低了被扫描和攻击的风险。
快速安装
环境要求
- Python 3.8+
- 已安装 cloudflared
- Cloudflare 账号(免费即可)
第一步:安装 cloudflared
# Linux/macOS 用户
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared
# Windows 用户可在 https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads 下载对应版本
# 验证安装
cloudflared --version
第二步:安装 cftunnel
git clone https://github.com/你的用户名/cftunnel.git
cd cftunnel
pip install -r requirements.txt
安装完成后,你可以用 python cftunnel.py --help 查看支持的命令。
3步完成内网穿透
第一步:认证
cloudflared tunnel login
命令执行后,浏览器会自动打开 Cloudflare 授权页面。登录你的账号并点击「Authorize」即可。认证成功后,证书文件会保存在 ~/.cloudflared/ 目录。
第二步:创建 tunnel
# 创建名为 my-tunnel 的 tunnel
python cftunnel.py create my-tunnel
# 查看已创建的 tunnel 列表
python cftunnel.py list
第三步:配置并启动
编辑项目根目录的 config.yaml:
tunnel_name: my-tunnel
services:
- name: openclaw-web
url: http://localhost:8080
domain: openclaw.yourdomain.com
- name: openclaw-api
url: http://localhost:3000
domain: api.yourdomain.com
然后启动:
python cftunnel.py start
启动后,访问 openclaw.yourdomain.com 即可映射到本地 http://localhost:8080。
工具对比
| 特性 | cftunnel | frp | ngrok |
|---|---|---|---|
| 部署难度 | 低 | 中 | 低 |
| 自托管 | 支持 | 支持 | 不支持 |
| 费用 | 免费 | 免费 | 基础免费 |
| 协议支持 | HTTP/HTTPS | 多协议 | HTTP/HTTPS |
| 管理界面 | 有 | 无 | 有 |
| OpenClaw 适配 | 原生支持 | 需手动配置 | 需手动配置 |
对于 OpenClaw 开发者来说,cftunnel 的优势在于开箱即用,省去了大量配置时间。
常见问题
Q: tunnel 启动后很快断开怎么办?
检查网络稳定性,cloudflared 默认会维持长连接。如果频繁断连,可以在 config.yaml 中添加:
tunnel_name: my-tunnel
retries: 5
Q: 如何查看 tunnel 日志?
cloudflared tunnel run my-tunnel --logleging debug
Q: 能自定义子域名吗?
可以。在 Cloudflare DNS 中添加一条 CNAME 记录,指向你的 tunnel ID 即可:
CNAME openclaw your-tunnel-id.cfargotunnel.com
适用场景
本地开发预览:写完插件后立刻分享给同事测试,不用部署到服务器。
客户演示:在客户现场演示时,直接用本地环境展示,不用提前部署。
小团队协作:后端、本地前端、数据库都在本地,通过 tunnel 共享给团队成员,无需每个人都单独配置。
如果你正在用 OpenClaw 做开发或运维,可以直接去 GitHub 下载 cftunnel,配置文件示例已在仓库中提供。遇到问题可以提 issue,社区响应通常在 24 小时内。