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(示例: /music,https://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 | 选择元数据提取器实现。选项: taglib或ffmpeg | "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页面是这样子的

界面语言的设置

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以上,调用该接口会将传入的标题、歌手、专辑、年份、歌词写入歌曲元信息
- 调用此接口会直接修改音频文件,导致文件哈希发生变化。如果有做种需求,请慎重使用此功能
通过 Last.FM 记录播放记录
年末的时候看到别人在发听歌年度报告而自己却没有?不用担心,你可以通过 Last.FM 记录你的播放记录,然后就可以在年末的时候愉快地向朋友分享了~

Navidrome服务器开启last.fm功能
docker配置文件中配置
ND_LASTFM_ENABLED,ND_LASTFM_APIKEY,ND_LASTFM_SECRET三个变量通过 Navidrome 上报播放记录
在 Navidrome 的网页端启用 Last.FM 的喜好记录即可。

开启音流模糊搜索功能



- 媒体库模式下,由客户端提供模糊搜索的特性
- 在直连模式下,需要开启 Navidrome 服务器的的模糊搜索功能。Navidrome搭建的docker环境变量中添加
SearchFullString并将值设置为true。
现在我们可以开心的使用音流畅听音乐啦!!!



- 作者:Jaylen.Mar
- 链接:https://blog.logtime.tk/article/music
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
