【音乐】使用 Cloudflare Tunnel 为nas中的洛雪同步服务开启免费、安全、高速的内网穿透

​ 本教程将引导你如何在飞牛(Feiniu)NAS 系统上,通过 Docker 和 Cloudflare Tunnel(也称为 cloudflared)功能,实现免费、安全且无需公网 IP 的内网穿透。这样你就可以在任何地方通过自己的域名访问家中的 NAS 了。

准备工作:

  • 一台正在运行的飞牛 NAS。
  • 一个你自己的域名(例如 yourdomain.com)。
  • 将你的域名托管在 Cloudflare 上。
  • 一个 Cloudflare 账号。

第一步:在飞牛 NAS 中准备 Docker 环境

首先,我们需要在 NAS 上下载 Cloudflare Tunnel 的官方 Docker 镜像。

  • 登录你的飞牛 NAS 管理后台。
  • 在桌面找到并点击 Docker 图标,进入 Docker 管理器。
  • 在 Docker 管理器左侧菜单中,点击 镜像仓库
  • 在右上角的搜索框中输入 cloudflared 并搜索。
  • 在搜索结果中,找到官方镜像 cloudflare/cloudflared(通常下载量最大),然后点击右侧的下载图标。
  • 在弹出的“选择标签”窗口中,保持默认的 latest,然后点击 确定。系统将开始下载镜像。

第二步:在 Cloudflare 中创建隧道 (Tunnel)

现在,我们需要登录 Cloudflare 官网来创建一个隧道并获取连接凭证。

  • 登录你的 **Cloudflare Dashboard**。
  • 在左侧菜单中,找到并点击 **Zero Trust**。
  • 首次设置 (如果需要)
    • 如果你是第一次使用 Zero Trust,系统会要求你设置一个团队名称。这个名称将成为你访问后台的子域名,可以自定义。
    • 在选择计划页面,选择左侧的 Free (免费) 套餐。
    • 系统可能会要求你添加付款方式,这里有一个技巧可以跳过:直接修改浏览器地址栏的 URL,删除 .com/ 之后的所有内容,然后按回车键重新访问。这样就可以绕过付款验证步骤。
  • 成功进入 Zero Trust 仪表盘后,在左侧菜单中点击 网络 (Access) -> 隧道 (Tunnels)
  • 点击 创建隧道 (Create a tunnel) 按钮。
  • 在选择连接器类型时,选择 Cloudflared,然后点击 下一步 (Next)
  • 为你的隧道命名,例如 nas,然后点击 保存隧道 (Save tunnel)
  • 在“选择您的环境”页面,选择 Docker。页面下方会生成一段 docker run 命令,点击复制图标将这段完整的命令复制下来。这段命令包含了连接隧道的唯一 token,非常关键。

第三步:在飞牛NAS上部署洛雪同步程序

  • 在 Docker 管理器左侧菜单中,点击 镜像仓库

  • 在右上角的搜索框中输入 lyswhut/lx-music-sync-server 并搜索,这个镜像为作者的镜像源,也可以自己使用源码构建镜像

  • 在搜索结果中,找到官方镜像 cloudflare/cloudflared(通常下载量最大),然后点击右侧的下载图标。

  • 在弹出的“选择标签”窗口中,保持默认的 latest,然后点击 确定。系统将开始下载镜像。

  • 下载完成后,执行以下命令运行容器

    1
    docker run -d --name lxmusicsyncserver --restart=always -p 19527:9527 -v /vol2/docker/containers/lxmusicsyncserver/logs:/server/logs -v /vol2/docker/containers/lxmusicsyncserver/data:/server/data -e TZ=Asia/Shanghai -e LX_USER_user1=password1   -e BIND_IP=0.0.0.0 -e PORT=9527  lyswhut/lx-music-sync-server
    • 变量名称 说明
      PORT 绑定的端口号,默认为 9527
      BIND_IP 绑定的 IP 地址,默认为 127.0.0.1,使用 0.0.0.0 将接受所有 IPv4 请求,使用 :: 将接受所有 IP 请求。
      PROXY_HEADER 代理转发的请求头 原始 IP,如果设置,则自动启用。
      CONFIG_PATH 配置文件路径,默认使用项目目录下的 config.js
      LOG_PATH 服务日志保存路径,默认保存在服务目录下的 logs 文件夹内。
      DATA_PATH 同步数据保存路径,默认保存在服务目录下的 data 文件夹内。
      MAX_SNAPSHOT_NUM 公共最大备份快照数。
      SERVER_NAME 同步服务名称。
      LIST_ADD_MUSIC_LOCATION_TYPE 公共添加歌曲到我的列表时的方式,可用值为 topbottom
      LX_USER_ LX_USER_ 开头的环境变量将被识别为用户配置,可用的配置语法为:
      1. LX_USER_user1='xxx'
      2. LX_USER_user1='{"password":"xxx"}'
      其中 LX_USER_ 会被去掉,剩下的 user1 为用户名,xxx 为用户密码(连接码)。
      配置方式 1 为简写模式,只指定用户名及密码(链接码),其他配置使用公共配置。
      配置方式 2 为 JSON 字符串格式,配置内容参考 config.js,由于该方式在变量名指定了用户名,所以 JSON 里的用户名是可选的。

第四步:在飞牛 NAS 上运行隧道并配置路由

  • 使用 SSH 客户端(如 Windows PowerShell, FinalShell 等)连接到你的飞牛 NAS。

    1
    2
    # 请替换成你自己的端口、用户名和IP
    ssh -p 22 xxx@192.168.1.92
  • 登录后,输入 sudo su 并再次输入密码,切换到 root 管理员用户。

  • 粘贴并执行上一步从 Cloudflare 复制的 docker run 命令。这会首次运行容器并与 Cloudflare 建立连接。看到日志输出后,可以先不用管它。

  • 回到飞牛 NAS 的 Docker 管理界面,在 容器 列表中找到刚刚创建的 cloudflared 容器(通常是随机名称),点击右侧的电源图标,将其停止。

  • 回到 Cloudflare 的隧道配置页面,点击右下角的 下一步 (Next)

  • **配置公共主机名 (Public Hostname)**,这是将你的域名指向 NAS 的关键步骤。

    • 子域名 (Subdomain): 输入你想要的前缀,例如 nas。
    • 域 (Domain): 从下拉列表中选择你在 Cloudflare 托管的域名。
    • 服务 (Service):
      • 类型 (Type): HTTP
      • URL: 输入 http://[你的NAS内网IP]:[端口],例如 http://192.168.1.92:9527
  • 点击右下角的 **完成设置 (Save tunnel)**。

第五步:启动容器并验证访问

  • 回到飞牛 NAS 的 Docker 管理界面,在 容器 列表中,重新启动之前停止的那个 cloudflared 容器。
  • 打开一个新的浏览器标签页,输入你刚刚配置的完整域名(例如 https://nas.nas.top)。
  • 你应该能看到飞牛 NAS 的登录界面,并且浏览器地址栏显示的是安全锁(HTTPS 连接),证明内网穿透已经成功!
  • 你还可以尝试在手机上使用移动数据网络访问该域名,同样可以成功登录,证明你可以从任何地方访问你的 NAS。

至此,你的 NAS 内网穿透已全部配置完成!