文 - 篇  访客 -

用docker自建音乐服务器Navidrome


  分类:软件工具  / 
更新:2023-10-31 15:06:28  /  创建:2024-01-15 17:58:35
不要删除

Navidrome – 开源音乐服务器

Navidrome 是一款开源音乐服务器,它可以把你硬盘里的音乐文件以流媒体的方式展示出来,就可以在任何浏览器里收听了,也支持不少第三方客户端,最终在全平台播放收听。类似自家的 Spotify、Apple Music、网易云音乐、QQ音乐的意思。

Navidrome 的安装

Navidrome 支持各大平台,包括:

  • Windows
  • macOS
  • Linux
  • Docker

只需要有一台小型服务器,比如理财产品树莓派,就可以了。当然一般的 NAS 系统都自带音乐服务器,所以…根据自己喜好吧。青小蛙倒是觉得群晖的 Audio Station 还不错,够用。

官方文档提供了每个平台的安装方式,这里就不重复了。

主要特性包括:

  • 处理非常大的音乐收藏
  • 几乎可播放任何音频格式
  • 读取并使用你精心标记的各种元数据
  • 多用户,每个用户都有自己的播放次数、播放列表、收藏夹等
  • 资源占用率非常低
  • 多平台,在 macOS、Linux 和 Windows 上运行。还提供 Docker 镜像
  • 适用于所有主要平台的即用型二进制文件,包括 Raspberry Pi
  • 自动监控你的库的变化,导入新文件和重新加载新的元数据
  • 基于 Material UI 的主题、现代和响应式的 Web 界面
  • 与所有 Subsonic/Madsonic/Airsonic 客户端兼容
  • 在传输中进行转码,可按用户/播放器设置,支持 Opus 编码
  • 支持中文界面

随着几家音乐巨头垄断了音乐市场,几个著名的歌手的歌分散在不同的巨头手里,在A客户端只能听周杰伦的歌,要听陶喆的还得切换到另外的客户端,如果想听韩红2022年春晚唱过的《这世界那么多人》还得切换到视频网站,要听刘惜君的《大风吹》也得切换到视频网站。
现在不流行把mp3存在手机里,第一个不能同步到任何终端,第二个播放记录之类的不用同步,第三手机容量有限

使用宝塔Docker搭建Navidrome开源音乐服务器,支持多终端畅听

现在的听歌环境是越来越难了,虽然缙哥哥有多个音乐平台的会员,但是音乐版权却分散在各个平台,不是这首歌灰色就是那首歌灰色,总不可能为了一首歌再去切换平台听吧?

曾经想过如下方案,供借鉴:

  • 方案一:下载音乐到本地,通过 OneDrive 等同步盘进行多终端同步。
  • 方案二:下载并上传音乐到网易云音乐网盘,通过私人网盘无限制播放音乐。
扩展阅读

logo

这两个方案也是目前缙哥哥都在使用的,但是方案一适合电脑上播放,还需要配合音乐播放器;而方案二一开始还挺好用,而现在则逐渐连上传的音乐都会进行云端匹配,要么上传失败、要么替换音乐文件,更甚者直接不予显示(参见《网易云音乐云盘检测用户个人文件,无损音乐听歌转战阿里云盘》)……

所以随着越来越“智能化”的信息时代,在一个什么都在云端,又什么都要自建的年代,音乐服务缙哥哥也决定自己搞定的,只不过这个需求较为小众。如果你需要它,那么这篇文章或许对你有所帮助。

前期准备

  • 40G存储、5M带宽以上的云服务器
  • 一双眼、一双手、一个脑袋

以上为必备,40G是绝大部分云服务器赠送的空间,一般人这个空间足够存放自己喜欢听的歌曲了,当然,你可以购买更大的空间,或者通过挂载对象存储(内网),挂载云盘来实现自动备份的大空间。5M以上的带宽是为了能够流程的听歌,毕竟现在的歌曲动则10M/20M甚至更大,听听就卡我想这不是你想要的。

可选准备

  • 域名
  • CDN(CloudFlare/云盾等)

