Kanade's Dev Journal

自建私人音乐服务器 - Navidrome

Build own private music server.jpg
Published on
/4 mins read/---

NOTE

目前国内音乐平台,曲库的不完整常常让人感到烦恼(说的就是你,网抑☁️)。为了满足个人的音乐需求,用户不得不在多个APP之间来回切换,浪费了不少时间和精力,于是就想着自建一个类似云音乐的服务。找了一圈发现了这款开源免费的项目--Navidrome,界面简洁操作简单, 使用 Go 语言开发,内存占用低,对机器的性能要求不高,适合拿来折腾玩玩。

准备工作

  • 云服务器(本教程使用 Ubuntu 系统)
  • 安装 Docker、Docker Compose 安装指南

开始搭建

## 升级包
apt update -y
## 创建应用目录
mkdir /home/apps/navidrome && cd navidrome
## 编辑 docker 配置
vim docker-compose.yml

docker-compose 配置:

version: '3'
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - '4533:4533' # 冒号左边可以改成服务器未被占用的任意端口
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: '@weekly'
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: '/navi'
      ND_PLAYLISTSPATH: '.'
      ND_SPOTIFY_ID: '你的spotify id'
      ND_SPOTIFY_SECRET: '你的spotify secret'
      ND_ENABLEARTWORKPRECACHE: 'true'
      ND_ENABLESHARING: 'true'
      ND_ENABLETRANSCODINGCONFIG: 'true'
    volumes:
      - './data:/data'
      - '/home/apps/navidrome/music:/music:ro' # 冒号左边改成自己本地实际的音乐文件夹路径

环境配置说明:

参数说明默认值
ND_SCANSCHEDULE扫描周期,多久扫描一次音乐库,@weekly表示每周扫描一次目录@every 1m
ND_SESSIONTIMEOUT空闲会话超时时间24h
ND_BASEURL相对路径,反代时很有用,不会暴露navidrome的端口,有一定的保护作用/
ND_PLAYLISTSPATH播放列表的相对路径.
ND_SPOTIFY_ID通过 spotify 获取歌曲封面信息
ND_SPOTIFY_SECRET通过 spotify 获取歌曲封面信息
ND_ENABLEARTWORKPRECACHE是否启用封面图片缓存true
ND_ENABLESHARING启用分享功能,可以不登录就可以听歌true
ND_ENABLETRANSCODINGCONFIG在UI中启用转码配置false

启动应用

docker-compose up -d
  • 启动成功,访问 IP:4533 可以看到界面 navidrome

    • 创建管理员账号和密码进行登录并保存登录信息
    • 在之前定义的音乐文件夹路径,上传音乐文件 music
    • 界面出现上传的音乐专辑 music1
  • 启动失败,查看容器报错日志解决

## 查看容器id
docker ps -a
## 查看日志
docker logs 容器id

挂载 OneDrive

由于 VPS 存储空间通常有限,通常只有几十GB,若想收集大量高品质音乐显然不够。因此,可以通过挂载外部存储来“曲线救国”,实现存储扩展。详细教程可参考我的这篇文章

上传音乐文件到 OneDrive Music 文件夹下

music

点击红色框框内任一图标扫描文件夹,可以看到成功加载到 Navidrome

new

最后

分享两个下载无损音乐资源的 TG 渠道

Happy building!