当前位置: 首页 > news >正文

飞牛 NAS 用 Docker 搭 Navidrome:把本地音乐库变成随时能听的私有歌单

飞牛 NAS 用 Docker 搭 Navidrome:把本地音乐库变成随时能听的私有歌单

摘要:家里硬盘和 NAS 里攒了不少 MP3、FLAC、AAC 文件,真正想听的时候却总在翻文件夹。本文用 Docker 部署 Navidrome,把本地合法音乐文件整理成一个私有音乐库;局域网内用浏览器听,外出时用 cpolar 映射 Navidrome 的 Web 端口,再用手机浏览器或 Subsonic 兼容客户端连接。

标签:Navidrome、Docker、NAS、cpolar、内网穿透

说明:这篇只讨论个人自有、已购买、已授权或合法备份音频文件的整理和访问。Navidrome 负责管理你的本地音乐库,不提供音乐资源获取能力,也不适合拿来传播未授权内容。

前言

你有没有这种情况:NAS 里有一堆歌,手机里也存过几千首,但真正想听的时候,反而打开在线音乐软件随便点两下。

原因不是歌少,而是入口太散。电脑硬盘一个目录、NAS 共享盘一个目录、旧手机备份里还有一批,想在外面听一首老歌,还得先想文件放在哪里。

我之前写过一篇 Jellyfin 家庭影音库方案,适合整理电影、纪录片、课程视频这类内容。旧文内链位置:Jellyfin 家庭影音库不只在家看。这篇换个方向:Jellyfin 偏视频和家庭影音,Navidrome 偏音乐、歌单和低带宽远程听歌。一个管“看”,一个管“听”,放在 NAS 上刚好互补。

这次的目标很明确:

  • 在飞牛 NAS 或普通 Linux 机器上,用 Docker 跑起 Navidrome;
  • 把宿主机里的音乐目录只读挂进容器,避免服务端误改原文件;
  • 本地访问跑通后,用 cpolar 给 Navidrome 的4533端口开一个 HTTPS 访问入口;
  • 手机端用 Web 页面直接听,或者用 Subsonic 兼容客户端连接同一个地址。

1 什么是 Navidrome?这篇里它负责管音乐库

Navidrome 是一个轻量级自托管音乐服务。官方文档里把它定位成音乐集合的 Web 播放服务,同时兼容 Subsonic API,这意味着它既能用浏览器访问,也能接入一批 Subsonic 兼容客户端。

这篇里不用把它理解得太复杂。你只要记住三件事:

  • Navidrome 服务端跑在 NAS、小主机或 Linux 服务器上;
  • 你的 MP3、FLAC、AAC 等音频文件仍然放在自己的硬盘目录里;
  • 手机、电脑、平板访问 Navidrome 后,看到的是整理好的艺术家、专辑、歌曲和歌单。

它和直接开 SMB 文件共享不一样。文件共享更像“远程翻文件夹”,Navidrome 更像“把自己的本地音乐变成一个私人播放器”。

这里别误会:Navidrome 只负责管理自有音频文件,不负责找歌、下歌、破解平台限制。音乐文件的版权边界要自己守住,家庭自用和个人备份是这篇的前提。

2 环境准备:飞牛 NAS 和通用 Linux 都按这个思路来

这次不写死飞牛 NAS 的专有路径,因为每个人的存储池、共享目录命名都不一样。更稳的写法是给一套通用目录,你在飞牛 NAS 的文件管理器里找到真实音乐目录后,把示例路径替换掉。

示例目录如下:

/opt/navidrome # Navidrome 部署目录,放 docker-compose.yml /opt/navidrome/data # Navidrome 数据目录,放数据库、缓存、播放列表等 /data/music # 你的音乐文件目录,按实际情况替换

如果你在飞牛 NAS 上已经建好了共享目录,后面 Compose 里的/data/music换成真实音乐路径即可。

先用 SSH 登录 NAS 或 Linux 机器,准备目录:

sudo mkdir -p /opt/navidrome/data sudo mkdir -p /data/music cd /opt/navidrome