有域名稍微好记一点,可以免得记 IP 地址,有 CDN 可以缓存音乐文件,让你听歌更加流畅。

部署 Navidrome 环境

首先这里建议安装 CentOS 7.6 操作系统,然后部署宝塔控制面板。为啥不直接装 Docker?因为 Navidrome 有专门的音乐上传界面,经过缙哥哥使用测试,对比起宝塔文件管理还是有差距的,那为什么不直接使用宝塔可视化面板呢?

推荐使用宝塔Linux控制面板(站内AD

宝塔装好后,在软件商店运行环境中安装下Docker 管理器

安装docker-compose

安装 docker-compose

缙哥哥亲测 CentOS 7.6 操作系统是安装了 docker-compose 的,如果你在 ssh 中输入 docker-compose 显示没有安装,就装一下。

设置镜像源

通过 ssh 输入下方代码进行编辑,不理解 Linux 编辑的小伙伴参见《Linux 文本编辑器 Vim “真 · 简单”使用教程》。

vi /etc/docker/daemon.json

写入下面的内容

{ "registry-mirrors": ["https://cq20bk8v.mirror.aliyuncs.com"] }

键盘左上角按esc键,再输入:wq保存退出。输入下方指令:

yum install epel-release
yum install python3-pip 
pip3 install --upgrade pip 
pip3 install docker-compose

若是报错:ModuleNotFoundError: No module named ‘setuptools_rust’则输入下方指令,若是没有报错可跳过。

pip3 install -U pip setuptools

配置 Navidrome 参数

在宝塔面板菜单栏点击文件进入在线资源管理界面,进入根目录/home目录,创建music文件夹,并在该文件夹下分别创建datasong文件夹。

music文件夹

同时,在music文件夹下,创建一个名为docker-compose.yaml的文件,双击对其进行编辑,并将下方内容复制进去。

version: "3"
services:
  navidrome:
    container_name: navidrome
    image: deluan/navidrome:latest
    user: 0:0 #0:0代表用root用户运行
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
      ND_ENABLETRANSCODINGCONFIG: "true"
      ND_TRANSCODINGCACHESIZE: "4000M"
      ND_IMAGECACHESIZE: "1000M"

    volumes:
      - "/home/music/data:/data"
      - "/home/music/song:/music:ro"

  miniserve:
    image: svenstaro/miniserve:latest
    depends_on:
      - navidrome
    ports:
      - "4534:4534"
    volumes:
      - "/home/music/song:/downloads"  
    command: "-r -z -u -q -p 4534 -a dujin:www.dujin.org /downloads" 
    restart: unless-stopped

这里缙哥哥简单对上述参数解释一下,小伙伴们可以根据自己的喜好进行调整修改。

其中4534端口是上传音乐文件的网页端口,而倒数第二行的dujin为上传页面的登陆账号,www.dujin.org为上传页面的登陆密码。

而由于我们使用了宝塔面板,你可以直接将这个端口屏蔽也没有关系。

Navidrome 默认将 song 和 data 文件夹放根目录,缙哥哥将其放入 home 文件夹,你们随意。

可用选项

配置文件中的选项

环境变量

描述

默认值

ND_CONFIGFILE

从外部配置文件加载配置

"./navidrome.toml"

音乐文件夹

ND_MUSICFOLDER

存储音乐库的文件夹。可以是只读的

"./music"

资料文件夹

ND_DATAFOLDER

存储应用程序数据的文件夹(数据库、缓存……)

"./data"

扫描计划

ND_SCANSCHEDULE

使用“cron”语法配置定期扫描。要完全禁用它,请将其设置为”0″

"@every 1m"

日志级别

ND_LOGLEVEL

日志级别。对故障排除很有用。可能的值:errorwarninfodebug,trace

"info"

启用转码配置*

ND_ENABLETRANSCODINGCONFIG

在 UI 中启用转码配置

false

转码缓存大小

ND_TRANSCODINGCACHESIZE

转码缓存的大小。设置”0″为禁用缓存

"100MB"

图像缓存大小

ND_IMAGECACHESIZE

图像(艺术作品)缓存的大小。设置”0″为禁用缓存

"100MB"

基本网址

ND_BASEURL

path用于在代理后面配置 Navidrome的基本 URL(仅部分)(例如/music:)

Empty

会话超时

ND_SESSIONTIMEOUT

Navidrome 在关闭 Web ui 空闲会话之前将等待多长时间

"24h"

接着仍旧通过 ssh 进行安装部署,输入:

cd /home/music
docker-compose up -d

设置 Navidrome 后台

打开浏览器,输入ip:4533,创建用户名和密码。

登录

需要注意的是,这个账号密码是你前端访问的账号密码,也是客户端访问的账号密码。

而上面配置的账号密码是音乐上传页面的账号密码,两者是有区别的。

配置

点击网页右上角头像Personal

Language中选择简体中文(英语很吊的当我没说)。

打开浏览器,输入ip:4534,输入docker-compose.yaml文件末尾预先设置的用户名和密码(如果你没有改动的话,用户名dujin,密码www.dujin.org),就可以进入音乐上传页面了。

当我们上传音乐文件之后,点击头像左边的图标(刷新&运行情况)可以快速扫描音乐文件。

个人感觉宝塔的可视化上传更加方便,这也意味着还可以配置宝塔 FTP,甚至挂载网盘来进行扩容、保存、备份你的音乐文件。

扩展阅读

使用 Navidrome 在线听歌

打开浏览器,输入ip:4533,输入账号密码即可进入 Navidrome 首页。

Navidrome 会自动识别你的音乐文件匹配对应的专辑名称、专辑封面等相关内容,非常方便。

可以根据歌手来进行筛选、统计。

如果你上传音乐的时候把lrc歌词文件也放上去,那么 Navidrome 网页版还会自动匹配并展示歌词,如果没有lrc歌词文件,你可以选择使用 Subsonic 客户端进行播放,也会匹配出歌词。

Navidrome 第三方客户端

Navidrome 除了网页界面,还支持各种第三方客户端:

缙哥哥在 Windows 操作系统上使用 Sonixd 客户端,起官方地址为:

无法访问的小伙伴,这里也给你放个网盘链接,分流下载。

下载后解压即可,无需安装,直接运行Sonixd.exe文件。

这里输入你网页版的ip:4533,输入账号密码点击Connect按钮即可。

老规矩,第一件事先设置为中文语言。

播放界面

那么后面这种中文的可视化界面想必就不用缙哥哥过多介绍了吧,不懂的话随便点。

有了这个啥歌都能听,相当于你自己打造了一个多终端云端音乐平台,再也不用纠结听歌的事情了。当然,还可以跟你“臭味相投”的小伙伴一起听。

到这里有人又问了,Navidrome 部署使用我会了,音乐哪下载?呃,我觉得吧,这玩意你都会了,你应该也不算萌新了,找个音乐资源还能难倒你?实在找不到的试试这个:

另外还有一个在线 DEMO 可以直接使用,用户名密码 demo:

客户端

除了访问http://xxx.xxx.xxx.x:4533直接在线听个外还可以如下

除了可以使用搭建的网页端 Web UI,Navidrome 还可以与以下所有 Subsonic 客户端兼容。以下客户端经过测试并确认可以正常工作:

iOS:play:Sub、 substreamer、 Amperfy和 iSub

安卓:DSub, Subtracks, substreamer, Ultrasonic和 Audinaut

网络:Subplayer、 Airsonic Refix、 Aurial、 Jamstash和 Subfire

桌面:Sublime Music (Linux) 和Sonixd (Windows/Linux/macOS)

CLI:Jellycli (Windows/Linux) 和STMP (Linux/macOS)

连接的扬声器:

Sonos: bonob

Alexa:AskSonic

其他:

Subsonic Kodi 插件、 Navidrome Kodi 插件、 HTTP目录文件系统

我在安卓选择subsonic,在ios选择了substreamer


不要删除

是日已过,命亦随减,如少水魚,斯有何乐?