為什麼選擇 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,就能隨時隨地享受自己的無損音樂庫。