适用设备:所有搭载飞牛OS(fnOS)NAS | 部署方式:可视化Docker面板(无命令)
教程特点:无需公网IP、无需端口映射、无需备案、永久不限流量、自动HTTPS、开机自启
文章分类:NAS教程 / 运维技术 / Docker
文章标签:飞牛OS,fnOS,Docker,Cloudflare,CF隧道,内网穿透,远程NAS
一、前言
绝大多数家庭宽带无公网IPv4,传统FRP、Ngrok、花生壳等内网穿透工具,存在限速、收费、不稳定、易掉线等问题。
Cloudflare Tunnel(CF隧道) 是目前NAS远程访问的最优免费方案,依托Cloudflare全球节点,延迟低、稳定性强、完全免费无流量上限。
本教程全程使用飞牛OS自带Docker可视化面板操作,摒弃复杂SSH命令,小白也能一键部署,实现外网无压力远程访问NAS后台、Alist、Jellyfin等所有内网服务。
核心优势汇总
零公网IP、无需光猫桥接、无需路由器端口映射
全程免费、无流量限制、无连接数限制
自动配置SSL证书,全网HTTPS加密访问
Docker容器常驻,NAS重启自动重连,稳定不掉线
支持自定义多服务映射,适配所有NAS内网应用
二、前期准备
1. 注册 Cloudflare 免费账号,拥有一个接入CF解析的域名
2. 飞牛OS 已开启并正常运行 Docker 功能(系统自带,无需额外安装)
3. 牢记飞牛OS内网固定网关:
172.20.0.1:5666(NAS后台默认地址)
三、Cloudflare 后台创建隧道获取 Token
1. 进入Zero Trust控制台
登录 Cloudflare 官网 → 进入 Zero Trust → 左侧【网络】→【隧道】


2. 新建隧道

点击【创建隧道】,自定义隧道名称(例:fn-nas)


连接器环境选择 Docker(重点!不要选错系统)

复制生成的完整 隧道Token(超长字符串,妥善保存,切勿泄露)
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiOWQ2NWEwNTMyYz.....................................................
注意:Token 是隧道唯一密钥,复制时不要遗漏、不要带空格、不要换行!
注意:点击Next后不要关闭此页面,复制的tocken新建个记事本记下来
四、飞牛OS Docker 可视化部署 CF 隧道
全程图形化操作,无需敲任何代码,新手首选方案。
1. 新建Docker项目
新建以下目录结构备用

打开飞牛OS【应用】→【Docker】→【项目】→【新建项目】
项目名称:
cloudflared存储路径:选择刚新建的目录
/docker/cloudflared源码类型:选择 编写 docker-compose.yml
2. 粘贴完整部署配置
将下方完整代码直接复制粘贴,仅替换最后一行Token 为你自己的密钥即可。
version: '3.8'
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared-tunnel
restart: unless-stopped
stop_grace_period: 30s
command: tunnel run
environment:
- TUNNEL_TOKEN=${TUNNEL_TOKEN}
- TUNNEL_LOGLEVEL=info
- TUNNEL_TRANSPORT_PROTOCOL=auto
- TUNNEL_METRICS=0.0.0.0:2000
- TUNNEL_RETRIES=5
volumes:
- ./data:/home/nonroot/.cloudflared
- ./logs:/var/log/cloudflared
network_mode: host
# 改用内存限制(compose 原生支持,不需要deploy)
mem_limit: 128m
mem_reservation: 64m
cpus: 0.5
# 改用内置http健康检测,不需要pgrep
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:2000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"注意:创建后先不启动构建
本地电脑记事本创建1.env文件,上传到飞牛目录/docker/cloudflared,飞牛内部重命名为.env

代码如下:
TUNNEL_TOKEN=你的完整token(不能有空格)3. 启动容器
点击【创建并启动】,系统自动拉取镜像、部署容器,等待10-30秒启动完成。
配置说明
restart: always:容器开机自启,断网自动重连network_mode: host:适配飞牛OS网络,正常访问宿主机内网服务--protocol http2:优化家庭宽带,降低延迟、减少掉线--no-autoupdate:禁止自动更新,避免隧道无故中断
4. 验证部署成功
Docker容器列表中,cloudflared 状态为 正在运行 即为部署成功。
查看日志出现:Connected to Cloudflare edge 代表隧道已成功连接CF节点。
五、配置域名外网访问
1. 添加公共主机名
回到 Cloudflare Zero Trust 隧道页面,此时连接器状态为【健康】

点击【添加公共主机名】,配置外网访问规则:

✅ 映射飞牛OS后台(核心)

子域名:自定义(如
nas)域名:选择你接入CF的域名
协议:
HTTP内网地址:
http://172.20.0.1:5666
注意:如果你用的是飞牛HTTPS端口,请务必在其他设置,将TLS握手打开为不验证
注意:否则你会出现502错误,HTTP协议不需要
注意:如果还是出502或其他错误,请尝试将公共主机名IP修改为127.0.0.1

✅ 常用服务映射参考(按需添加)
Alist网盘服务:
http://172.20.0.1:5244Jellyfin影视服务:
http://172.20.0.1:8096Emby影视服务:
http://172.20.0.1:8096
配置完成后,等待1-5分钟DNS解析生效,即可在外网通过域名HTTPS安全访问你的NAS所有服务。
六、常见问题排查
1. 容器反复重启、启动失败
检查Token是否完整、无空格换行
必须开启
network_mode: host,否则无法访问内网网络环境不稳定可保留
--protocol http2参数优化
2. 域名无法打开、访问超时
确认内网地址为
172.20.0.1,切勿填写127.0.0.1等待CF DNS解析生效,或刷新本地DNS缓存
关闭飞牛OS防火墙,放行内网端口访问
3. 重启NAS后隧道掉线
配置已开启永久自启,大概率是Docker服务延迟启动,可重启Docker项目即可恢复。