快轉到主要內容

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

Linux系統 Self-hosting自架 Media Server
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

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

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

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

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

1. 架設Navidrome
#

  1. 安裝 Docker

  2. 建立放置資料的目錄

cd ~
mkdir navidrome
mkdir navidrome/data
cd nvaidrome
  1. 撰寫Docker-compose,執行vim docker-compose.yml,填入:
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
docker compose up -d
  1. 容器建立的volume可能有權限問題,參考 這篇Issue提到的作法,修改權限,再重新啟動容器:
# 取得容器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通訊埠:
sudo ufw allow 4533/tcp
sudo ufw reload
  1. 安裝 內網穿透軟體,例如ZeroTier,即可用http://ZeroTier分配的虛擬IP:4533網址存取Navidrome的伺服器了。

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

相關文章

架設Nextcloud個人雲端硬碟 + 網頁版LibreOffice教學 (docker-compose + ZeroTier內網穿透)
Linux系統 Self-hosting自架 Nextcloud LibreOffice Media Server
Linux如何安裝 & 使用ZeroTier建立虛擬區網
Linux系統 Self-hosting自架 Linux ZeroTier
ZeroTier使用教學:建立虛擬區網的VPN軟體
Linux系統 Self-hosting自架 VPN ZeroTier

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。