Navidrome:一个可执行文件起音乐服务器,本地曲库随时能远程听
摘要
Navidrome 用 Go 写成、按 GPL v3 开源,照 Subsonic 协议开接口,一百零二个现成客户端直接连,另有转码、多库与插件,最新 0.64.2。
推荐- 软件名称
- Navidrome
- 版本
- 0.64.2
- 收费
- 免费
- 开源
- 开源
- 操作系统
- WindowsLinuxmacOS
- 更新时间
- 2026-10-21 12:39
Navidrome 是一个用 Go 写的音乐服务器,硬盘里的音乐文件夹能变成可远程访问的私人流媒体库。它自己不写手机客户端,而是照着 Subsonic 那套协议把接口开出来,让现成的播放器连上来。
一个进程,两个目录
部署形态很朴素。官网按平台放出编译好的可执行文件,Linux、Windows、macOS 与 ARM 板子都有份;另有一套官方容器镜像,x86 与 ARM 的 v6、v7、v8 都支持。跑起来只要求两个位置,一个放数据库与缓存,一个指向音乐文件夹,再占用一个 4533 端口。
硬性外部依赖只有 ffmpeg,转码靠它。配置有三套入口:环境变量、命令行参数,以及一个 toml 格式的配置文件,同时设置时以环境变量为准;容器部署时程序会自己去数据目录里找那个 toml。

扫一遍文件夹,库就建起来了
首次启动会建库并扫描音乐文件夹。官方给的耗时参考很具体:一千首以内一分钟跑完,一千到一万首一到五分钟,一万到五万首五到十五分钟,五万首以上十五分钟起步。之后可以给扫描排个计划,按固定间隔重跑。
它按标签建库,不按目录。常见问题里回答得直白:加一个按文件夹浏览的模式技术上做得到,但要把大部分组件的内部结构动一遍,而这套产品从第一天起就把方向定在标签上。曲目归进专辑、专辑挂到艺术家全靠文件里的标签,标签写错了界面上就是乱的。官网提到扫描器在约九十万首歌的库上测过,其中三分之二是 FLAC,这个量级还能在树莓派上跑。
协议是入口,客户端让别人做
它自带一个网页播放器,但真正撑起来的是协议兼容。文档写明当前对齐 Subsonic API 1.16.1,少数接口有差异,OpenSubsonic 那套扩展在持续补。差异也公开摆着:不做任何跟视频有关的功能;不做按文件夹浏览,取索引的请求会返回一棵模拟出来的目录树;播放请求本身不算播放记录,要等客户端上报才算数。
协议通了,客户端就不用自己写。官网的客户端目录列着一百零二个应用,安卓、iOS、桌面、网页、电视盒子各有覆盖,标了 Subsonic 或 OpenSubsonic 的都能连上来。
多库、权限与隔离
从 0.58.0 版本起支持多个音乐库。启动时用配置里的音乐文件夹建一个默认库,已有用户的权限自动带上;管理员看得见所有库,普通用户要逐个授权,界面上用库选择器切换。专辑只属于一个库,艺术家却可以横跨多个库,统计数据按全库聚合;播放列表能混装几个库的曲目,前提是对那几个库都有权限。把音乐和有声书、无损和压缩分开,让一家人各留各的收藏,都成了配置问题。
转码、缓存与分享
播放时可以转码。服务端按播放器上设置的形式,把文件转成合适的码率再发出去,省流量也省解码压力;转码结果进缓存,占用上限可设。分享是另一条路:任何用户都能给一首歌、一张专辑、一个艺术家或者一个播放列表生成一条链接,没有账号的人也能听,链接默认一年后过期,时长能改,也能整个关掉。

智能播放列表与收听记录
智能播放列表还在测试,做法是把规则写成 JSON,存成 nsp 文件放进库目录。规则里有字段、运算符、排序和数量限制:最近三十天播过的取前一百首,八十年代评分高于三颗星的按年份倒序取二十五首;相对时间的条件配上百分比限制,能做出每天换一批的日推歌单。
同一套语法被复用到别处。0.64.0 起每个用户都能设一条过滤规则,把某些歌排除在收听记录之外,比如挡掉节日音乐,或者只让四星以上的歌参与推荐;被挡掉的歌仍然算本地播放次数,历史不会缺一块。
插件与 Jellyfin 接口
插件隔在 WebAssembly 沙箱里跑,先声明自己能提供哪几类能力:抓取艺人简介与专辑封面、把收听记录发到别的服务、跑定时任务、响应播放事件。装法是把插件文件放进插件夹,在网页界面里启用并分配权限。插件默认没有网络权限,要访问局域网里的服务得在清单里写明地址范围。
0.64.0 那版还开了一个实验性的 Jellyfin 接口,默认关闭。打开之后服务端在一条独立路径上回应 Jellyfin 那一系音乐客户端的请求,用本机账号密码登录,每台设备都当成一个播放器出现在设置里。局域网自动发现走 UDP 7359,默认关着,因为机器上真有一台 Jellyfin 服务器时两边会抢同一个端口。
0.64 这一串版本在修什么
0.64.0 是个大版本,最要紧的改动藏在看不见的地方:内部 ID 全部重编码成统一的 128 位格式,这次迁移动到每一张表,升级前得先备份数据库,缓存过条目 ID 的客户端可能要重新同步。写插件的人还要留意,沙箱自带的 HTTP 能力被关掉了,请求得改走宿主接口。
0.64.1 是安全版本,一次修掉五个漏洞。最重的一条在 Subsonic 接口上:登录失败没有限速,攻击者能全速猜密码,危险度评到 7.4;另一条是播放列表里的外部封面地址能指向内网,把服务器变成探测内网服务的跳板。0.64.2 收尾,治的是慢速存储上的毛病——U 盘、网络盘在扫描时会刷出一堆数据库被锁的报错,全量扫描失败,这一版让封面任务在扫描期间暂停。
谁适合用它
攒了几百 GB 无损、又不愿意每月交订阅费的人,是这个软件最典型的用户。一台常年开机的树莓派、一台闲置的旧笔记本、或者 NAS 上跑个容器,库就活了。它不吃显卡,不挑系统,编译出来的单个可执行文件丢上去就能跑。
Navidrome 走的是把一件事做窄的路子:只做音乐服务器,只按标签组织,只对准 Subsonic 这一套协议,剩下的交给一百零二个客户端各显其能。代码按 GNU GPL 第三版放出来,源码仓库两万四千多颗星,版本号一路走到 0.64.2。想让本地音乐库变成随时能摸到的东西,这是绕不开的一个选项。