着国内版权意识的提高,现在想听一首歌曲,往往我们可能要切换3-4个APP——网易云音乐、QQ音乐、咪咕音乐……切换起来很麻烦,有的APP就算你买了VIP服务,下载的歌曲还是加密的,一旦VIP到期后某些歌你还听不了,非常蛋疼,疫情期间在家就用Navidrome搭建一个属于自己的音乐世界,官方安装文档详情见:https://www.navidrome.org/docs/usage/external-integrations
Github地址:https://github.com/navidrome/navidrome
特征
- 处理非常大的音乐收藏
- 流式传输几乎任何可用的音频格式
- 读取并使用您所有精心策划的元数据
- 对合辑(各种艺术家专辑)和盒装(多碟专辑)的大力支持
- 多用户,每个用户都有自己的播放次数、播放列表、收藏夹等…
- 资源使用率极低
- 多平台,可在 macOS、Linux 和 Windows 上运行。还提供了Docker镜像
- 可用于所有主要平台的二进制文件,包括Raspberry Pi
- 自动监控您的音乐库的更改、导入新文件和重新加载新元数据
- 基于Material UI的主题化、现代和响应式Web 界面
- 与所有 Subsonic/Madsonic/Airsonic客户端兼容
- 即时转码。可以为每个用户/玩家设置。支持 Opus 编码
- 翻译成各种语言
缺点
- 不支持歌词显示|
- 不支持web上传歌曲文件
- 不支持歌曲分享
搭建环境
- CentOS Linux release 7.9.2009 (Core)
- Docker环境版本:
[root@VM-4-15-centos ~]# docker version
Client: Docker Engine - Community
Version: 20.10.15
API version: 1.41
Go version: go1.17.9
Git commit: fd82621
Built: Thu May 5 13:16:58 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.15
API version: 1.41 (minimum version 1.12)
Go version: go1.17.9
Git commit: 4433bf6
Built: Thu May 5 13:15:18 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.4
GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
runc:
Version: 1.1.1
GitCommit: v1.1.1-0-g52de29d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
开始Docker部署
采用docker-compost安装,在centos7根目录下新建一个/mydocker/navidrome,根据自己的喜欢,然后在navidrome文件下新建一个docker-compose.yml文件配置内容如下:
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
ports:
- "4533:4533" # 左边可以改成自己服务器未被占用的端口
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples(这些都是可选的):
ND_SCANSCHEDULE: 1m #扫描计划
ND_LASTFM_ENABLED:#设置第三方链接lastfm,将此设置false为完全禁用默认Last.fm 集成 true
ND_LASTFM_APIKEY: 47d64a75124c8a9180ba25fb3577858ex1 # 修改成自己的APIKEY
ND_LASTFM_SECRET: eafcbbb4c1201eb98552a288a5d4286ax9 # 修改成自己的SECRET
ND_SPOTIFY_ID: 2d996428bd504ea29855b11ef587b45cx8 # 修改成自己的ID
ND_SPOTIFY_SECRET: e39defd15c53457a9635335c82e92651x5 # 修改成自己的SECRET
ND_LASTFM_LANGUAGE: zh #用于从 Last.fm 检索传记的语言的两个字母代码 zh
ND_LOGLEVEL: info #日志级别,可能的值:error, warn, info,debug,trace
ND_SESSIONTIMEOUT: 24h #会话超时,Navidrome 在关闭 Web ui 空闲会话之前将等待多长时间
ND_BASEURL: "" #基本网址,path用于在代理后面配置 Navidrome的基本 URL(仅部分)(例如/music:)默认空
ND_ENABLETRANSCODINGCONFIG: "true" #在 UI 中启用转码配置
ND_TRANSCODINGCACHESIZE: "200M" #转码缓存的大小。设置"0"为禁用缓存 默认"100MB"
ND_IMAGECACHESIZE: "200M" #图像(艺术作品)缓存的大小。设置"0"为禁用缓存,默认"100MB"
ND_CONFIGFILE=/data/navidrome.toml
volumes:
- "./data:/data" #请自行指定一个本地路径用来存储navidrome数据
- "/music:/music:ro" # 冒号左边修改成自己本地的音乐文件夹路径
#下面是安装一个可以通过web界面上传音乐文件程序,根据自己需要
miniserve:
image: svenstaro/miniserve:latest
depends_on:
- navidrome
ports:
- "4534:8080"
volumes:
- "/music:/downloads" # 冒号左边修改成自己本地的音乐文件夹路径
command: "-r -z -u -q -p 8080 -a test:test /downloads" # test:test 修改成自己的账号:密码
restart: unless-stopped
- 也可以用filebrowser管理歌曲文件,上传歌曲文件
docker run -d --restart=always \
-v /root/data/docker_data/qbittorrent/music:/srv \
-p 8003:80 \
--name filebrowser \
langren1353/filebrowser-ckplayer
外部集成
- 配置 Navidrome 可以从 Last.fm 和 Spotify 获取专辑信息和图像
首先需要一个Last.fm 免费帐户,其次你要能访问Last.fm
转到 https://www.last.fm/api/account/create 并创建一个 API 帐户。只有 应用程序名称 字段是强制性的
将上面的值复制到 Docker 的环境变量
ND_LASTFM_ENABLED 设置 false 为完全禁用 Last.fm 集成
ND_LASTFM_APIKEY Last.fm 获取的 API Key
ND_LASTFM_SECRET Last.fm 获取的 Shared Secret
ND_LASTFM_LANGUAGE 用于从 Last.fm 检索的语言的两个字母代码,简体中文为 zh
- 在 Spotify 中创建一个免费帐户,然后按照以下步骤操作
https://developer.spotify.com/dashboard/applications注册地址,然后单击 Spotify 的开发者仪表板中的CREATE AN APP 如下图:
ND_SPOTIFY_ID Spotify 客户端 ID
ND_SPOTIFY_SECRET Spotify 客户端 Secret
转码设置
转码设置之所以要转码,是因为无损的文件比较大,一般都有几百M,所以需要进行转码成,便于客户端进行播放
但 Navidrome 出于安全原因,禁用了从 Web 界面更改参数,所以需要先修改 Docker 的环境变量
ND_ENABLETRANSCODINGCONFIG 设置为 true 才能支持转码功能
ND_TRANSCODINGCACHESIZE 转码缓存的大小。设置 0 为禁用缓存,默认为 100MB
Navidrome配置选择
详细官网:https://www.navidrome.org/docs/usage/configuration-options/
可用选项
配置文件中的选项 环境变量 描述 默认值
ND_CONFIGFILE 从外部配置文件加载配置 "./navidrome.toml"
音乐文件夹 ND_MUSICFOLDER 存储音乐库的文件夹。可以是只读的 "./music"
资料夹 ND_DATAFOLDER 存储应用程序数据的文件夹(数据库、缓存……) "./data"
扫描计划 ND_SCANSCHEDULE 使用“cron”语法配置定期扫描。要完全禁用它,请将其设置为"0" "@every 1m"
日志级别 ND_LOGLEVEL 日志级别。对故障排除很有用。可能的值:error, warn, info, debug,trace "info"
启用日志编辑 ND_ENABLELOGREDACTING 是否应在日志中编辑(隐藏)敏感信息(如令牌和密码) true
港口 ND_PORT Navidrome 将使用的 HTTP 端口 4533
地址 ND_ADDRESS 服务器将绑定到的 IP 地址 0.0.0.0和::(所有 IP)
启用转码配置* ND_ENABLETRANSCODINGCONFIG 在 UI 中启用转码配置 false
转码缓存大小 ND_TRANSCODINGCACHESIZE 转码缓存的大小。设置"0"为禁用缓存 "100MB"
图像缓存大小 ND_IMAGECACHESIZE 图像(艺术作品)缓存的大小。设置"0"为禁用缓存 "100MB"
自动导入播放列表 ND_AUTOIMPORTPLAYLISTS 启用/禁用.m3u播放列表自动导入 true
播放列表路径 ND_PLAYLISTSPATH 从哪里搜索和导入播放列表。可以是文件夹/glob 的列表(由:(或;在 Windows 上)分隔。路径相对于MusicFolder ".:**/**"(含义MusicFolder及其所有子文件夹)
基本网址 ND_BASEURL path用于在代理后面配置 Navidrome的基本 URL(仅部分)(例如/music:) 空的
UILoginBackgroundUrl ND_UILOGINBACKGROUNDURL 更改登录页面中使用的背景图片 来自 Unsplash.com 的随机音乐图片
UIWelcomeMessage ND_UIWELCOMEMESSAGE 在登录屏幕上添加欢迎消息 空的
GATrackingID ND_GATRACKINGID 将基本信息发送到您自己的 Google Analytics(分析)帐户。必须是格式UA-XXXXXXXX 空(已禁用)
默认主题 ND_DEFAULTTHEME 设置从新浏览器登录时 UI 使用的默认主题。此值必须与 UI 中的选项之一匹配 Dark
启用封面动画 ND_ENABLECOVERANIMATION 控制 UI 中的播放器是否会为专辑封面设置动画(旋转) true
忽略的文章 ND_IGNOREDARTICLES 排序/索引艺术家时被忽略的文章列表 "The El La Los Las Le Les Os As O A"
搜索全串 ND_SEARCHFULLSTRING 在可搜索字段中的任何位置匹配查询字符串,而不仅仅是在单词边界中。对于单词不是空格分隔的语言很有用 false
最近添加的ModTime ND_RECENTLYADDEDBYMODTIME 按“最近添加”排序时使用音乐文件的修改时间。否则使用导入时间 false
封面艺术优先 ND_COVERARTPRIORITY 配置订单以查找封面图片。使用特殊embedded值从音频文件中获取嵌入图像 "embedded, cover.*, folder.*, front.*"
封面Jpeg质量 ND_COVERJPEGQUALITY 为调整大小的封面图片设置 JPEG 质量百分比 75
启用下载 ND_ENABLEDOWNLOADS 启用 UI 中的选项以从服务器下载音乐/专辑/艺术家/播放列表 true
会话超时 ND_SESSIONTIMEOUT Navidrome 在关闭 Web ui 空闲会话之前将等待多长时间 "24h"
授权请求限制* ND_AUTHREQUESTLIMIT 在AuthWindowLength. 设置为0禁用限制评分器 5
验证窗口长度* ND_AUTHWINDOWLENGTH 认证速率限制的窗口长度 "20s"
扫描仪.提取器 ND_SCANNER_EXTRACTOR 选择元数据提取器实现。选项:taglib或ffmpeg "taglib"
Scanner.GenreSeparators ND_SCANNER_GENRESEPARATORS 用于拆分流派标签的分隔符列表 ";/,"
LastFM.Enabled ND_LASTFM_ENABLED 将此设置false为完全禁用 Last.fm 集成 true
最后FM.ApiKey ND_LASTFM_APIKEY Last.fm ApiKey Navidrome 项目的共享 ApiKey
LastFM.Secret ND_LASTFM_SECRET Last.fm 共享密钥 Navidrome 项目的共享秘密
LastFM.Language ND_LASTFM_LANGUAGE 用于从 Last.fm 检索传记的语言的两个字母代码 "en"
Spotify.ID * ND_SPOTIFY_ID Spotify 客户 ID。如果您想要艺术家图片,则为必填项 空的
Spotify .秘密* ND_SPOTIFY_SECRET Spotify 客户秘密。如果您想要艺术家图片,则为必填项 空的
ListenBrainz.Enabled ND_LISTENBRAINZ_ENABLED 将此设置false为完全禁用 ListenBrainz 集成 true
启用Gravatar ND_ENABLEGRAVATAR 使用Gravatar图像作为用户个人资料图像。需要填写用户的邮箱 false
启用外部服务 ND_ENABLEEXTERNALSERVICES. 将此设置false为完全禁用所有外部集成 true
启用收藏夹 ND_ENABLEFAVOURITES 在 UI 中启用歌曲/专辑/艺术家的“Heart”/“Loved”切换(映射到 Subsonic 客户端中的“Star”/“Starred”) true
启用StarRating ND_ENABLESTARRATING 在 UI 中启用 5 星评级 true
启用用户编辑 ND_ENABLEUSEREDITING 允许普通用户编辑他们的详细信息并更改他们的密码 true
密码加密密钥* ND_PASSWORDENCRYPTIONKEY 密码短语用于加密数据库中的密码。点击这里了解详情 -
反向代理用户头* ND_REVERSEPROXYUSERHEADER 包含来自经过身份验证的代理的用户名的 HTTP 标头 "Remote-User"
反向代理白名单* ND_REVERSEPROXYWHITELIST 允许使用反向代理身份验证的 IP CIDR 的逗号分隔列表,空表示“全部拒绝” 空的
- 最后检查docker-compose.yml文件无误后,执行docker-compose up -d
- 默认访问IP+4533,建议搭建好后绑定域名,反向代理
- 进入后需要手动选择中文语言
补充内容
- 根据官方配置说明
- 配置选项
如何根据您的环境自定义 Navidrome
Navidrome 允许使用环境变量、从配置文件加载或使用命令行参数进行一些自定义。
Navidrome 尝试从navidrome.toml
当前工作目录中的文件加载配置。您可以将以下任何配置选项放在此文件中。Windows 的配置文件示例(对于 Linux 应该类似,只是使用正斜杠作为路径):
# This is just an example! Please see available options below to customize Navidrome to your needs
LogLevel = 'DEBUG'
ScanSchedule = '@every 1h'
TranscodingCacheSize = '150MiB'
MusicFolder = 'C:\Users\JohnDoe\Music'
我们可以在Navidrome的data目录新建一个navidrome.toml
,可以根据以上官方的配置,按自己的需要适当修改
#/root/mydocker/navidrome/music/files
# This is just an example! Please see available options below to customize Navidrome to your needs
LogLevel = 'DEBUG'
ScanSchedule = '@every 1m'
TranscodingCacheSize = '1024MiB'
MusicFolder = '/root/mydocker/navidrome/music/files' #docker映射的音乐文件路径
[…] Navidrome搭建一个属于自己的音乐播放器 […]
[…] Navidrome搭建一个属于自己的音乐播放器 […]
搭配music-tag-web 可以对音乐进行刮削,歌词,专辑封面都有
专辑封面是有的,但是歌词好像不支持,之前用过,时间长了,你可以搭建测试一下!