前言
随着国内版权意识的提高,现在想听一首歌曲,往往我们可能要切换好几个个 APP ——网易云音乐、QQ 音乐、咪咕音乐等,切换起来很麻烦,并且还需要开通 VIP,有的 APP 就算你买了 VIP 服务,下载的歌曲还是加密的,一旦 VIP 到期后某些歌你还听不了,非常蛋疼,最蛋疼的是有的歌曲还需要单独付费购买,不禁想问这 VIP 的用处是啥。
于是我不得不转到了 YouTube Music 加入一个家庭组会员一年仅需 40元 左右,即可获得 YouTube Music & YouTube视频双会员,就目前来看,我想听的歌都是找得到的,我非常满意,但是有一个缺点,必须得富强,才能使用,有时候场合也不是很方便,还是想低调点使用。
后续不得不考虑自建方案,不用太多,把自己经常听的几首放进去就够用了,但是找来找去一直没找到合适的方案,感觉都很繁琐,不适合我这种懒人,好在功夫不负有心人,终于让我找到了 Navidrome,它支持 docker compose 部署,界面也是简洁、美观,让我十分喜欢。
本人自建音乐公益服(音海拾贝)
群组链接:https://t.me/yinhai_chat 通知频道:https://t.me/yinhai_notify
Navidrome 简介
Navidrome 是一款基于 Web 的开源音乐收藏服务器和流媒体播放器。它让您可以自由地从任何浏览器或移动设备收听您的音乐收藏。它就像您的个人 Spotify!
1.优点:
- 处理非常大的音乐收藏
- 播放几乎所有可用的音频格式
- 读取并使用您精心策划的所有元数据(id3标签)
- 多用户,每个用户都有自己的播放次数、播放列表、收藏夹等。
- 资源占用极低:例如:300GB 的曲库(约 29000 首歌曲)占用的 RAM 不到 50MB
- 多平台,可在 macOS、Linux 和 Windows 上运行。还提供 Docker 镜像
- 可立即使用的 Raspberry Pi 二进制文件和 Docker 镜像
- 自动监控库中的变更,导入新文件并重新加载新元数据
- 基于 Material UI 的主题化、现代化、响应式的 Web 界面,用于管理用户和浏览您的图书馆
- 与所有 Subsonic/Madsonic/Airsonic 客户端兼容。查看已测试客户端列表
- 即时转码/降采样。可按用户/玩家设置。支持 Opus 编码
- 集成音乐播放器
2.缺点:
- 暂时没找到自动获取歌词的方法 (已找到方案,可参考Navidrome 番外,解决歌词显示问题)
- 不支持通过界面 上传 & 删除 歌曲(后续我们会通过其他的方式实现 上传 & 删除 功能)
3.官方演示站点:

https://demo.navidrome.org/app/
4.项目地址:
Docker Hub地址:https://hub.docker.com/r/deluan/navidrome
Github地址:https://github.com/navidrome/navidrome
开始搭建
1.搭建 Navidrome
我们将采用 docker compose 来搭建,docker & docker compose 的安装我就不赘述了,谷歌随便一搜一大把。
apt update -y ## 安装前先升级系统包
mkdir /home/docker/navidrome ## 创建文件夹
cd /home/docker/navidrome ## 进入文件夹
nano docker-compose.yml ## 创建 yml 文件
贴一个实际我在用的 docker-compose 配置示例(可以通过 LASTFM & SPOTIFY 削刮封面图等信息)
version: "3"
services:
navidrome:
image: deluan/navidrome:latest # 指定程序版本版本,例如: 0.56.1
ports:
- "4533:4533" # 左边可以改成自己服务器未被占用的端口
environment:
# 可选配置选项,以下是一些示例:
ND_SCANSCHEDULE: 5m # 扫描音乐文件夹的时间间隔
ND_LASTFM_ENABLED: "true" # 是否启用 Last.fm 集成(留空表示禁用)
ND_LASTFM_APIKEY: a0ac723bb9917c49f65ad # 替换为你自己的 Last.fm API Key
ND_LASTFM_SECRET: 3d0c1db7ded3af # 替换为你自己的 Last.fm Secret
ND_SPOTIFY_ID: 567e1ab95ad9cd2393af # 替换为你自己的 Spotify ID
ND_SPOTIFY_SECRET: 34b420f48d51520c # 替换为你自己的 Spotify Secret
ND_LASTFM_LANGUAGE: zh # 设置 Last.fm 的语言为中文
ND_LOGLEVEL: info # 日志级别,推荐使用 info
ND_SESSIONTIMEOUT: 72h # 用户会话超时时间,例如 72 小时
ND_BASEURL: "" # 如果需要反向代理,设置基础 URL(留空表示不使用)
ND_MUSICFOLDER: "/music" # 指定多个音乐文件夹路径,用冒号分隔
ND_LYRICSPRIORITY: "embedded,.lrc,.txt" #歌词优先
ND_ENABLEDOWNLOADS: "false" #启用下载
ND_SUBSONIC_DEFAULTREPORTREALPATH: "false" #在 API 中报告音乐文件的真实路径
ND_ENABLESHARING: "false" #启用共享
ND_ENABLETRANSCODINGCONFIG: "false" #启用转码
volumes:
- "/home/docker/navidrome/data:/data" # 冒号左边修改为本地存储 Navidrome 数据的路径
- "/home/docker/navidrome/music:/music:rw" # 冒号左边修改为本地音乐文件夹路径,挂载模式改为 rw
restart: unless-stopped # 容器在意外停止时自动重启
2.获取 LASTFM & SPOTIFY 密钥信息
1).获取 LASTFM 密钥信息
首先需要一个 Last.fm 免费帐户,其次你要能访问 Last.fm
转到 https://www.last.fm/api/account/create 并创建一个 API 帐户。只有应用程序名称 字段是强制性的

提交表单后,可以从 API account Created 页面获取 API Key 和 Shared Secret

将获取的密钥信息复制到刚才的 docker-compose.yml 文件内进行替换。
2).获取SPOTIFY 密钥信息
在 Spotify 中创建一个免费帐户,然后按照以下步骤操作:
单击 Spotify 的开发者仪表板中的 CREATE AN APP 按钮:https://developer.spotify.com/dashboard/applications

填入 应用名称 应用程序描述 重定向URL(可以随意填写)计划使用(建议全部勾选)然后保存即可


将获取的密钥信息复制到刚才的 docker-compose.yml 文件内进行替换。
3.运行
密钥替换完毕后,我们同时按住 Ctrl+X 键,输入 Y , 回车
然后输入以下命令启动:
docker compose up -d
输入IP:4533就可以访问了
域名访问,可以参考这篇文章最后的配置域名访问部分:https://makifx.com/1240.html
4.成品展示
目前刚部署上,还没存几首,仅作展示:

更新
cd /home/docker/navidrome # 进入安装目录/
docker compose pull # 拉取最新镜像/
docker compose up -d # 直接升级容器,自动停止并立刻重建新的容器。/
docker image prune # 删除所有未被 tag 标记和未被容器使用的镜像
卸载
cd /home/docker/navidrome
docker compose down
cd ..
rm -rf /home/docker/navidrome # 完全删除
解决音乐 上传 & 删除 问题(番外)
1.搭建
我们将采用 filebrowser 来管理歌曲文件,可以有效解决音乐 上传 & 删除 问题。
直接输入以下命令运行即可:
docker run \
-v filebrowser_data:/srv \
-v filebrowser_database:/database \
-v filebrowser_config:/config \
-p 8080:80 \
filebrowser/filebrowser
2.成品展示
