Ivon今次要分享的是一款簡單的音樂串流伺服器「Gonic」。它可以跑在私人Linux伺服器或者NAS上,提供Subsonic API介面,讓你遠端播放硬碟上的音樂檔,串流聆聽歌曲。
說到音樂串流伺服器,Ivon先前有分享過Navidrome,內建網頁播放器的解決方案。
Gonic跟Navidrome差異最大的點就是支援傳統的「資料夾模式」播放音樂,就是play by folders,因此你可以使用硬碟資料夾結構來瀏覽音樂。這很適合音樂ID3標籤不齊全的用戶使用,也就是一個資料夾一張專輯的模式來整理音樂,並且沒有使用MP3Tag軟體習慣的用戶。
Gonic還有以下功能:
- 支援以資料夾或標籤搜尋音樂
- 短小精悍,搜尋速度快
- 內建last.fm與listenbrainz服務,能夠線上統計你聆聽過的歌曲
- 依照last.fm的資料推薦類似歌曲
- 提供點唱機模式(Jukebox Mode),能反過來以手機遠端控制電腦揚聲器播放音樂。
但相對來說Gonic的功能很精簡,開發者沒有像Navidrome那樣製作網頁播放器,你得自己準備播放音樂客戶端。
其實,就長遠來看,給自己的音樂收藏打上正規的ID3標籤依然是比較好的方式,很多音樂軟體都用這種方式分類。加上有MusicBrainz Picard這類自動打ID3標籤軟體出現,應該盡量減少依賴資料夾模式來播放音樂。對有強迫症的人來說看到「未知的演出者」資訊難道不會覺得煩躁嗎~?
1. 架設Gonic伺服器服務#
Gonic程式主要由sentriz開發,參考Github指示,我使用Docker部署。
安裝Docker
新增docker-compose
mkdir ~/gonic
cd ~/gonic
vim docker-compose.yml
- 填入以下內容,新增音樂路徑
version: "2.4"
services:
gonic:
image: sentriz/gonic:latest
environment:
- TZ=Asia/Taipei # 設定時區
- GONIC_JUKEBOX_ENABLED=true # 開啟點唱機模式
ports:
- 4747:80 #外部通訊埠
volumes:
- ./data:/data # 將Gonic資料庫存在目前目錄
- /home/user/Music/:/music:ro # 左邊填寫硬碟音樂所在目錄
- /home/user/Music/podcasts/:/podcasts # 左邊填寫硬碟Podcast所在目錄(如果沒有就填一個空的目錄)
- /home/user/Music/playlists/:/playlists # 左邊填寫硬碟播放清單所在目錄(如果沒有就填一個空的目錄)
- ./cache:/cache # 快取目錄
# 加入audio群組,掛載音效裝置,才可以使用點唱機模式
group_add:
- audio
devices:
- /dev/snd:/dev/snd
- 啟動服務
docker compose up -d
用瀏覽器開啟
http://Linux伺服器IP:4747
,登入帳號,預設帳密都是admin。登入後按首頁的password修改密碼。點選Recent folders → Scan開始掃描,第一次會比較久,建立資料庫之後就很快了。
(選擇性)申請一組last.fm的API金鑰和祕密,只要填寫APP名稱即可。之後在Gonic這裡填入,再點選Link,開始記錄聆聽的音樂。聆聽音樂是在伺服端紀錄的,一有請求就會傳送聆聽紀錄,客戶端不需要再設定。
最後,如果要在外網存取Gonic服務,設定內網穿透軟體
2. 安裝Gonic客戶端#
需要選擇相容Subsonic API的程式。連線方法都很類似,只要在伺服器位址輸入Gonic伺服器的IP位址,還有帳號密碼即可。
電腦端的話有Feishin和草莓播放器。可惜的是它們不支援依照資料夾模式播放音樂!
尋找許久,我找到了一個界面還行的Jamstash,結果還是要一款類似Navirdrome的網頁播放器呀!可是,作者自己架的網站,還有Chrome應用程式都掛了,所以得用Docker跑。
我採用fkrivsky/jamstash維護的映像檔,跟Gonic跑在同一個伺服器(可以把這個服務跟Gonic寫在同一個docker-compose裡面)
version: "3"
services:
app:
image: 'fkrivsky/jamstash'
ports:
- "8008:80"
restart: unless-stopped
開啟網頁http://Linux伺服器IP:8008
,輸入Gonic伺服器IP位址,還有帳號密碼,按Save。
即會在左側的Artist頁面列出遠端資料夾。
3. 手機Gonic客戶端#
需要選擇相容Subsonic API的APP。
Android推薦Tempo by CappielloAntonio,支援資料夾模式播放。
iOS推薦Amperfy by BLeeEZ,支援資料夾模式播放。
4. 用點唱機模式控制電腦播放音樂#
點唱機模式(Jukebox Mode)需要客戶端支援。以Jamstash為例,在設定界面勾選Jukebox Mode
這樣從手機或其他電腦選取音樂,音樂便會改從Linux伺服器連接的揚聲器播放。
如果伺服器端是Linux,不要直接用ALSA,可能安裝PipeWire的音訊伺服器會比較好操作,能夠自動切換輸出音效源。