如果音乐已经在 NAS 的共享目录里,直接用真实音乐路径。这里很容易填错:容器只能看到挂载进去的目录。

再确认当前用户的 UID 和 GID:

id

输出里会看到类似下面这样的内容:

uid=1000(admin) gid=1000(admin) groups=1000(admin)

后面 Compose 示例用1000:1000。你的机器输出不是这个值,就替换成自己的 UID 和 GID。这样做是为了减少权限问题,别让容器用 root 身份乱碰文件。

给 Navidrome 数据目录设置归属:

sudo chown -R 1000:1000 /opt/navidrome/data

音乐目录建议只给读取权限。Navidrome 扫描音乐库时会读取音频文件和元数据,服务端数据、封面缓存、播放记录会写到/opt/navidrome/data,不需要改你的原始音乐文件。

3 用 Docker Compose 部署 Navidrome

/opt/navidrome里创建docker-compose.yml

cd /opt/navidrome nano docker-compose.yml

写入下面这份配置:

services: navidrome: image: deluan/navidrome:latest container_name: navidrome user: "1000:1000" ports: - "4533:4533" restart: unless-stopped environment: ND_LOGLEVEL: info volumes: - /opt/navidrome/data:/data - /data/music:/music:ro

这里有几个点别填错:

  • 4533:4533:Navidrome 默认 Web 端口是4533,后面本地访问和 cpolar 映射都用这个端口;
  • /opt/navidrome/data:/data:Navidrome 的数据库、缓存、播放列表等数据放这里;
  • /data/music:/music:ro:把宿主机音乐目录挂到容器的/music,末尾ro表示只读挂载;
  • user: "1000:1000":替换成你刚才id命令看到的 UID 和 GID。

如果你用飞牛 NAS 的图形化 Docker / 容器功能,也按同样参数创建:镜像deluan/navidrome:latest,端口4533,数据目录挂/data,音乐目录只读挂/music

启动服务:

docker compose up -d

查看容器状态:

docker compose ps

正常会看到navidrome处于运行状态,并且端口里有0.0.0.0:4533->4533/tcp。如果容器反复重启,先看日志:

docker compose logs --tail=100 navidrome

排错先盯三件事:镜像有没有拉下来、/opt/navidrome/data有没有写权限、音乐目录路径是不是真实存在。

4 打开本地页面,完成初始账号和音乐扫描

服务跑起来后,在同一个局域网里打开:

http://NAS-IP:4533

NAS-IP换成飞牛 NAS 或 Linux 机器的局域网 IP。例如你的 NAS 地址是192.168.31.20,浏览器访问:

http://192.168.31.20:4533

第一次打开时,Navidrome 会要求创建管理员账号。这里建议直接用一个不容易猜的用户名和强密码,不要用admin/admin、生日、手机号后几位这种组合。后面要做公网访问,账号密码就是第一道门。

登录后,Navidrome 会扫描/music目录里的音频文件。你的文件标签越干净,页面里显示得越舒服。比如艺术家、专辑、曲目号、封面这些元数据提前整理好,Navidrome 展示时就不需要你再手动猜。

如果页面空空的,按下面顺序查:

# 1. 宿主机上确认音乐目录里有文件 find /data/music -maxdepth 2 -type f | head # 2. 容器里确认 /music 能看到文件 docker exec -it navidrome sh -c "find /music -maxdepth 2 -type f | head" # 3. 查看 Navidrome 日志 docker compose logs --tail=100 navidrome

如果第 1 条能看到文件,第 2 条看不到,问题就在 Docker 卷挂载路径。回到docker-compose.yml,把/data/music换成真实音乐目录,再执行:

docker compose up -d

这一步是确认“宿主机音乐目录 → 容器/music→ Navidrome 页面”已经打通。链路通了,后面远程访问才有意义。

5 用 cpolar 映射 Navidrome Web 端口

局域网内能打开http://NAS-IP:4533后,再处理外地访问。不要暴露 NAS 管理后台,也不要把一堆端口全映射出去。这里只映射 Navidrome 的4533

如果你的 NAS 或 Linux 机器已经安装并登录 cpolar,可以直接创建 HTTP 隧道:

cpolar http 4533

