只需要一個Navidrome,給您隨身Spotify的體驗。
Navidrome是一款界面簡單的音樂串流伺服器服務。以網頁界面存取,播放音樂的時候會類比唱片轉動的樣子,我覺得蠻可愛的。
支援在播放時轉碼壓縮音訊,讀取m3u8播放清單,並顯示本機歌詞檔。
由於Navidrome使用Subsonic API,除了網頁界面外,你還可以用支援的手機APP遠端播放音樂,隨時隨地存取個人曲庫。
缺點:Navidrome不支援資料夾模式播放音樂, 官方FAQ明說了不支援沒有演出者訊息的音樂檔案。如果您很在意這一點,建議改用 Gonic by sentriz或者 Jellyfin。
1. 架設Navidrome#
安裝 Docker
建立放置資料的目錄
cd ~
mkdir -p navidrome/data
cd nvaidrome
- 撰寫Docker-compose,執行
vim docker-compose.yml
,填入:
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
# Docker volume的擁有者,預設是目前的使用者
user: 1000:1000
ports:
- "4533:4533"
restart: unless-stopped
environment:
# 設定檔維持預設,若要調整請參閱:https://www.navidrome.org/docs/usage/configuration-options/
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
# 將設定檔放在docker-compose所在目錄
- "./data:/data"
# 冒號左邊是音樂檔所在的目錄
- "/home/user/Music/:/music:ro"
- 啟動容器
docker compose up -d
- 容器建立的volume可能有權限問題,參考 這篇Issue提到的作法,修改權限,再重新啟動容器:
# 取得容器ID
docker ps
sudo chown -R 1000:1000 ./data
docker restart <容器ID>
瀏覽器開啟
http://localhost:4533
或http://電腦區域IP:4533
,建立一個管理員帳號登入後點選右上角Settings,切換為中文
可設定要不要在串流的時候給音樂轉碼。例如mp3如果原始檔案音質都是320K的話,建議將預設音質也調成320,免得遭到壓縮。
雖然Navidrome網頁界面支援讀取ID3歌詞,但是歌詞必須有時間戳才能顯示。
Navidrome不支援以資料夾模式瀏覽音樂,音樂檔必須要有ID3標籤才能分類。但若客戶端請求,Navidrome依然會傳回類似資料夾的結構,分類方式為:「演出者/專輯/歌曲」。
您還可以參閱 官方說明,將Last.fm和Spotify整合到網頁界面。這樣Navidrome即會用Last.fm爬取本機專輯的更多資料。聆聽紀錄則是可以上傳到ListenBrainz。
2. 安裝手機版Navidrome客戶端#
如果要用其他裝置連線到Navidrome伺服器,請讓二部裝置在同一個Wifi下,並輸入http://電腦IP:4533
連線。
個人覺得Navidrome網頁界面就夠用了,但若要在手機背景播放,請還是找一款支援Subsonic API的客戶端吧。
我測試了一些開源的方案:
電腦端推薦 Feishin
Android推薦 Tempo by CappielloAntonio
iOS推薦 Amperfy by BLeeEZ
3. 從外部網路存取Navidrome#
- 開放防火牆的4533通訊埠:
sudo ufw allow 4533/tcp
sudo ufw reload
- 安裝
內網穿透軟體,例如ZeroTier,即可用
http://虛擬區域IP:4533
網址存取Navidrome的伺服器了。