Navidrome 把硬碟裡的音樂資料夾變成可遠端播放的私人曲庫,一個執行檔就夠

摘要

用 Go 寫成、按 GPL v3 開源的 Navidrome,照 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 收尾,治的是慢速儲存上的毛病——隨身碟、網路碟在掃描時會刷出一堆資料庫被鎖的報錯,全量掃描失敗,這一版讓封面任務在掃描期間暫停。

誰適合用它

攢了幾百 GB 無損、又不願意每月繳訂閱費的人,是這個軟體最典型的用戶。一台常年開機的樹莓派、一台閒置的舊筆電、或者 NAS 上跑個コンテナ,曲庫就活了。它不吃顯卡,不挑系統,編譯出來的單一執行檔丟上去就能跑。

Navidrome 走的是把一件事做窄的路子:只做音樂伺服器,只按標籤組織,只對準 Subsonic 這一套協定,剩下的交給一百零二個用戶端各顯其能。程式碼按 GNU GPL 第三版放出來,原始碼倉庫兩萬四千多顆星,版本號一路走到 0.64.2。想讓本地音樂庫變成隨時能摸到的東西,這是繞不開的一個選項。

Navidrome下載地址
支援的作業系統: Windows Linux macOS