Administrator
发布于 2026-04-12 / 4 阅读
0
0

Navidrome 私人音乐服务器部署经验总结

一、服务器要求

  • 最低配置: 1核1G 内存即可,非常轻量

  • 需要: Docker + Docker Compose、Nginx(反向代理)、Certbot(SSL 证书)

  • 磁盘: 看你音乐库大小,按需规划

二、部署步骤

1. 安装 Docker

curl -fsSL https://get.docker.com | sudo sh

2. 创建目录

sudo mkdir -p /opt/navidrome /opt/music

3. docker-compose.yml

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    ports:
      - "127.0.0.1:4533:4533"
    environment:
      ND_SCANSCHEDULE: "1h"
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
      LANG: C.UTF-8
      LC_ALL: C.UTF-8
    volumes:
      - ./data:/data
      - /opt/music:/music:ro
    restart: unless-stopped

4. 启动

cd /opt/navidrome && docker compose up -d

5. Nginx 反向代理 + SSL

DNS 先加 A 记录指向服务器 IP,然后申请证书:

sudo certbot --nginx -d music.你的域名.com

在 nginx 配置中加反向代理,关键配置:

  • proxy_pass http://127.0.0.1:4533

  • 设置 Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto 等请求头

  • 设置 Upgrade 和 Connection 头支持 WebSocket

  • client_max_body_size 100M

三、踩坑记录

坑1:中文乱码

现象: 歌曲名、歌手名显示问号或方块

原因: 中文 mp3 的 ID3 标签是 GBK 编码,Navidrome 按 UTF-8 读取

解决:

sudo apt install python3-mutagen
find /opt/music/ -type f -name "*.mp3" -exec mid3iconv -e GBK {} \;

坑2:端口安全

不要直接开放 4533 到公网。用 127.0.0.1:4533:4533 绑定本地,走 Nginx 443 反向代理更安全。

坑3:Docker 权限

装完 Docker 后命令可能需要 sudo,加到 docker 组可免 sudo:

sudo usermod -aG docker $USER
# 重新登录生效

四、日常使用

  • 上传音乐: 文件丢进 /opt/music/,不管子目录结构,Navidrome 按标签自动归类

  • 扫描频率: 默认每小时,也可后台手动触发

  • 多用户: 管理员后台添加家人账号,各用各的

  • 手机 App: playSub(Android/iOS 免费),填服务器地址 + 账号登录

  • 专辑封面: 自动从标签读取,没有的话会尝试在线获取

五、核心优势

  • 资源占用极低(内存约 25MB)

  • 支持几乎所有音频格式(mp3/flac/wav/ogg/aac)

  • 有免费手机客户端

  • 多用户独立账号

  • 不暴露端口,Nginx 代理更安全


实际部署参考:music.ucloud.binyuli.top


评论