Lazy loaded image
当Navidrome遇上音流——个人音乐库完美解决方案
字数 1422阅读时长 4 分钟
2025-1-20
2025-1-21
type
status
date
slug
summary
tags
category
icon
password
网址

Navidrome介绍

Navidrome 是一开源的音乐服务器软件,可以用来自建云端音乐播放器,它兼容Subsonic、Aironic 播放器,你可以将Navidrome打造成个人音乐流媒体服务平台。 Navidrome 支持各大平台,包括:Windows 、macOS 、Linux。
 

音流介绍

音流是一款NAS 音乐播放器,可以连接到您部署在NAS 上的音乐服务,能让您在不同平台享受一致的音乐盛宴。 目前支持的音乐服务: Subsonic,Navidrome,Emby,Jellyfin,AudioStation,Plex.
 
 
既然是个人Nas使用,肯定是推荐使用docker搭建服务啦。以下主要介绍docker环境下服务的搭建。

Navidrome的搭建

docker-compose配置文件
 
基础配置环境变量
作为环境变量
描述
默认值
ND_CONFIGFILE
从外部配置文件加载配置
"./navidrome.toml"
ND_MUSICFOLDER
存储音乐库的文件夹。可以是只读的
"./music"
ND_DATAFOLDER
存储应用程序数据 (DB) 的文件夹
"./data"
ND_CACHEFOLDER
存储缓存数据(转码、图像……)的文件夹
"<DataFolder>/cache"
ND_LOGLEVEL
日志级别。用于故障排除。可能的值:error,warn,info,debug,trace
"info"
ND_ADDRESS
服务器将绑定到的地址。可以是 IPv4、IPv6 或 UNIX 套接字文件 ( unix:/path/to/file)
0.0.0.0::(所有 IP)
ND_BASEURL
配置代理后面的 Navidrome 的基本 URL(示例:/musichttps://music.example.com
空的
ND_PORT
Navidrome 将监听的 HTTP 端口
4533
ND_ENABLEINSIGHTSCOLLECTOR
控制服务器是否运行其匿名数据收集功能以帮助改进项目。
true
高级配置环境变量
作为环境变量
描述
默认值
ND_ALBUMPLAYCOUNTMODE
更改专辑播放次数的计算方式。设置为 时"normalized",专辑播放次数将除以专辑曲目数
"absolute"
ND_AUTHREQUESTLIMIT
单个 IP 期间可以处理多少个登录请求AuthWindowLength。设置为0以禁用限制器
5
ND_AUTHWINDOWLENGTH
认证速率限制的窗口长度
"20s"
ND_AUTOIMPORTPLAYLISTS
启用/禁用.m3u播放列表自动导入
true
ND_DEFAULTPLAYLISTPUBLICVISIBILITY
默认将导入的播放列表设置为公开
false
ND_ARTISTARTPRIORITY
配置查找艺术家图像的顺序。
"artist.*, album/artist.*, external"
ND_BACKUP_PATH
存储备份的路径。设置为""可禁用备份
""(已禁用)
ND_BACKUP_SCHEDULE
安排自动备份。使用Cron 语法
""(已禁用)
ND_BACKUP_COUNT
要保留的备份数量
0(已禁用)
ND_COVERARTPRIORITY
配置查找封面图片的顺序。使用特殊embedded值从音频文件中获取嵌入的图片
cover.*, folder.*, front.*, embedded, external
ND_COVERJPEGQUALITY
设置调整封面图片大小后的 JPEG 质量百分比
75
ND_DEFAULTDOWNSAMPLINGFORMAT
当客户端请求降采样时要转码的格式(指定 maxBitrate 而不指定格式)
"opus"
ND_DEFAULTLANGUAGE
设置从新浏览器登录时 UI 使用的默认语言。此值必须与resources/i18n中的文件名之一匹配。例如:对于简体中文,它必须是zh-Hans(区分大小写)
"en"
ND_DEFAULTTHEME
设置从新浏览器登录时 UI 使用的默认主题。此值必须与 UI 中的某个选项匹配
"Dark"
ND_ENABLEARTWORKPRECACHE
启用新添加音乐的图像预缓存
true
ND_ENABLECOVERANIMATION
控制 UI 中的播放器是否为专辑封面制作动画(旋转)
true
ND_ENABLEDOWNLOADS
在 UI 中启用从服务器下载音乐/专辑/艺术家/播放列表的选项
true
ND_ENABLEEXTERNALSERVICES
将其设置为false完全禁用所有外部集成,包括匿名数据收集和漂亮的登录背景图像
true
ND_ENABLEFAVOURITES
在用户界面中启用歌曲/专辑/艺术家的“心”/“喜爱”切换(映射到 Subsonic 客户端中的“星”/“加星标”)
true
ND_ENABLEGRAVATAR
使用Gravatar图片作为用户头像,需要填写用户邮箱
false
ND_ENABLELOGREDACTING
是否应在日志中删除(隐藏)敏感信息(如令牌和密码)
true
ND_ENABLEMEDIAFILECOVERART
如果设置为 false,则在请求歌曲 CoverArt 时将返回专辑 CoverArt
true
ND_ENABLEREPLAYGAIN
在 UI 中启用 ReplayGain 选项
true
ND_ENABLESHARING
启用共享功能
false
ND_ENABLESTARRATING
在用户界面中启用 5 星评分
true
ND_ENABLETRANSCODINGCONFIG
在 UI 中启用转码配置
false
ND_ENABLEUSEREDITING
允许普通用户编辑其详细信息并更改其密码
true
ND_FFMPEGPATH
可执行文件的路径ffmpeg。当 Navidrome 找不到它或者你想使用特定版本时使用它
(在 PATH 中搜索)
ND_GATRACKINGID
将基本信息发送到您自己的 Google Analytics 帐户。必须采用以下格式UA-XXXXXXXX
(已禁用)
ND_HTTPSECURITYHEADERS_CUSTOMFRAMEOPTIONSVALUE
允许X-Frame-Options使用自定义值设置标头值。例如:"SAMEORIGIN"
"DENY"
ND_IGNOREDARTICLES
对艺术家进行排序/索引时忽略的文章列表
"The El La Los Las Le Les Os As O A"
ND_IMAGECACHESIZE
图像(艺术作品)缓存的大小。设置为"0"可禁用缓存
"100MB"
ND_JUKEBOX_ENABLED
启用点唱机模式(在服务器硬件上播放音频)单击此处了解详情
false
ND_JUKEBOX_ADMINONLY
默认情况下,点唱机模式仅供管理员使用。将此选项设置为false允许任何有效用户控制它
true
(不能设置为环境变量)
Jukebox 可使用的设备列表。点击此处了解详情
(自动检测)
ND_JUKEBOX_DEFAULT
如果有多个 Jukebox.Devices 条目,则用于 Jukebox 模式的设备。单击此处了解详细信息
(自动检测)
ND_LASTFM_ENABLED
将其设置为false完全禁用 Last.fm 集成
true
ND_LASTFM_APIKEY
Last.fm API 密钥
空的
ND_LASTFM_SECRET
Last.fm API 秘密
空的
ND_LASTFM_LANGUAGE
用于从 Last.fm 检索传记的语言的两个字母代码
"en"
ND_LISTENBRAINZ_BASEURL
设置此项可覆盖默认的 ListenBrainz 基本 URL(适用于 Maloja 等自托管解决方案*
https://api.listenbrainz.org/1/
ND_LISTENBRAINZ_ENABLED
将其设置为false完全禁用 ListenBrainz 集成
true
ND_MAXSIDEBARPLAYLISTS
设置 UI 侧边栏中显示的播放列表的最大数量。请注意,数量过大可能会导致 UI 性能问题。
100
ND_MPVPATH
可执行文件的路径mpv。用于点唱机模式
(在 PATH 中搜索)
ND_MPVCMDTEMPLATE
用于构建mpv可执行文件调用的 Cmd 模板。用于Jukebox 模式
mpv --audio-device=%d --no-audio-display --pause %f --input-ipc-server=%s
ND_PASSWORDENCRYPTIONKEY
用于加密数据库中密码的密码短语。点击此处了解详情
-
ND_PLAYLISTSPATH
从哪里搜索和导入播放列表。可以是文件夹/全局列表(在 Windows 上用:或分隔;)。路径必须相对于MusicFolder
".:**/**"(含义MusicFolder及其所有子文件夹)
ND_PREFERSORTTAGS
使用 Sort_* 标签对 UI 中的列进行排序。
false
ND_PROMETHEUS_ENABLED
使用Prometheus指标启用额外的端点。
false
ND_PROMETHEUS_METRICSPATH
Prometheus 指标的自定义路径。有助于阻止未经授权的指标请求。
"/metrics"
ND_RECENTLYADDEDBYMODTIME
按“最近添加”排序时使用音乐文件的修改时间。否则使用导入时间
false
ND_REVERSEPROXYUSERHEADER
包含来自身份验证代理的用户名的 HTTP 标头。点击此处了解详细信息。
"Remote-User"
ND_REVERSEPROXYWHITELIST
@允许使用反向代理身份验证的IP CIDR 的逗号分隔列表(或在 UNIX 套接字上侦听时为特殊值)。空表示“全部拒绝”。单击此处了解详情。注意:对于大多数反向代理设置来说,此选项是不必要的,仅用于验证反向代理。
空的
ND_SCANNER_EXTRACTOR
选择元数据提取器实现。选项:taglibffmpeg
"taglib"
ND_SCANNER_GENRESEPARATORS
用于拆分类型标签的分隔符列表
";/,"
ND_SCANNER_GROUPALBUMRELEASES
“true”将具有相同艺术家 + 专辑名称的专辑归为一张专辑;“false”将重新发行(=不同的发行日期)拆分为单独的专辑
false
ND_SCANSCHEDULE
使用“cron”语法配置定期扫描。要完全禁用它,请将其设置为"0"
"@every 1m"
ND_SEARCHFULLSTRING
在可搜索字段的任意位置匹配查询字符串,而不仅限于单词边界。对于单词之间没有空格分隔的语言很有用
false
ND_SESSIONTIMEOUT
Navidrome 在关闭 Web UI 空闲会话之前将等待多长时间
"24h"
ND_SHAREURL
共享链接的基本 URL。当您的服务器地址不是公开的时很有用(例如:使用 Tailscale 时)。请参阅此处的讨论
(使用服务器地址)
ND_SMARTPLAYLISTREFRESHDELAY
刷新智能播放列表的频率。
"5s"
ND_SPOTIFY_ID
Spotify 客户端 ID。如果您需要艺术家图片,则需要此 ID
空的
ND_SPOTIFY_SECRET
Spotify 客户端密钥。如果您需要艺术家图片,则需要此密钥
空的
ND_SUBSONICARTISTPARTICIPATIONS
请求艺术家专辑时,请包括艺术家参与的专辑(例如:各种艺术家合辑)
false
ND_TLSCERT
TLS 证书文件的路径,其中应包含签名链(如果有)
(禁用 TLS)
ND_TLSKEY
TLS 密钥文件的路径
(禁用 TLS)
ND_TRANSCODINGCACHESIZE
转码缓存的大小。设置为"0"可禁用缓存
"100MB"
ND_UILOGINBACKGROUNDURL
更改登录页面使用的背景图像
来自Unsplash.com合集的随机音乐图像
ND_UIWELCOMEMESSAGE
在登录屏幕添加欢迎信息
空的
ND_UNIXSOCKETPERM
设置 Unix 套接字文件的文件权限。*
"0660"
搭建完成后,咱们就有了一个基础的音乐库了,设置完密码后再次登录的web页面是这样子的
notion image
界面语言的设置
notion image
 

LrcApi的搭建

Navidrome是不支持刮削的,而PT下载的音乐专辑,往往是没有歌词等标签信息的,这显然不符合我们想要优雅的听音乐的基本需求,所以我们还需要配置自定义API来实现歌词和歌曲封面的自动刮削。你可以使用官方的API接口也可以自己搭建LrcAPI容器以实现更多的功能。
搭建命令
部署稳定版本(latest):
docker run -d -p 28883:28883 -v /home/user/music:/music hisatri/lrcapi:latest
参数说明
  • d 以守护进程方式运行,一般无需修改
  • p 形式为外部端口:内部端口,其中Docker内部的端口默认为28883,无需修改,如果希望此服务在其他端口上启动,请修改。例如,在8080端口上启动服务:p 8080:28883
  • v 此参数用于将宿主机的指定目录映射至Docker容器内的某一目录,正确设置此目录,可以使程序优先读取同目录下同名.lrc文件,及音频文件的元数据中的歌词。具体设置方式如下
    • 使用Docker方式部署音乐服务器(如Navidrome,emby),则保持与音乐服务器Docker容器的v参数一致即可
    • 直接在本地启动音乐服务器,则将本地音乐文件夹完整路径原样映射到Docker内即可。例如,如果你的音乐存储在 /media/music ,则使用参数v /media/music:/media/music。有多少个目录就设置多少个v参数
  • e 环境变量,如API_AUTH
 

音流自定义API设置

官方公开API地址,方便没有服务器的同学直接使用
歌词API地址
https://lrc.xms.mx/lyrics
封面API地址
https://lrc.xms.mx/cover
自己搭建LrcAPI容器
假设你将服务部署在http://example.com:28883,那么各接口地址为:
歌词接口
单一歌词模式
http://example.com:28883/lyrics/
  • 使用单一歌词接口会优先获取同名lrc歌词文件或音频文件内置歌词,如果本地有歌词文件,或音乐文件有较完善的元数据,请使用此接口以获得较好的响应速度和准确率
批量获取模式
http://example.com:28883/jsonapi/
  • 使用此接口会通过网络搜索对应的歌词,首次搜索将会耗费一定时间。更完善的Tag信息可以获得更好的搜索效果
歌词确认接口
http://example.com:28883/confirm/
注意事项
  • 音流上要实现歌词确认需要在搭建LrcApi时配置API_AUTH变量,并将API_AUTH的值填入音流设置>>自定义API>>验证信息配置项目内
  • 媒体目录需要与Navidrome媒体目录保持一致
Navidrome容器内音乐文件挂载目录为/path/to/your/music/folder:/music
LrcAPI容器内音乐文件挂载目录也应该为/path/to/your/music/folder:/music
  • 需要LrcAPI版本v1.5.1以上,调用该接口会将传入的标题、歌手、专辑、年份、歌词写入歌曲元信息
  • 调用此接口会直接修改音频文件,导致文件哈希发生变化。如果有做种需求,请慎重使用此功能
封面接口
http://example.com:28883/cover/
 

通过 Last.FM 记录播放记录

年末的时候看到别人在发听歌年度报告而自己却没有?不用担心,你可以通过 Last.FM 记录你的播放记录,然后就可以在年末的时候愉快地向朋友分享了~
notion image
注册 Last.FM 账号
前往 官方主页 注册登录,通过 API主页 ,获取APIkeySECRET
Navidrome服务器开启last.fm功能
docker配置文件中配置ND_LASTFM_ENABLEDND_LASTFM_APIKEYND_LASTFM_SECRET三个变量
通过 Navidrome 上报播放记录
在 Navidrome 的网页端启用 Last.FM 的喜好记录即可。
notion image
 

开启音流模糊搜索功能

notion image
notion image
notion image
 
  • 媒体库模式下,由客户端提供模糊搜索的特性
  • 在直连模式下,需要开启 Navidrome 服务器的的模糊搜索功能。Navidrome搭建的docker环境变量中添加SearchFullString并将值设置为true
 
现在我们可以开心的使用音流畅听音乐啦!!!
notion image
notion image
notion image
 
上一篇
2024年度观影报告
下一篇
Android常用shell命令