命令运行后,终端会输出一个公网访问地址。你也可以打开 cpolar Web UI:

http://127.0.0.1:9200

在 cpolar 的“状态 → 在线隧道列表”里查看 Navidrome 对应的 HTTPS 地址。把这个 HTTPS 地址复制出来,在外地手机或电脑浏览器里打开,就会进入 Navidrome 登录页。

如果你更习惯 Web UI 创建隧道,参数按下面填:

  • 隧道名称:navidrome
  • 协议:http
  • 本地地址:4533
  • 域名类型:免费套餐选随机域名
  • 地区:按实际线路选择

创建后去“状态 → 在线隧道列表”看公网地址。免费随机地址适合临时访问和测试,官方规则是 24 小时内会变化;长期使用再考虑固定二级子域名,固定二级子域名需要基础套餐或以上。

安全提醒放在这里说清楚:

  • Navidrome 管理员账号必须用强密码,别复用 NAS 后台密码;
  • 只映射4533,不要顺手暴露飞牛 NAS 后台、SSH、数据库端口;
  • 临时在外面听歌,用完就关闭隧道;
  • 多人账号分开建,别把管理员账号给家人共用;
  • 公网入口只给自己和可信设备使用。

如果 cpolar 地址能打开,但页面不是 Navidrome,先检查本地地址是不是填成了 NAS 后台端口。这个坑很常见:Navidrome 是4533,NAS 管理页面是另一套端口,不要混在一起。

6 手机怎么听:Web 访问和 Subsonic 客户端两条路

本地和公网入口都跑通后,手机端有两种用法。

第一种最省事:手机浏览器打开 cpolar 的 HTTPS 地址,登录 Navidrome Web 页面。这个方式不用装 App,适合先确认远程链路是否正常。

第二种更像日常播放器:安装 Subsonic 兼容客户端,在客户端里新增服务器。Navidrome 官方说明它兼容 Subsonic / OpenSubsonic 客户端生态,手机、桌面、车机方向都有对应播放器。

客户端里通常要填三项:

Server URL: cpolar 生成的 HTTPS 地址 Username: Navidrome 用户名 Password: Navidrome 密码

这里注意两点。

一是Server URL直接填 HTTPS 根地址,不要在后面乱加/login。浏览器登录页地址和客户端 API 地址不是一回事,客户端会自己拼接 Subsonic API 路径。

二是免费随机地址变化后,客户端里的服务器地址也要跟着改。如果你准备长期用手机客户端听,固定二级子域名会省很多事。

如果客户端连不上,先用同一台手机浏览器打开这个 HTTPS 地址。浏览器都打不开,问题在 cpolar 隧道或本地服务;浏览器能打开但客户端失败,再检查客户端里的 URL、账号、密码和 HTTPS 证书提示。

7 和 Jellyfin 怎么分工:视频库归视频,音乐库归音乐

前面提到的 Jellyfin 旧文更适合家庭影音库。它的重点是影片、剧集、字幕、海报墙、电视端播放,还有不同设备间的视频体验。

Navidrome 的优势在另一边:音乐库、歌单、专辑、低带宽播放、Subsonic 客户端。音频文件体积比视频小,在外面听歌对带宽要求也低。地铁、办公室、酒店网络里临时听自己的歌,Navidrome 的负担比视频服务轻。

我的建议是分开部署:

  • Jellyfin 管视频、课程、家庭录像,端口按旧文方案处理;
  • Navidrome 管音乐、歌单、专辑,端口固定看4533
  • cpolar 只映射当前需要访问的服务,不把 NAS 后台当作公网入口。

这样排错也清楚。看不了电影就查 Jellyfin,听不了歌就查 Navidrome。两个服务都放在 Docker Compose 里,各自有独立的数据目录和媒体目录,后面迁移 NAS 或换硬盘也更稳。

8 总结

现在这套链路已经成型:音乐文件还在自己的飞牛 NAS 或 Linux 服务器上,Navidrome 负责扫描和整理,局域网里用http://NAS-IP:4533访问;出门时用 cpolar 临时映射4533,手机浏览器或 Subsonic 兼容客户端都能连回自己的私有音乐库。

