從零搭建屬於自己的音樂廳:Navidrome

天下苦Q音、網易雲久矣!一款音樂app做的那麼臃腫,塞了無數無用的功能,還要開不同等級的會員。如果你只想享受音樂,恰巧手裏有NAS或者雲服務器,不妨跟隨這篇教程搭建一個私人音樂廳。

以下所有內容完全是我參照官方文檔和部分其他博客教程慢慢摸索而來,其實網上充滿了這類教程,搜索引擎隨便搜一下能跳出來一大堆,但根據我搭建的經驗,幾乎所有的教程(包括一部分官方文檔)都有坑,所以在此我來寫一個我認爲完美的教程。

現在小黑盒社區支持web訪問,所以你可以用電腦看這篇教程。如果你想一段時間後搭建,請記得收藏或插眼。

零、搭建前準備

  1. NAS或與服務器(必須)

    其實只需要準備一個帶處理器、網卡、硬盤的設備,如果你的電腦可以24小時開機,那麼直接用你的電腦也可以。另外請保證你的設備支持Docker。

  2. 公網IP(可選,推薦)

    如果你希望在任何有網的地點都能訪問你的音樂庫,那麼就需要一個公網IP,但是如果你只在家裏聽歌,就不用考慮了。NAS請先諮詢運營商開通公網IP,並在路由器上設置NAT;雲服務器購買時注意創建公網IP。

  3. 域名(可選)

    更方便的訪問音樂庫,不是必要的。本教程不會講解相關部分,如有需要,請在搜索引擎上檢索反向代理相關信息。

  4. SSL證書(可選)

    保證訪問安全,但申請麻煩,用在這裏有些浪費。本教程不會講解相關部分,如有需要,請在搜索引擎上檢索ssl證書相關信息。

  5. 阿里雲盤賬號(可選,推薦)

    將網盤裏的音樂同步到本地,注意要先在備份盤的根目錄下創建“navidrome”文件夾。

注意事項:

若使用雲服務器,購買時哪怕降一降其他配置,也要儘量保證帶寬足夠大,不然聽不轉碼的無損音質時可能存在卡頓。硬盤空間也很重要,每首高品質音樂大概佔用100MB,一張專輯輕鬆突破1GB,硬盤容量不是很貴,且直接關係到能存多少歌,建議在保證帶寬的情況下拉滿。

另外,雲服務器運營商一般都會配置嚴格的防火牆/安全組,請根據需要放行入方向的以下端口出方向的所有端口

  • TCP : 9000(必須):portainer http

  • TCP : 9443(可選):portainer https


  • TCP : 4533(必須):navidrome

  • TCP : 8080(可選):filebrowser

它們的作用會在後面介紹。

一、安裝Docker

docker

如果把你的服務器比作一款遊戲,那麼Docker就是這款遊戲的模組管理器,很多應用的開發者都已經把應用打包爲Docker鏡像,相當於mod文件,如果有了Docker(模組管理器),那麼使用這些容器(mod)就變得相當容易。

我手上沒有NAS,並且支持docker的品牌很多,所有我在此無法給出NAS上安裝docker的詳細步驟,建議參考自己品牌的教程安裝即可。

以下爲在雲服務器上安裝docker的步驟,如果你已經安裝好docker,請跳過。

以下命令請在終端中使用root用戶運行,每行爲一個命令,依次執行。

  1. 如果有條件,重裝系統,選擇Ubuntu Noble 24.04 (LTS),Ubuntu Jammy 22.04 (LTS)或Ubuntu Focal 20.04 (LTS)。

  2. 卸載舊版本的docker

    for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

  3. 設置docker倉庫(使用清華鏡像源)

    apt-get update

    apt-get install ca-certificates curl

    install -m 0755 -d /etc/apt/keyrings

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

    chmod a+r /etc/apt/keyrings/docker.asc

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

  4. 安裝docker

    apt-get update

    apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

二、準備容器鏡像和需要的key

本教程中需要使用的容器如下,建議先拉取這些鏡像(下載需要的mod文件)。

  • portainer/portainer-ce:2.21.5 (可選,推薦,docker管理)

  • deluan/navidrome:0.54.3 (必須,重點就是這個,還能不用?)

  • tickstep/aliyunpan-sync:v0.3.4 (可選,推薦,將網盤文件同步到本地)

  • filebrowser/filebrowser:v2-s6 (可選,通過網頁管理文件)

對於每個鏡像,在終端中以root身份運行命令:

docker pull portainer/portainer-ce:2.21.5

……

如果提示網絡超時或相關錯誤,請參考 https://fast360.xyz/ 配置國內加速。

因爲國內源存在時效性,無法在此處提供更詳細的教程。

接下來,如果你希望自己的音樂庫可以顯示歌手/專輯詳情,每年有年度總結的話,需要申請兩個key:

  1. lastfm https://www.last.fm/zh/api/account/create 

  2. spotify https://developer.spotify.com/dashboard/create 

註冊/登錄後,隨便填寫相關信息,對於Redirect URIs或回調地址,請填寫 http://127.0.0.1 。

創建完成後,不要關閉這兩個網頁,後面會用到。

三、安裝Portainer

大部分NAS和服務器都沒有圖形界面,管理這些容器(mod)比較麻煩,Portainer解決了這個問題,安裝Portainer後,即可通過網頁上可視化的操作管理容器。

