【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
- 简化版,直接使用
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"
- 开启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
- 登陆 https://www.last.fm 注册一个免费帐户,转到 https://www.last.fm/api/account/create 并创建一个 API 帐户。
- 提交后,获取
API Key
和Shared Secret
- 将上面的值复制到
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
- 登陆 https://www.spotify.com 注册一个免费帐户,转到 https://developer.spotify.com/dashboard/applications 点击CREATE AN APP。
- 填写完后,单击
CREATE
按钮,然后单击SHOW CLIENT SECRET
- 将值复制到
Docker
的环境变量
可变 | 值 |
---|---|
ND_SPOTIFY_ID |
Spotify 客户端 ID |
ND_SPOTIFY_SECRET |
Spotify 客户端 Secret |
2.4. 拉去镜像开始安装
docker-compose up -d
3. 使用及展示
在浏览器中输入 http://IP:4533
,注册一个管理员
设置中文和主题,开启 Last.fm
、ListenBrainz
功能列表、服务器运行状态及扫描文件。
创建用户页面
登陆客户端页面,可以设置转码。
新建歌单
最后一个 全部随即播放
功能,赞了
手机端网页
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. 最后
目前使用存在几个问题需要解决:
- 没有后台歌曲文件管理,上传音乐较为麻烦。(当前采用的方案rclone挂载OneDrive)
- 歌词需要内置才能现实,只是存放lrc文件无法解决。(通过其他软件添加内置歌词、封面、专辑等信息)
- last和spotify获取信息不成功。(同上)
评论区