為什麼選擇 Navidrome?
在自架音樂伺服器的選擇中,常見的選手有 Plex (太重)、Jellyfin (影片為主)、Airsonic (Java 寫的,資源吃比較多)。
而 Navidrome 脫穎而出的原因很簡單:
- 極致輕量:Go 語言編寫,記憶體佔用極低,樹莓派也能輕鬆跑。
- Subsonic API 相容:這意味著它支援市面上幾乎所有的 Subsonic 客戶端 App。
- 速度快:掃描幾萬首歌的資料庫只需要幾分鐘。
Docker Compose 部署
Navidrome 的部署非常簡單,官方提供了完善的 Docker 支援。
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000 # 記得改成你的 PUID:PGID
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options here
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "./data:/data"
- "/path/to/your/music:/music:ro" # 你的音樂資料夾路徑 (建議唯讀)
設定重點
/music: 對應到你 NAS 或 Server 上存放 MP3/FLAC 的真實路徑。user: 建議設定權限,避免產生的資料庫檔案 (navidrome.db) 變成 root 權限。
客戶端 App 推薦
雖然 Navidrome 的網頁版介面已經做得非常好,且支援響應式設計 (RWD),但在行動裝置上使用仍有局限。
最常見的痛點是在車上聽歌時(透過 CarPlay 或藍牙),當汽車熄火再重新發動,手機瀏覽器後台的網頁服務往往會被系統暫停或凍結,導致無法正確記憶上一首播放的進度。這就是為什麼我們需要專屬的 Native App 來接手 Audio Session 管理,確保音樂體驗不中斷。
因為 Navidrome 支援 Subsonic API,所以有很多 App 可以選。但我目前最推薦以下兩款 iOS App:
iOS
- Nautiline: 這是目前我主要使用的 App。介面設計非常現代化,與原生 Apple Music 體驗接近,操作流暢且穩定。
- Narjo: 之前使用了一段時間,雖然介面不錯,但目前還在 TestFlight 測試階段,Bug 相對較多,因此後來轉投 Nautiline 的懷抱。不過它仍是一個有潛力的新選擇,值得持續關注。
使用心得
Navidrome 給我的感覺就是「穩」。它沒有太多花俏的功能(例如歌詞顯示目前還比較陽春),但作為一個「把音樂串流到手機」的核心服務,它做得非常稱職。配合 Cloudflare Tunnel 或 Reverse Proxy,就能隨時隨地享受自己的無損音樂庫。