私有音乐服务 Navidrome:部署与Nginx 二级目录反代访问

基于某些执念,总是想把喜欢的,尤其是那些循环的音乐离线下来,总感觉哪天想起一个旋律但却想不起名字,也找不到,所以创建一个音乐库就是成也为执念的实现方式。

很久以前,我使用 foobar2000 ,智能手机兴起后,各种APP都尝试过,后面还用过MDP(Music Player Daemon),现在,我选择了 Navidrome,有基本的功能,很简单。把它部署在我的家庭服务器上,记录一下部署过程。

目标

  • 让Navidrome跑起来
  • 使用Nginx二级目录反向代理进行访问

环境:

  • Debian/12
  • Docker/27.3.1
  • Nginx/1.27.2

准备工作

  • 查看用户 ID,以备用: id www (www换成你准备运行Navidrome和存储音乐的用户)
  • 两个文件夹:音乐数据文件夹、Navidrome 数据文件夹
  • 检查音乐文件夹的权限,如果有必要,进行修改 chown www:www /srv/Music -P
  • 确定用于反代的二级目录名称,比如这里用 /music 

配置Compose 文件并启动Docker

  • 使用二级目录反向代理的时候,需要在 Docker 的启动项中配置二级目录的名称 ND_BASEURL: /music
  • 指定用户 user: 1001:1001
  • 指定挂载文件夹 (参考下面 volumes 部分)
# navidrome
# Music
version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: "navidrome"
    user: 1001:1001 # should be owner of volumes
    network_mode: host
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      # Optional: put your config options customization here. Examples:
      # This is part of my reverse proxy setup; see below.
      ND_BASEURL: /music
      # Re-scan the music library every 60 minutes.
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
    volumes:
      - "/srv/Music/navidrome:/data"
      - "/srv/Music:/music:ro"

将上面配置保存为 navidrome.yml 并启动:docker compose -f /path/to/composs/navidrome.yml up -d

检查容器 docker ps ,如果容器运行正常,这个时候防火墙开放端口(上面演示的是4533,防火墙可以使用 UFW),就可以通过本地IP+端口进行访问了

反向代理

我希望用 https://域名:端口/music 的方式访问这个应用,面且在外面的时候也能访问,需要配置一个二级目录反向代理

在现有 Nginx 站点配置文件下,添加下面反向代理配置(如果没有站点,那就新建一个,可以使用  LNMP 面板进行管理,参考 「说说 LNMP 面板」)

注意:反向代理的二级目录名称需要和前面 Docker 配置的 ND_BASEURL: /music 保持一至  (即  proxy_pass http://127.0.0.1:4533/music;

## Music
       location ^~ /music {
               proxy_pass http://127.0.0.1:4533/music;
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header X-Forwarded-Proto $scheme;
               proxy_set_header X-Forwarded-Protocol $scheme;
               proxy_set_header X-Forwarded-Host $http_host;
               proxy_buffering off;
       }

说实话,在搞二级目录反代的时候找了不少资料,大都好像关注点都在把它安装上,但怎么用好却不讲,总是一笔带过,甚至不说,最后是这老哥的文章帮了我,基本靠抄:Setting up Navidrome with Nginx as a reverse proxy

好像各平台都有支持 Navidrome 的客户端,这个按自己喜好找了,有不少

以上

本文是 居家服务器折腾笔记 的一部分

One thought on “私有音乐服务 Navidrome:部署与Nginx 二级目录反代访问”

Leave a Reply

Your email address will not be published. Required fields are marked *