侧边栏壁纸
博主头像
v林羽博主等级

行动起来,活在当下

  • 累计撰写 171 篇文章
  • 累计创建 34 个标签
  • 累计收到 12 条评论

目 录CONTENT

文章目录

【Docker项目】之--搭建一个低占用的音乐服务器Navidrome

v林羽
2022-09-25 / 1 评论 / 3 点赞 / 5228 阅读 / 9675 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-11-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

【Docker项目】之–搭建一个低占用的音乐服务器Navidrome

#教程 #Linux #Docker #Docker-compose #Ubuntu

一直以来都是用网易云音乐听歌,由于版权问题越来越多的歌曲被翻唱替代;同时网易最近一系列的动作,中小音乐制作人和翻唱人员生存空间越来越小,歌曲质量也难以保证了;结合第三方平台的网易云音乐也会出现各种奇葩问题(比如上面这条动态),所以推荐大家有时间可以自己搭建一个音乐服务器。

Navidrome是一个开源的Web的音乐收集服务器和流媒体。它使您可以自由地从任何浏览器或移动设备收听音乐收藏;使用Go语言开发,内存占用很低,界面简单,而且还兼容Subsonic API。

官网:Navidrome
Github:GitHub - navidrome/navidrome

项目很好的解决我的几个需求:

  • 收集喜欢音乐,做一个音乐备份。
  • 音质个人把控,包含歌单、下载、在线转码等功能。
  • 只要存储空间和带宽允许可以做到全无损。
  • 自己混剪、转码的私人音乐(以前想听只能网盘,太难了!)
  • 歌曲、相声、评书、小说等等一网打尽。
  • 资源占用率低,小服务器完全可以胜任。
  • 兼容Subsonic API,播放器安装个插件的事,kodi在电视上不要太爽。
  • 多用户、多平台、支持中文。
  • 只要支持docker的平台都可用,openWRT、群晖等等。

下面介绍ubuntu系统通过docker-compose安装。

1. 安装准备

系统:ubuntu 20.4
工具:docker和docker-compose

2. 搭建

2.1. 创建数据存放位置

mkdir -p /home/ubuntu/docker_data/navidrome   ## 创建文件夹

cd /home/ubuntu/docker_data/navidrome   ## 进入文件夹

vim docker-compose.yml   ## 创建docker-compose

2.2. 编辑docker-compose.yml

  1. 简化版,直接使用
version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      ND_ENABLETRANSCODINGCONFIG: true
      ND_TRANSCODINGCACHESIZE: 0
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
    volumes:
      - "/home/ubuntu/docker_data/navidrome/data:/data"
      - "/home/ubuntu/docker_data/navidrome/music:/music:ro"
  1. 开启LAST、SPOTIFY获取专辑信息和图像,使用下来,感觉没有必要。尤其是在国内SPOTIFY还不提供服务。
version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      # Optional: put your config options customization here. Examples:
      ND_ENABLETRANSCODINGCONFIG: true
      ND_TRANSCODINGCACHESIZE: 0
      ND_LASTFM_APIKEY: xxxxxxxxxxxx # 如果需要可以设置
      ND_LASTFM_SECRET: xxxxxxxxxxxx # 如果需要可以设置
      ND_SPOTIFY_ID: xxxxxxxxxxxx # 如果需要可以设置
      ND_SPOTIFY_SECRET: xxxxxxxxxxxx # 如果需要可以设置
      ND_LASTFM_LANGUAGE: zh # 如果需要可以设置
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
    volumes:
      - "/home/ubuntu/docker_data/navidrome/data:/data"
      - "/home/ubuntu/docker_data/navidrome/music:/music:ro"

详细的环境参数列表:Configuration Options | Navidrome

2.3. 配置外部API

配置 Navidrome 可以从 Last.fm 和 Spotify 获取专辑信息和图像

2.3.1. 获取LastAPI

  1. 登陆 https://www.last.fm 注册一个免费帐户,转到 https://www.last.fm/api/account/create 并创建一个 API 帐户。

  1. 提交后,获取 API KeyShared Secret

  1. 将上面的值复制到 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

2.3.2. 获取SpotifyAPI

  1. 登陆 https://www.spotify.com 注册一个免费帐户,转到 https://developer.spotify.com/dashboard/applications 点击CREATE AN APP。

  1. 填写完后,单击CREATE按钮,然后单击 SHOW CLIENT SECRET

  1. 将值复制到 Docker 的环境变量

可变
ND_SPOTIFY_ID Spotify 客户端 ID
ND_SPOTIFY_SECRET Spotify 客户端 Secret

2.4. 拉去镜像开始安装

docker-compose up -d

3. 使用及展示

在浏览器中输入 http://IP:4533 ,注册一个管理员

设置中文和主题,开启 Last.fmListenBrainz

功能列表、服务器运行状态及扫描文件。

创建用户页面

登陆客户端页面,可以设置转码。

新建歌单

最后一个 全部随即播放 功能,赞了

手机端网页

4. 客户端展示

4.1. Sonixd(Windows/Linux/MacOS)

下载地址:https://github.com/jeffvli/sonixd/releases

4.2. Subsonic(Android)

4.3. 其他客户端

可以登陆Subsonic Apps查看:http://www.subsonic.org/pages/apps.jsp

iOS: play:Sub, substreamer, Amperfy, iSub  
Android: Subsonic, DSub, Subtracks, subreamer, Ultrasonic, Audinaut  
网页端: Subplayer, Airsonic Refix, Aurial, Jamstash, Subfire  
桌面端: Sublime Music(Linux)和Sonixd(Windows/Linux/MacOS)  
命令行: Jellycli(Windows/Linux)和STMP(Linux/MacOS)

5. 一些问题

arch下安装sonixd错误

arch下安装sonixd,出现/home/pztrn/.cache/yay/sonixd/src/.electron-gyp/.yarnrc错误。
首先安装electron13-bin再安装sonixd。

6. 最后

目前使用存在几个问题需要解决:

  1. 没有后台歌曲文件管理,上传音乐较为麻烦。(当前采用的方案rclone挂载OneDrive)
  2. 歌词需要内置才能现实,只是存放lrc文件无法解决。(通过其他软件添加内置歌词、封面、专辑等信息)
  3. last和spotify获取信息不成功。(同上)
3

评论区