对于用frp实现内网穿透,虽然它功能强大,但自建服务端+双端配置+证书维护的门槛确实太高;看到 Cloudflare Tunnel 不用零成本,免公网IP,加密安全,就决定试一下。整套方案用宝塔建站点,Docker 跑隧道,命令不多,步骤也不复杂,正好适合。
写这篇的目的很简单:把我自己踩过的坑和最终稳定的配置记下来,也方便有同样需求照抄就能用。
一、方案速览
让国内服务器主动连接 Cloudflare,而非暴露公网端口
- 宝塔负责建站点、配SSL、反代理,不用开 80/443
- Docker里跑官方 cloudflared 镜像,一键开机自启
- Cloudflare 边缘负责CDN、防doss攻击
二、准备清单
| 组件 | 要求 |
|---|---|
| 服务器 | 轻量 1H1G 及以上 |
| 系统 | CentOS 7+ / Ubuntu 20+ 宝塔 |
| 域名 | 任意后缀,已转 CF DNS (Cloudflare) |
三、步骤
软件商店 → Docker → 安装 → 完成
- 注册登录 dash.cloudflare.com
域名与账号配置
- 注册 Cloudflare 账号并完成邮箱验证(建议使用 Gmail 等国际邮箱)。
- 将已有域名托管至 Cloudflare:进入域名注册商后台(如阿里云、华为云),将 DNS 服务器替换为 Cloudflare 提供的地址(例如 mike.ns.cloudflare.com)。
- 绑定付款方式:支持国际信用卡、借记卡或 PayPal,仅用于身份验证(支付金额为 0 元,服务免费)。

创建 Cloudflare Zero Trust 团队
- 确认是 0 元免费就可以继续支付了。

- 免费计划:不添加付款方式不让下一步,你可以点 Next 后输入付款方式。

- 零元购。
{/collapse-item}
- 配置Tunnels
Zero Trust → Networks → Tunnels → Add a tunnel(添加隧道)
选择 Cloudflared,名字随意(如
bt-tunnel)→ Save 保存



点击 Docker 图标 → 复制 token(acA..)
{/collapse-item}
宝塔 → Docker → 容器 → 创建容器 → 命令创建
粘贴下方命令(token acA..换成你自己的):
docker run -d --rm --network host cloudflare/cloudflared:latest tunnel --token acA..→ 提交,看到状态 Up 就OK啦
网站 → 添加站点
- 域名:
xxxxx.xxx - 端口:
1999(随机选,避开常用端口80/443...) - 绑定:
xxxx.xxxx:1999 - → 重载 Nginx
本地验证(可选):
curl -H "Host: xxxx.xxxx" http://127.0.0.1:1999返回 HTML → 站点正常。
回到隧道 → Public Hostname → Add
- Subdomain:
xxxx - Domain:
xxxx.xxxx URL:
http://127.0.0.1:1999
保存 → 解析页面自动添加,记录橙色云自动亮起
最后访问你所配置的域名(不加端口),正常访问,大功告成~
四、宝塔 Docker 常用操作(复制即用)
| 操作 | 命令 |
|---|---|
| 看实时日志 | docker logs -f cloudflared |
| 是否 Registered | `docker logs cloudflared 2>&1 |
| 重启隧道 | docker restart cloudflared |
| 开机自启 | 宝塔 Docker → 容器 → 更多 → 重建 → 重启策略选 unless-stopped |
五、常见问题快速定位
| 现象 | 宝塔命令 |
|---|---|
| 502 | curl -H "Host:域名" http://127.0.0.1:1999 |
| 容器无限重启 | `docker logs cloudflared |
| 橙色云不亮 | CF 面板 DNS 点成橙色 |
写在最后
宝塔负责建站,Docker负责隔离,Cloudflare负责HTTPS+全球加速——三者合体,就是当下不错的内网穿透方案。
本文共 626 个字数,平均阅读时长 ≈ 2分钟
