只需要一個Navidrome網頁,給您Spotify的體驗。
Navidrome是一款界面簡單的音樂串流伺服器服務。以網頁界面存取,支援在播放時轉碼壓縮音訊,讀取m3u建立播放清單,並顯示本機歌詞檔。
此外,Navidrome支援Subsonic API,可用支援此API的手機APP播放音樂。
缺點:不支援資料夾模式播放音樂, 官方FAQ明說了不支援沒有演出者訊息的音樂檔案。如果您很在意這一點,建議改用 Jellyfin。
1. 架設Navidrome#
安裝 Docker
建立放置資料的目錄
cd ~
mkdir navidrome
mkdir navidrome/data
cd nvaidrome
- 撰寫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"
- 啟動容器,不需要sudo
docker compose up -d
- 容器建立的volume可能有權限問題,參考 這篇Issue提到的作法,修改權限,再重新啟動容器:
# 取得容器ID
docker ps
sudo chown -R 1000:1000 ./data
docker restart <容器ID>
瀏覽器開啟
http://localhost:4533
,建立一個管理員帳號登入後Navidrome即會顯示掃描到的專輯。
點選右上角Settings,切換為中文
可設定要不要給音樂轉碼。例如mp3如果原始檔案音質都是320K的話,建議將預設音質也調成320,免得遭到壓縮。
您還可以參閱 官方說明,將Last.fm和Spotify整合到網頁界面。這樣Navidrome即會用Last.fm爬取本機專輯的更多資料,並會自動上傳您的聆聽紀錄。
2. 從外部網路存取Navidrome#
- 開放防火牆的4533通訊埠:
sudo ufw allow 4533/tcp
sudo ufw reload
安裝 內網穿透軟體,例如ZeroTier,即可用
http://ZeroTier分配的虛擬IP:4533
網址存取Navidrome的伺服器了。如果需要播放音樂的手機APP,請看 Navidrome官方推薦列表