mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
369 字
1 分钟
Docker:使用Navidrome配合音流自建音乐库

Navidrome 是一个全功能的跨平台开源音乐服务器应用,可以在 macOS、Linux、Windows 以及 Docker 等平台上运行,支持传输常见的 MP3、FLAC、WAV 等音频格式。它允许用户通过 Web 界面或 API 进行音乐库的管理和访问。提供音乐库智能管理、智能播放列表、用户权限控制以及多语言支持等多种功能。

安装#

推荐使用 Docker Com­pose 安装 Navidrome。创建 docker-compose.yml 文件,填入以下内容:

[hidecontent type=“payshow”]``` services: navidrome: image: deluan/navidrome container_name: navidrome user: 1026:100 #用户id,详细解释见后文 ports: - 4533:4533 #左侧端口如有冲突,可随意修改 volumes: - ./navidrome:/data #数据路径 - /volume1/media/music:/music #音乐路径 environment: #程序默认语言 - ND_DEFAULTLANGUAGE=zh-Hans #启用GRAVATAR头像 - ND_ENABLEGRAVATAR=true #关闭转码,如需要转码请设置为true - ND_ENABLETRANSCODINGCONFIG=false #SPOTIFY相关 # - ND_SPOTIFY_ID= # - ND_SPOTIFY_SECRET= #LAST.FM相关 # - ND_LASTFM_LANGUAGE=zh # - ND_LASTFM_APIKEY= # - ND_LASTFM_SECRET= #PROXY相关 # - HTTP_PROXY=http://proxy:port # - HTTPS_PROXY=http://proxy:port restart: unless-stopped

关于 `user` 部分,Navidrome 不建议使用 `root` 用户运行。群晖管理员用户一般是 `1026:100` ,可以使用该用户登录 SSH 终端后输入 `id username` 查询。例如我的群晖用户名是 `mikusa` :

$ id mikusa uid=1026(mikusa) gid=100(users) groups=100(users),101(administrators),65537(docker)

**如果实在是无法确定或者懒得查,那就填 `1000:1000`。**
在 `volumes` 文件夹挂载部分,官方建议为音乐文件夹设置只读 `:ro` 标记以保证不修改音乐文件。**群晖用户同时需要注意预创建 `navidrome` 数据文件夹。**
而环境变量的部分,虽然官方文档有数十条可供选择的环境变量,但实际上用到的配置不多,除了固定语言、关闭转码以外,都是些不影响使用的功能。
如果你想让 Navidrome 显示歌手头像,那么需要配置 **Spotify** 相关的部分。你需要先创建一个 Spo­tify 账户,随后在 [https://developer.spotify.com/dashboard/applications](https://developer.spotify.com/dashboard/applications) 中 Cre­ate app 创建一个应用。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100807185-image.png!miwap)
只需填写 **App name**、**App description** 以及 **Redirect URI** 这三处,Redi­rect URI 需要填写 `http://localhost/` ,即可保存。
随后返回控制台,点击应用,进入应用设置,即可获取 **Client ID** 和 **Client secret**。对应填入环境变量中的 `ND_SPOTIFY_ID` 和 `ND_SPOTIFY_SECRET` 。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100818247-image.png!miwap)
如果你想让 Navidrome 显示歌手简介、热门歌曲等相关信息,就需要在环境变量中配置 **Last.fm**。同样先创建一个 [Last.fm](https://www.last.fm/zh) 帐户,前往 [https://www.last.fm/zh/api/account/create](https://www.last.fm/zh/api/account/create) 创建 API 帐户,只用填写应用名称。提交后在 [API 应用程序](https://www.last.fm/zh/api/accounts) 页面复制粘贴 Key 和 Se­cret 到环境变量即可。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100824557-image.png!miwap)
上述两项外部功能,视个人网络状况而定,如果无法使用,你可能还需要配置 `proxy` 项。
如果你有增减环境变量的需求,请参考[官方文档](https://www.navidrome.org/docs/usage/configuration-options/#advanced-configuration)。
如果你需要使用域名访问 Navidrome,这里提供一个简单的 Ng­inx 反向代理配置,也可以直接使用宝塔等web面板的nginx代理:

server { listen 80; server_name navidrome.you.domain; return 301 https://navidrome.you.domain$request_uri; }

server { listen 443 ssl http2; server_name navidrome.you.domain; #SSL配置省略 location / { proxy_pass http://navidrome:4533; proxy_set_header Host host;proxysetheaderXRealIPhost; proxy_set_header X-Real-IP remote_addr; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto scheme; proxy_set_header X-Forwarded-Protocol scheme;proxysetheaderXForwardedHostscheme; proxy_set_header X-Forwarded-Host http_host; proxy_buffering off; } access_log /home/wwwlogs/navidrome.log; }

使用
--
启动容器后,Navidrome 便可以直接使用了,几乎不需要其他额外的设置。
初次访问 IP:4533,Navidrome 会要求你先创建管理员账户。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100910941-image.png!miwap)
因为环境变量中已经配置了默认语言,所以不用再修改用户语言,直接就是中文。
> 虽然 Navidrome 没有像 Plex 那样严格从 Mu­sicBrainz 中获取音乐数据,但你仍可以参考《[MusicBrainz 不完全使用指南](https://www.himiku.com/archives/musicbrainz.html)》为音乐添加 ID3­Tags 信息后,再添加到 Navidrome 中。
总之,只要你准备好音乐,Navidrome 就可以做到开箱即用。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100915533-image.png!miwap)
在安装 Navidrome 时配置的 Spo­tify 和 Last.fm,最终会让艺术家页可以显示头像和简介等相关信息。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100922752-image.png!miwap)
即使你不配置 Last.fm 相关的环境变量,也可以在个性化设置中勾选「启用 Last.fm 的喜好记录」,通过 Last.fm 记录你听过的音乐。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100927803-image.png!miwap)
在跳转的授权页面登录 Last.fm 账户,允许访问即可。**Navidrome 中,每个用户都可以配置自己的 Last.fm 账户,记录播放过的音乐。**
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100934393-image.png!miwap)
只要网络没问题,几乎可以实时查看正在播放的音乐。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100940602-image.png!miwap)
忘了介绍,这是 Navidrome 显示歌词的样子。**目前只能显示内嵌歌词。**
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204100947731-image.png!miwap)
移动设备上是这样的。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101003657-image.png!miwap)
手机端
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101008437-image.png!miwap)
手机端
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101016540-image.png!miwap)
手机端
顺便一提,我内嵌的是双语歌词,正常来说它应该显示成上下两行。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101026322-image.png!miwap)
现在朱军知道 Navidrome 在歌词的支持上有多糟糕了吧。
### App
为了能让 Navidrome 变得稍微好用一点点,我的建议是使用第三方客户端。Navidrome 目前支持 Sub­sonic/​Mad­sonic/​Air­sonic 协议,市面上(iOS App Store)已经有许多 Sub­sonic/​Mad­sonic/​Air­sonic 的客户端,但它们都**没有中文**。「音流」的出现,让中文用户多了一种选择。
### 音流
「[音流](https://github.com/gitbobobo/StreamMusic)」是一款国人开发的音乐播放器,支持 Sub­sonic/​Navidrome/​Jel­lyfin/​Emby/​Au­dio­Sta­tion,现已登录 An­droid、iOS,未来可能支持 Win­dows 和 tvOS 平台。音流采用 Flut­ter 开发,界面简洁美观,整体以透明和高斯模糊为主,布局类似于网易云音乐,上手基本没有门槛。你可以在[音流官网](https://aqzscn.cn/archives/stream-music-versions)获取 An­droid 安装包,或直接在 iOS App Store 搜索「音流」下载。
这里不过多介绍音流的使用方法(真没什么好说的地方)。我们只要填入 Navidrome 地址、用户名和密码登录后,就可以进入音流首页。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101157847-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101205260-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101211881-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101219447-image.png!miwap)
如果你的音乐很多,那音流可能需要先扫描一会儿。
接着,你应该注意到了首页「**主线路**」这三个字。这是音流中最让我感到惊喜的功能,它支持主备线路切换 。也就是说,你可以主线路填内网地址,备用线路填外网地址。这样当你出门的时候,音流可以自动切换到外网地址上,而当你回到家中,又自动切换回内网。由于流媒体有缓存,切换网络的过程播放音乐不会中断。
但我说不准正好准备缓冲下一首的时候切换了网络,会不会造成软件崩溃。
实测音乐是会卡住的,可能是我 Navidrome 的问题。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101421767-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101427265-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101434482-image.png!miwap)
音流的各方面都很像网易云。首页按最新专辑、每日推荐、最近播放、最常播放和随机专辑依次排列。其中,每日推荐是随机的五十首音乐。若是觉得这五十首不合现在的心情,还可以立刻刷新换一批,是个不错的功能。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101517620-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101523691-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101529117-image.png!miwap)
播放页面可以左滑进入推荐,右滑进入歌词。音流支持读取音乐中内嵌的歌词,并以双语上下两行显示。如果音流后续收费,我猜可能会从提供歌词 API 入手。只要买断切价格适中,可以考虑入手。猜错了,不是歌词。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101604618-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101610664-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101616812-image.png!miwap)
### Symfonium
评论区有朋友推荐了「[Symfonium](https://symfonium.app/)」,仅上线 **Android** 端。试用了下确实不错。内购售价 5 美元。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101656671-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101702363-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101707467-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101713613-image.png!miwap)
与音流不同,Sym­fo­nium 设计语言更贴近 An­droid 的 Ma­te­r­ial You,功能也更加强大。支持连接 Plex、Emby、Jel­lyfin、Sub­sonic、Open­Sub­sonic、Kodi、Samba (SMB v2/​v3)、Web­DAV 服务器,并支持直连云提供商(Google Drive、OneDrive、Drop­Box、Box),比目前音流能连接的服务多得多。
可能 UI 上不如音流来得简洁美观,但能自定义相当多的功能,扫库也比音流要快,算是优点之一吧。
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101802112-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101904433-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101813753-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101818367-image.png!miwap)
歌词
--
还有一款开源的歌词 / 封面 API 程序「[LrcApi](https://github.com/HisAtri/LrcApi)」,可以直接用在音流上。怪不得音流的付费项不是这个。
根据官方介绍,Lr­cApi 为音流量身打造。支持酷狗 / 聚合 API 获取 LRC 歌词,支持获取音乐 / 专辑 / 艺术家封面。安装倒也很简单,Com­pose 一把梭:

services: lyricapi: image: hisatri/lyricapi container_name: lyricapi ports: - 28883:28883 environment: - TZ=Asia/Shanghai # - API_AUTH=自定义一个鉴权key volumes: - /volume1/media/music:/music #和Navidrome一致的音乐路径 restart: unless-stopped

关于 `volumes` 挂载部分,如果你正在使用 Navidrome,可以将 Navidrome 的音乐路径映射到容器中,这样 Lr­cApi 可以直接使用你本地已存在的的 LRC 歌词。直接解决了 Navidrome 不能使用本地歌词的问题。
关于环境变量中 `API_AUTH` 的部分,如果你公开创建了 Lr­cApi 但是不想让别人白嫖,那么就可以填写这个环境变量,为 Lr­cApi 加上一个密码(header 鉴权),只有密码正确才能在音流中使用。
接着再配合 Ng­inx 反向代理。你可以把 Lr­cApi 放在 Navidrome 同一个 Ng­inx 配置里:

location /jsonapi { proxy_pass http://lyricapi:28883/jsonapi; proxy_http_version 1.1; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for; proxy_set_header Host http_host; }

这样,就可以直接通过你的 Navidrome 的链接加上 `/jsonapi` 来访问这个 API。
或者,你不喜欢用 `/jsonapi` 访问,只要将 `location /jsonapi` 中的 `/jsonapi` 改成你喜欢的就行了。比如改成 `/lrc` 。你就可以在音流中填写 [https://navidrome.you.domain/lrc](https://navidrome.you.domain/lrc) 来使用 Lr­cApi。
不过, Lr­cApi 目前还不支持获取带译文的歌词,希望后续能支持使用网易云音乐的歌词源。所以,有使用 Navidrome 的朋友,并且本地保存了不少 LRC 歌词的话,还是自建一个 Lr­cApi 效果会比较好。
* 图1:正式版音流的付费项
* 图2:音乐付费接口,把你创建的 API 或网上公开的 API 填写到**地址**中,如果有密码鉴权就把密码填在**验证信息**一栏中
* 图3:通过 API 获取到的歌词
* 图4:通过 API 获取到的本地歌词
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101940742-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101945527-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101950985-image.png!miwap)
![](https://cdn.miwap.com/mi-media/uploads/2025/02/20250204101955938-image.png!miwap)
就到这儿了,关于 Navidrome、音流或是 Sym­fo­nium 上其余的功能,就请诸位自行发现和体验吧!
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Docker:使用Navidrome配合音流自建音乐库
https://www.yunio.com/posts/docker使用navidrome配合音流自建音乐库/
作者
Sping Dream
发布于
2024-02-20
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00