飞牛OS Docker 部署 Cloudflare Tunnel 教程

飞牛OS Docker 部署 Cloudflare Tunnel 教程

家庭宽带没有公网 IP,在外网很难远程访问飞牛 OS NAS。本文使用飞牛 OS 内置 Docker 面板可视化部署 Cloudflare Tunnel 隧道,全程无需端口映射、无需备案域名、不限流量永久免费。部署完成后可通过自定义域名 HTTPS 访问 NAS 后台、Alist、影音服务,容器开机自动重连,稳定性远超传统 Ngrok 与 FRP,附带完整配置与故障排错方案。

 次点击
25 分钟阅读

适用设备:所有搭载飞牛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:5244

  • Jellyfin影视服务:http://172.20.0.1:8096

  • Emby影视服务: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项目即可恢复。


© 本文著作权归作者所有,未经许可不得转载使用。