关键步骤就三块:

  • Docker Compose 部署 Navidrome,把/data/music两个目录挂清楚,音乐目录建议只读挂载;
  • 本地页面先跑通,确认账号、扫描、播放都正常,再去做远程访问;
  • cpolar 只映射 Navidrome Web 端口,配强密码,用完关闭临时隧道,不暴露 NAS 后台。

如果你之前已经按 Jellyfin 旧文搭好了家庭影音库,这篇就是音乐库补全方案。一个负责视频,一个负责音乐,再配合 NAS 的长期存储能力,家里的数字媒体会从“散在硬盘里”变成“随时能打开的私人媒体中心”。

你更想看 Navidrome 客户端推荐、歌词封面整理,还是和 Jellyfin 组合成家庭媒体中心?评论区告诉我,我按呼声继续写下一篇。

http://www.zskr.cn/news/1472621.html

相关文章:

  • 佛山禅城区黄金回收行情:当前金价944元,回收价这样算才不亏 - 黄金上门回收
  • V-JEPA在面部表情识别中的创新应用与性能突破
  • Blueking Lite更新:新增多类功能,满足运维管理多样需求
  • 【智能工作成熟度诊断工具】:3分钟定位你团队的AI整合卡点(含12维度自评矩阵,仅限前500名领取)
  • 2026 漳平厨卫楼顶地下室漏水测评,吉修匠五星高分稳居榜首 - 吉修匠
  • 保姆级教程:用树莓派4B+MJPG-streamer搭建家庭安防摄像头(含FRP内网穿透)
  • Ubuntu下串口调试,除了PuTTY和CuteCom,这3个宝藏工具也值得一试
  • 社区养老丨2026年物业企业的新赛道机会
  • 终极指南:tcc-g15 - 完全掌控你的Dell G15散热系统
  • 别再让同事乱推代码了!手把手教你配置GitLab分支保护,把Bug挡在合并前
  • SVN详细使用教程
  • 2026 福安厨卫楼顶地下室漏水测评,吉修匠五星高分稳居榜首 - 吉修匠
  • Driver Store Explorer完整指南:Windows驱动存储区管理的终极解决方案
  • 2026 永安厨卫楼顶地下室漏水测评,吉修匠五星高分稳居榜首 - 吉修匠
  • 从“彩票假设”到多臂老虎机:深度神经网络剪枝里那些有趣的启发式搜索思想
  • AI文本检测器原理与实战:从统计特征到水印识别
  • 个人AI聊天机器人必要性三重门槛:启动成本、语义深度与反馈闭环
  • 2026最新诚信优选深圳市黄金白银铂金彩金回收正规门店TOP甄选排行榜及联系方式推荐 - 余生黄金回收
  • 2026年义乌T恤Polo衫卫衣定制采购指南:工贸一体源头工厂深度评测 | 服饰定制针织服饰定制服装定制团体服装定制小单快返20年经验自有数码印花 - 企业品牌优选推荐官
  • 从Gaea到Houdini:程序化地形工作流打通实战(含Labs工具链配置)
  • MATLAB语音特征提取工具包:含分帧、梅尔滤波、对数压缩与DCT变换全流程实现
  • 2026 龙海厨卫楼顶地下室漏水测评,吉修匠五星高分稳居榜首 - 吉修匠
  • Spark 行动算子(Action)全面解析
  • PHP多维数组操作与聚合分析
  • Chromatic:如何像外科手术一样精准修改Chromium/V8应用?
  • 算法复杂度的统计特征与实验验证的技术8
  • 保定 8 区县全套文案(全区统一固定标题:2026 上海防水补漏 + 瓷砖空鼓修复推荐,苏易修缮本土直营,老城老房漏水、瓷砖翘边拱起就近微创修) - 苏易修缮
  • 告别理论!用Proteus仿真直观理解PID算法:以51单片机温控为例
  • 创客匠人AI智能体:知识付费的效率革命与未来图景
  • 别再只用它开空调了!深度挖掘涂鸦万能红外遥控器的DIY模式:手把手教你学习并控制家里所有红外设备