以下命令請在終端中使用root用戶運行,每行爲一個命令,依次執行。

  1. 先創建一個存儲數據庫的卷

    docker volume create portainer_data

  2. 啓動!

    docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.5

  3. 接下來訪問 http://ip:9000 就可以看到網頁了。

    設置用戶名密碼後,進入管理界面,按順序點擊。


連接本地

查看Stacks

創建Stack

四、安裝Navidrome和相關容器

  1. 在服務器中確保以下文件存在,若不存在前面的目錄請手動創建。

    /root/docker/navidrome-music/aliyunpan_config.json

    /root/docker/navidrome-music/data/file-browser/filebrowser.db

    /root/docker/navidrome-music/data/file-browser/settings.json

    第一個文件:

    在此處 https://github.com/tickstep/aliyunpan/releases/tag/v0.3.5 下載windows版,用自己賬號登錄一遍,就會在本地看到aliyunpan_config.json,手動上傳到服務器的正確位置即可

    第二個文件:

    空文件即可,隨便新建一個文件改一下文件名和後綴,上傳到正確位置

    第三個文件:

    在此處 https://raw.githubusercontent.com/filebrowser/filebrowser/refs/heads/master/docker/root/defaults/settings.json下載後,上傳到正確位置。

  2. 在上一步打開的網頁處,填入相關內容


紅框處填一個名稱,例如“navidrome-music”;綠色箭頭處粘貼下方內容,會自動處理格式。

services:

navidrome:

image: deluan/navidrome:0.54.3

container_name: navidrome

ports:

- "4533:4533"

restart: unless-stopped

environment:

# Optional: put your config options customization here. Examples:

ND_SCANSCHEDULE: 10m

ND_LOGLEVEL: info

ND_SESSIONTIMEOUT: 24h

ND_BASEURL: ""

ND_LASTFM_LANGUAGE: zh

ND_LASTFM_APIKEY:!

ND_LASTFM_SECRET:!

ND_SPOTIFY_ID:!

ND_SPOTIFY_SECRET:!

volumes:

- "/root/docker/navidrome-music/data/navidrome:/data"

- "/root/docker/navidrome-music/music:/music:ro"

aliyunpan-sync:

image: tickstep/aliyunpan-sync:v0.3.4

container_name: aliyunpan-sync

restart: always

volumes:

- /root/docker/navidrome-music/music/from-aliyunpan:/home/app/data:rw

- /root/docker/navidrome-music/data/aliyunpan-sync:/home/app/config/sync_drive

- /root/docker/navidrome-music/aliyunpan_config.json:/home/app/config/aliyunpan_config.json

environment:

- TZ=Asia/Shanghai

- ALIYUNPAN_DOWNLOAD_PARALLEL=5

- ALIYUNPAN_UPLOAD_PARALLEL=5

- ALIYUNPAN_DOWNLOAD_BLOCK_SIZE=10240

- ALIYUNPAN_UPLOAD_BLOCK_SIZE=10240

- ALIYUNPAN_PAN_DIR=/navidrome

- ALIYUNPAN_SYNC_MODE=download

- ALIYUNPAN_SYNC_POLICY=exclusive

- ALIYUNPAN_SYNC_CYCLE=infinity

- ALIYUNPAN_SYNC_DRIVE=backup

- ALIYUNPAN_SYNC_LOG=true

- ALIYUNPAN_LOCAL_DELAY_TIME=3

file-browser:

image: filebrowser/filebrowser:v2-s6

container_name: file-browser

restart: always

ports:

- "8080:80"

volumes:

- /root:/srv

- /root/docker/navidrome-music/data/file-browser/filebrowser.db:/database/filebrowser.db

- /root/docker/navidrome-music/data/file-browser/settings.json:/config/settings.json

environment:

- PUID=$(id -u)

- PGID=$(id -g)

別忘了在“!”處填寫自己的key。

  1. 滑到最底下,點擊按鈕


部署容器

  1. 如果一切正常,會看到這裏均顯示“healthy”或“running”,總之是綠色的。


綠色=沒問題,黃色/紅色=有問題,若有問題,請檢查前面的步驟是否有誤。

五、使用方法

如果一切按我的教程操作,那麼可以打開瀏覽器訪問 http://ip:4533 創建賬號密碼。

把你的音樂文件上傳到阿里雲盤的備份盤/navidrome目錄下,你的服務器會自動同步這個目錄。注意,千萬不要在服務器未完全同步雲盤內文件的情況下,刪除雲盤內尚未同步的文件,有可能導致容器卡死。

或者,打開 http://ip:8080 ,首次使用admin/admin登錄(請記得修改密碼),然後打開 http://ip:8080/files/docker/navidrome-music/music/ 在此處上傳文件。

上傳文件的位置

在 http://ip:4533 的右上角點擊完全掃描,就能看到上傳的所有專輯了

完全掃描位置

別忘了在設置(右上角頭像-個性化)頁面打開“啓用 Lastfm 的喜好記錄”,這樣就能把聽歌記錄同步到lastfm上了。

設置頁面

網頁已經做了桌面端和移動端的適配,但功能稍顯不足,接下來推薦兩個支持navidrome,好用的應用:

  • Feishin:開源、免費,支持Linux/macOS/Windows,https://github.com/jeffvli/feishin 

  • 音流:非開源、部分免費,免費功能足夠用,支持Android/iOS/macOS/Windows,https://music.aqzscn.cn/ 

其他app可自行搜索。

以上就是本教程的全部內容,如果覺得對你有幫助,請點贊充電,感激不盡!

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com