Navidrome搭建一个属于自己的音乐播放器

着国内版权意识的提高,现在想听一首歌曲,往往我们可能要切换3-4个APP——网易云音乐、QQ音乐、咪咕音乐……切换起来很麻烦,有的APP就算你买了VIP服务,下载的歌曲还是加密的,一旦VIP到期后某些歌你还听不了,非常蛋疼,疫情期间在家就用Navidrome搭建一个属于自己的音乐世界,官方安装文档详情见:https://www.navidrome.org/docs/usage/external-integrations
Github地址:https://github.com/navidrome/navidrome

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 帐户。只有 应用程序名称 字段是强制性的

Last.fm 注册
Last.fm 注册
将上面的值复制到 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 如下图:

Spotify注册
Spotify注册
Spotify注册API
Spotify注册API
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
启用S​​tarRating	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
Navidrome搭建一个属于自己的音乐播放器
docker ps看下Navidrome可正常运行
  • 默认访问IP+4533,建议搭建好后绑定域名,反向代理
Navidrome搭建一个属于自己的音乐播放器
Navidrome搭建一个属于自己的音乐播放器
  • 进入后需要手动选择中文语言
Navidrome设置中文
Navidrome设置中文
Navidrome设置中文
Navidrome设置中文
Navidrome设置中文
svenstaro/miniserve上传界面
svenstaro/miniserve上传界面,没有中文,进度条,要求高可以用filebrowser管理歌曲文件
补充内容
  • 根据官方配置说明
  • 配置选项

如何根据您的环境自定义 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.toml
新建navidrome.toml
Navidrome搭建一个属于自己的音乐播放器
Navidrome搭建一个属于自己的音乐播放器

部分内容参考:https://blog.laoda.de/archives/navidrome

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注