雲端音樂播放器Navidrome,自架音樂串流伺服器

只需要一個Navidrome網頁,給您Spotify的體驗。

Navidrome是一款界面簡單的音樂串流伺服器服務。以網頁界面存取,支援在播放時轉碼壓縮音訊,讀取m3u建立播放清單,並顯示本機歌詞檔。

此外,Navidrome支援Subsonic API,可用支援此API的手機APP播放音樂。

缺點:不支援資料夾模式播放音樂。如果您很在意這一點,建議改用Jellyfin

1. 架設Navidrome

  1. 安裝Docker

  2. 建立放置資料的目錄

1
2
3
4
cd ~
mkdir navidrome
mkdir navidrome/data
cd nvaidrome
  1. 撰寫Docker-compose,執行vim docker-compose.yml,填入:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
version: "3"
services:
  navidrome:
    image: deluan/navidrome:0.49.2
    # Docker volume的擁有者,預設是目前的使用者
    user: 1000:1000
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
    # 設定檔維持預設,若要調整請參閱:https://www.navidrome.org/docs/usage/configuration-options/
    ND_ENABLETRANSCODINGCONFIG: true
    ND_SCANSCHEDULE: 1h
    ND_LOGLEVEL: info
    ND_SESSIONTIMEOUT: 24h
    ND_BASEURL: ""
    volumes:
    # 將設定檔放在docker-compose所在目錄
      - "./data:/data"
    # 冒號左邊是音樂檔所在的目錄
      - "/home/user/Music/:/music:ro"
  1. 啟動容器,不需要sudo
1
docker compose up -d
  1. 容器建立的volume可能有權限問題,參考這篇Issue提到的作法,修改權限,再重新啟動容器:
1
2
3
4
5
# 取得容器ID
docker ps

sudo chown -R 1000:1000 ./data
docker restart <容器ID>
  1. 瀏覽器開啟http://localhost:4533,建立一個管理員帳號

  2. 登入後Navidrome即會顯示掃描到的專輯。

  3. 點選右上角Settings,切換為中文

  4. 可設定要不要給音樂轉碼。例如mp3如果原始檔案音質都是320K的話,建議將預設音質也調成320,免得遭到壓縮。

  5. 您還可以參閱官方說明,將Last.fm和Spotify整合到網頁界面。這樣Navidrome即會用Last.fm爬取本機專輯的更多資料。

2. 從外部網路存取Navidrome

  1. 開放防火牆的4533通訊埠:
1
2
sudo ufw allow 4533/tcp
sudo ufw reload
  1. 安裝內網穿透軟體,例如ZeroTier,即可用http://ZeroTier分配的虛擬IP:4533網址存取Navidrome的伺服器了。

  2. 如果需要播放音樂的手機APP,請看Navidrome官方推薦列表


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要登入Github帳號才能留言。支援markdown語法,方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。