使用 Docker Compose 部署音乐服务器 Navidrome

服务介绍

Navidrome 是一款兼容 Subsonic API 的开源音乐服务器软件,它提供了一个不错的 WebUI,也可以将支持 Subsonic API 的客户端接入。

目前项目正处在活跃开发中,各种各样的新功能正在陆续加入。

我的客户端选择

电脑端

自带 WebUI, Sonixd 【跨平台】

iOS

play:sub 【付费软件 4.99$】

部署方式

采用 Docker Compose 部署 Navidrome,使用 Nginx 作为反向代理。

Docker Compose 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000 # should be owner of volumes
ports:
- "127.0.0.1:4533:4533"
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
ND_SEARCHFULLSTRING: true
# Optional: fetch artist images from spotify
ND_SPOTIFY_ID:
ND_SPOTIFY_SECRET:
# Optional: fetch artist information from last.fm
ND_LASTFM_APIKEY:
ND_LASTFM_SECRET:
ND_LASTFM_LANGUAGE: en
volumes:
- "./data:/data" # Navidrome data
- "/APTH-TO/navidrome-music:/music:ro" # Music folder

使用命令 docker compose up -d 启动服务。

Nginx 配置文件

我建议使用 DigitalOcean 的 Nginx 配置生产工具,示例配置如下:

示例配置

也可参考下述配置,此为 DigitalOcean 生成配置的简化版:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name music.example.com;

# SSL
ssl_certificate /etc/letsencrypt/live/music.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/music.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/music.example.com/chain.pem;

# logging
access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
error_log /var/log/nginx/error.log warn;

# reverse proxy
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:4533;
}
}

# subdomains redirect
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name *.music.example.com;

# SSL
ssl_certificate /etc/letsencrypt/live/music.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/music.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/music.example.com/chain.pem;
return 301 https://music.example.com$request_uri;
}

音乐管理

我一直以文件夹分类的方式管理音乐,但 Navidrome 并不支持文件夹分类。它是根据音乐标签来分类的,例如按照歌手、专辑等依据分类歌曲。

因此,若想使用 Navidrome,需要对音乐进行标签管理。

大约两年前,我写了 一篇文章 介绍使用 Music Tag 和 Foobar2000 两款软件来管理音乐。

Music Tag 的标签源是网易云音乐、豆瓣音乐、QQ 音乐等国内音乐平台,说实话,这些平台的音乐标签质量都不是很好,所以我一直在寻找更好的音乐标签源。

直到我发现了 MusicBrainz,这是一个开源的音乐标签数据库,任何人都可以为它贡献标签。在体验之后,我发现 MusicBrainz 的音乐标签质量要比国内音乐平台的标签质量好很多,所以我决定将 MusicBrainz 作为我的音乐标签源。

我使用 Picard 这款软件来从 MusicBrainz 获取音乐标签。

将音乐导入 Picard 后,它会自动从 MusicBrainz 获取音乐标签,然后将标签写入音乐文件,十分方便。

开始使用

不论是使用 Navidrome 自带的 Web 界面,还是使用兼容 Subsonic API 的客户端,只要连接到 Navidrome,便可开始享受你的私人音乐库。


使用 Docker Compose 部署音乐服务器 Navidrome
https://blog.udon.eu.org/archives/8b115688.html
作者
Kare Udon
发布于
2023年1月31日
许可协议