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 小时内。