使用Docker部署开源音乐播放服务Navidrome,打造自己的云音乐

网络版权时代,随便放个歌就要收费,就算你买了VIP服务,下载的歌曲还是加密的,一旦VIP到期后某些歌你还听不了,说的就是XX音乐。

于是我开始寻找有没有一个类似云音乐的自建服务,这样随时随地在任何地方都能播放,于是我找到了如下软件可满足需求:

多媒体管理:Jellyfin、Emby、Plex
Airsonic
Navidrome
群晖、威联通自带音乐套件
多媒体管理我一直在使用免费开源的Jellyfin,目前Jellyfin已经做得足够好了,管理和播放电影都非常方便,可是音乐管理感觉还是差点意思,而且部分无损歌曲有卡顿或者播放不了的情况。

于是我试了下Airsonic和Navidrome,Airsonic是用java开发的音乐播放器,功能很强大也很专业,界面可设置的音乐参数非常多,作为业余玩家完全不知道这些音乐参数啥意思。因为使用java开发的,所以比较吃内存,而且参数太多了,不够简单方便,于是找到了另一款使用Golang开发的音乐播放软件Navidrome,内存占用很低,界面简单,而且还兼容Subsonic API,不多说,部署走起。

2022-02-07T14:08:20.png

Docker部署Navidrome

通过Dcoker命令行部署:(路径请自行修改)

docker run -d \
   --name navidrome \
   --restart=unless-stopped \
   --user $(id -u):$(id -g) \
   -v /path/to/music:/music \
   -v /path/to/data:/data \
   -p 4533:4533 \ 
   -e ND_LOGLEVEL=info \
   deluan/navidrome:latest

/path/to/music:你本地主机的音乐文件夹
/path/to/data:Navidrome配置数据文件夹
不过我不太推荐命令行部署,维护起来不方便,如果您安装了docker-compose,推荐使用docker-compose部署,新建一个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:
      - "/apps/navidrome/data:/data"
      - "/media/Music:/music:ro"

/apps/navidrome/data:请自行指定一个本地路径用来存储navidrome数据
/media/Music:/music:您主机上的音乐文件夹路径
然后使用docker-compose up -d运行,如果没有出现意外,就可以通过http://IP:4533进行访问,首次访问会要求设置一个帐号、密码。

Navidrome使用

PC上可以通过http://IP:4533进行访问,界面比较简洁,符合现代审美。
2022-02-07T14:09:13.png
可以点击右上方用户按钮 – Personal – Language改成中文,如下图。
2022-02-07T14:09:26.png
安卓上我推荐Ultrasonic这个软件,支持连接到Navidrome使用(iOS官方推荐的客户端有: play:Sub, substreamer, Amperfy and iSub),前提是你做了公网映射或者FRP(这里不做详细介绍)。
2022-02-07T14:09:56.png
Navidrome界面支持中文(非完全汉化),但不爽的是似乎没法列出全部歌曲,而是列出的专辑(可以在Ultrasonic网页端将喜欢的音乐提前收藏),有点不符合国人习惯,如果您找到了更好的替代软件,请留言告知。

Navidrome优缺点

先来说说优点:

内存占用低(待机状态40Mb左右)
界面简洁,支持中文
支持Subsonic API,也就是说Subsonic能用的客户端,Navidrome都能用
再来说说优点:

好像没法显示歌词
不支持通过界面删除歌曲(作者说的是为了安全考虑,我个人感觉过于谨慎了)

最后

Navidrome官网:https://www.navidrome.org/
Navidrome帮助文档:https://www.navidrome.org/docs/
项目地址:https://github.com/navidrome/navidrome/