用 Navidrome 建立自己的私人音樂收藏

因為今年又去了一趟大港開唱,也聽了很多樂團的專場,所以瘋狂的收了不少的 CD。畢竟就算把 Spotify 的音質調到最高,整個聽感還是比不上 CD 啊。所以我說那個 Spotify Hi-Fi 還是什麼的講了好幾年了到底要不要推出?(我用不太懂現在有提供無損音檔服務的 KKBOX 和 Apple Music,這是我的問題)

2026-10 Update: 我已經又跳來用 Apple Musc 一陣子了

那,為了整理這些新加入的和原本的 CD,我原本的做法是都會把他們轉成 FLAC 檔案,然後放在 NAS 上用播放軟體開來聽。這樣的操作體驗還滿麻煩的,如果能有一個系統可以幫我管理、又可以讓我在外面隨時可以聽到自己的無損音檔就好了。

於是發現了 Navidrome 這個專案,而且很簡單的用 docker compose 就可以跑起來。然後可以搭配 CloudFlare 的 Zero Trust Application 對外開放,不用開放本機的 port。這不但直接處理掉 HTTPS 憑證的問題、把基本的保護做起來、還可以設定 WAF Rule。

以下是我的 docker-compose.yaml

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 1000:1003 # should be owner of volumes
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_DEFAULTTHEME: "Spotify-ish"
      ND_IMAGECACHESIZE: "2048MB"
      ND_ENABLEEXTERNALSERVICES: true
      ND_LOGLEVEL: info
      ND_ENABLEDOWNLOADS: true
      ND_SPOTIFY_ID: "xxx"
      ND_SPOTIFY_SECRET: "xxx"
      ND_LASTFM_ENABLED: true
      ND_LASTFM_APIKEY: "xxx"
      ND_LASTFM_SECRET: "xxx"
      ND_ENABLEGRAVATAR: true
      ND_ENABLECOVERANIMATION: false
    volumes:
      - "./data:/data"
      - "./music:/music:ro"
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    command: tunnel run music
    environment:
      - TUNNEL_TOKEN=${TUNNEL_TOKEN}
    restart: unless-stopped
  • 我有另外串接 Spotify 取得專輯插圖、以及串接 Last.fm 的 API 來做聆聽音樂的記錄。如果你不需要的話這些在 environment 裡面的設定可以拿掉。Navidrome 的各項設定可以參考這裡
  • 我的 volume 是透過 autofs 用 NFS mount NAS 上的資料夾,然後再建立個. symbolic link 到 ./music。你也可以不這麼做

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。