Cloudflare Tunnel 应用版:飞牛应用商店装上之后,怎么把它用明白
飞牛商店里的 Cloudflare Tunnel 把 cloudflared 包了一层图形界面。这篇从拿 token 讲到多服务映射、访问策略和踩坑,装完照着做就行。
家里没有公网 IP,又想让 NAS 上的东西在外面能打开——这个需求一直在,解法也一直有几个:内网穿透、DDNS 打洞、frp 自建中转。Cloudflare Tunnel 是其中门槛最低的一个,因为中转节点不用你自己买。
飞牛商店里那个 Cloudflare Tunnel,本质是把官方的 cloudflared 包了一层。装完不用碰命令行,但它不会替你去 Cloudflare 后台点那几下——那几步还是得你自己来,这也是大多数人卡住的地方。
它到底怎么工作的
一句话:你的 NAS 主动连出去,不用开任何入站端口。
访客 → Cloudflare 边缘节点 → 隧道 → 你家的 cloudflared → 本地服务
注意方向。传统的端口映射是"外面能敲你家的门",隧道是"你家先打电话给 Cloudflare,然后一直挂着"。所以路由器上不用配端口转发,公网 IP 变了也无所谓,光猫后面套两层 NAT 照样能用。
代价是:所有流量都从 Cloudflare 走一遍。它看得见你的域名、路径、请求头。
动手之前,两件事必须成立
一、域名得托管在 Cloudflare
不是"在 Cloudflare 买",是"把 NS 改到 Cloudflare"。域名在哪注册都行,在 Cloudflare 后台加站点,然后去注册商那里把两个 NS 记录换成它给的。生效通常几分钟到几小时。
没这一步,后面绑不上域名——隧道本身能连上,但没有可以访问的地址。
二、账号要能进 Zero Trust
Cloudflare 后台左边有个 Zero Trust(新版叫 Cloudflare One)。第一次进会让你起个团队名,免费版最多 50 个用户,够用。
有个坑先说了:某些地区/账号在这一步会被要求绑定支付方式。如果卡在这儿,还有一条路是命令行本地管理隧道,不经过这个面板,后面单独讲。
装
飞牛应用商店 → 搜 Cloudflare Tunnel → 安装。装完在应用列表里能打开一个设置界面。
界面通常就一个输入框:Token。这个 Token 得去 Cloudflare 后台拿。
拿 Token 的四步
- Cloudflare 后台 → Zero Trust / Cloudflare One → Networks → Tunnels;
- Create a tunnel → 选 Cloudflared 这个连接器类型;
- 起个名字,比如
fnos,保存; - 下一页会给你一段安装命令,长这样:
cloudflared service install eyJhIjoi...很长一坨...
service install 后面那串就是 Token。 复制它,别复制整行命令。
这串东西等于你家隧道的钥匙。谁拿到,谁就能把他自己的服务挂到你的域名下。别截图、别贴群里。
把 Token 填进去
回到飞牛的 Cloudflare Tunnel 界面,粘进去,保存,启动。
几秒后回 Cloudflare 那边看:Tunnels 列表里 fnos 那条应该从 Inactive 变成 Healthy,下面还会列出连接所在的机器。
到这一步,隧道通了,但还没有任何服务被发布出去——隧道是管道,你得告诉它哪根管子通向哪。
加第一个服务
在隧道详情页找 Public Hostname → Add a public hostname:
| 字段 | 填什么 |
|---|---|
| Subdomain | nas(或者你想要的任何前缀) |
| Domain | 选你的域名 |
| Path | 留空 |
| Type | HTTP |
| URL | localhost:5666 |
保存。Cloudflare 会自动给你加一条 DNS 记录(CNAME 指向隧道),不用手动去 DNS 页面加。
浏览器打开 https://nas.你的域名.com,应该能看到飞牛的登录页。证书也是自动的,不用申请。
这里有个安全提醒:把 5666 直接开到公网,等于把 NAS 后台的门敞开。任何人访问那个域名都会看到登录框,然后开始试密码。正确做法是先加一层 Cloudflare Access(下一节),或者只发布具体的应用,别发布管理后台。
一条隧道,挂多个服务
不用为每个应用单独建隧道。继续在同一个隧道里 Add a public hostname,加第二条、第三条:
| Subdomain | Type | URL |
|---|---|---|
nas | HTTP | localhost:5666 |
photo | HTTP | localhost:8080 |
tv | HTTP | localhost:8096 |
files | HTTP | localhost:5244 |
端口换成你实际应用的端口。回头在路由器上什么都不用改。
加一层访问控制
这是 Cloudflare 比 frp 强的地方——它自带身份验证。
Zero Trust → Access → Applications → Add an application → Self-hosted:
- 填你要保护的域名,比如
nas.你的域名.com; - 建一条策略(Policy):Action 选
Allow,条件选Emails等于你自己的邮箱; - 保存。
之后访问这个域名,会先跳到一个 Cloudflare 的登录页,输邮箱收验证码,通过了才进得去。免费版就能用,最多 50 人。
我建议至少给管理后台类的服务加这个。影视、相册这种要给家人看的,可以只加一个 PIN 策略,或者干脆不加。
命令行那条路(进阶)
不想用面板、或者卡在绑定支付那步,可以完全在 NAS 上用命令行管:
# 1. 登录,会给你一个链接,浏览器打开授权
cloudflared tunnel login
# 2. 建隧道,名字随便起
cloudflared tunnel create fnos
# 3. 把域名指过来
cloudflared tunnel route dns fnos nas.example.com
然后写 ~/.cloudflared/config.yml:
tunnel: fnos
credentials-file: /root/.cloudflared/<隧道ID>.json
ingress:
- hostname: nas.example.com
service: http://localhost:5666
- hostname: photo.example.com
service: http://localhost:8080
- service: http_status:404
最后一条 http_status:404 别删,它是兜底,没有它启动会报错。
跑起来:
cloudflared tunnel run fnos
# 装成服务,开机自启
cloudflared service install
本地管理的好处是配置就在一个 YAML 里,改完重启即可,也不用担心面板改版找不到菜单。
用起来的真实感受
速度。免费隧道走的是 Cloudflare 的公共边缘,国内访问常常绕到境外节点再回来。打开网页、看文档没问题;拿它当影视外网播放的主力会很痛苦,缓冲、拖动都慢。
顺带提一句条款:Cloudflare 免费版对视频和大文件的流量是有意见的(服务条款 2.8 那一条),偶尔看一次没事,把它当成家里的流媒体 CDN 就不合适了。
稳定性。免费版没有 SLA,偶尔抖一下。重要服务建议同时留一条备用通道(比如飞牛自带的远程访问)。
WebSocket 支持。这点比很多穿透方案好,隧道原生支持长连接,所以一些实时界面不会动不动掉线。
常见问题
Tunnels 里一直是 Inactive
Token 没填对,或者容器没起来。看应用日志,正常会打印 Registered tunnel connection。
域名打不开,但隧道是 Healthy
检查 Public Hostname 里的端口对不对。localhost 在你容器里指的可能是容器自己,不是宿主机——这种情况换成宿主机的内网 IP,比如 192.168.1.10:5666。
登录页能开,点登录就报错 多半是应用里配的访问地址还是局域网 IP。要么改应用的域名配置,要么在 Cloudflare 上加一条规则改 Host 头。
想要固定 IP 白名单
Access 策略里可以按 IP 限制,但它拿到的是 Cloudflare 的 IP,不是访客真实 IP。要看真实 IP,得读 CF-Connecting-IP 这个请求头。
什么时候别用它
- 你要跑大流量(影视、备份同步)——带宽和条款都不合适;
- 你只需要自己偶尔访问——飞牛自带的远程访问更省事;
- 你对"流量经过第三方"这件事本身不接受——那就走自建 frp,代价是自己维护一台服务器。
最后
Cloudflare Tunnel 的价值不在于"免费",在于它把三件事一次解决了:不用公网 IP、不用开端口、自带 HTTPS 和身份验证。你只需要一个域名。
商店里那个应用省掉了装命令行、写 YAML 的步骤,但 Cloudflare 后台那几步还是绕不过去。第一次配会花二十分钟,之后加服务就是点几下的事。
配的过程中卡在哪儿,留言,我补进这篇。
留言