Navidrome:自建音乐库,把散落的文件变成能随时听的歌单

admin 开源软件 2026-10-29 10 0

它的定位很明确:扫描你的音乐目录,整理成元数据,然后提供一个流媒体接口给各种客户端。没有云、没有推荐算法、没有社交,只有你自己的收藏。

一、部署

services:
  navidrome:
    image: deluan/navidrome:latest
    restart: unless-stopped
    ports: ["4533:4533"]
    volumes:
      - ./data:/data
      - /mnt/music:/music:ro
    environment:
      - ND_SCANSCHEDULE=1h
      - ND_LOGLEVEL=info
      - ND_SESSIONTIMEOUT=24h
      - ND_BASEURL=

两个细节:音乐目录以只读方式挂载(防止误删),扫描间隔设成 1 小时(太频繁会一直占 CPU)。

二、元数据决定体验

这类工具的体验上限完全取决于文件的标签质量。扫描之后发现「一堆未知专辑」,问题不在软件,在文件。

字段缺失的后果
专辑名同一张专辑被拆成多张
艺术家 / 专辑艺术家合辑里的每首歌各自成一个歌手
曲目号顺序乱掉
封面列表一片灰
年份无法按年代浏览

整理思路:先按「艺术家/专辑/曲目号-标题」的目录结构摆放,再用标签工具批量写入。一次性整理一次,后面一直受益。

三、客户端生态

它支持标准的流媒体协议,市面上有大量第三方客户端,iOS 和安卓都有,甚至支持 CarPlay/Android Auto。这意味着你不用忍受网页界面,也不必自己开发 App。

离线下载是关键能力:通勤时没网也能听。选客户端时确认这一点。

四、转码与带宽

无损文件(FLAC)单曲几十 MB,移动网络下直接播放会卡。合理配置是「有线/家里直接播放原文件,外网自动转码为 192–320 kbps」。

- ND_TRANSCODINGCACHESIZE=2GiB
- ND_DEFAULTDOWNLOADSIZEFORMAT=mp3

转码会吃 CPU。如果机器很弱,把缓存调大、或者干脆只保留一份有损副本用于外网。

五、和视频库的分工

站内已有 Jellyfin 的方案,很多人会问「能不能都用 Jellyfin」。可以,但两者侧重不同:

  • 音乐:需要快速浏览、连续播放、播放列表、车载支持;
  • 视频:需要海报墙、字幕、硬件转码、多用户分级。

各自的工具在对应场景下体验更好,同时跑两个容器的成本并不高。

视频库的方案见 Jellyfin 自建影音库。

六、外网访问

两种方式,安全等级不同:

  1. 反向代理 + HTTPS + 登录:方便,但服务暴露在公网;
  2. 组网工具,只在内网访问:更安全,代价是每台设备要连隧道。

推荐第二种。具体见 WireGuard。

七、版权与来源

自建音乐库的前提是你拥有这些文件的合法使用权。这条不是技术问题,但值得在动手前想清楚——「自己听」和「分享给朋友」是两回事。

相关阅读

评论

访问统计