雨云搭建 Navidrome 私人音乐服务器

用雨云 KVM 云服务器 Docker 自建 Navidrome,无损曲库多端串流,1核2G 就能跑的私人音乐平台
发布于 更新于
8

无损音乐攒了几百 G,想在手机、电脑、平板上随时听,又不想传到网盘忍受限速,也不想被流媒体平台的曲库和会员制绑架——这正是 Navidrome 解决的问题。它是一个 Go 写的开源音乐流媒体服务器,资源占用极低,兼容 Subsonic API,几乎所有主流音乐客户端都能连。本文用雨云 KVM 云服务器把 Navidrome 完整跑起来,包括曲库整理、HTTPS 和客户端接入。

Navidrome 是什么,和网盘听歌有什么区别

把音乐丢网盘也能听,但体验完全是两码事:网盘不解析音乐标签,没有专辑封面墙、歌手分类、播放列表,更没有转码——手机流量下直接拉一首 100M 的 FLAC 很奢侈。

Navidrome 是真正的流媒体服务:自动扫描曲库、读取 ID3 标签、生成专辑墙,按需把无损转码成 Opus/MP3 适配移动网络,记录播放历史和收藏,还支持多用户,可以给家人单独开账号。它用 Go 编写并内嵌 SQLite,空载内存占用不到 100M,是同类方案(如 Java 系的 Airsonic)里最轻的,非常适合放在一台低配 VPS 上常年运行。

服务器与存储规划

音乐服务器的瓶颈不在 CPU 而在硬盘和带宽。曲库 100G 以内,直接买带大一点数据盘的套餐即可;再大可以考虑对象存储挂载。

我用的是雨云 KVM 云服务器(入口见 雨云官网),1 核 2G + 数据盘的组合足够,国内听歌选宁波/深圳节点延迟低,下单优惠码填 admin01 五折,配置不合适 7 天内可无理由退款。选购思路可参考 雨云 VPS 选购与上手指南

Docker 部署

mkdir -p /opt/navidrome/{data,music} && cd /opt/navidrome

docker-compose.yml

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    restart: unless-stopped
    ports:
      - "127.0.0.1:4533:4533"
    environment:
      - ND_SCANSCHEDULE=1h
      - ND_LOGLEVEL=info
      - ND_ENABLETRANSCODINGCONFIG=true
      - ND_DEFAULTLANGUAGE=zh-Hans
    volumes:
      - ./data:/data
      - ./music:/music:ro

音乐目录以只读(:ro)方式挂载,服务端任何操作都不会动到原始文件。启动:

docker compose up -d

首次访问 http://服务器IP:4533(先临时放开端口或用 SSH 隧道)会引导创建管理员账号。

上传与整理曲库

音乐文件传到 /opt/navidrome/music 目录,推荐用 rsync 断点续传:

rsync -avP --partial ./音乐目录/ root@服务器IP:/opt/navidrome/music/

Navidrome 完全依赖标签而不是文件名来组织曲库,标签乱的曲库刮出来专辑墙也是乱的。上传前建议先用 MusicBrainz Picard 批量修正 ID3 标签和内嵌封面,这一步花的时间最值。

Nginx 反代与客户端接入

配好域名解析后,用 Nginx 反代 4533 端口并上 Let’s Encrypt 证书(步骤与常规反代一致,无特殊参数要求)。之后:

  • 网页端:直接访问域名,界面已相当完整。
  • iOS:play:Sub、substreamer、Amperfy 均可,填服务器地址 + 账号密码即连。
  • Android:Symfonia、Tempo、substreamer。
  • 桌面:Sonixd、Supersonic,或继续用网页。

客户端里把「移动网络转码」设为 128k Opus,流量下听歌一小时只消耗 50M 左右,Wi-Fi 下再走原始无损。

踩坑记录

  • 扫描不到歌曲:先检查文件权限,容器内以非 root 用户运行,chmod -R 755 /opt/navidrome/music 可解决绝大多数扫描为空的问题。
  • 中文标签乱码:老 MP3 常用 GBK 编码标签,Navidrome 按 UTF-8 读取会乱码,用 Picard 重写标签为 ID3v2.4 即可。
  • 专辑封面不显示:优先内嵌封面到音频文件;目录下放 cover.jpg 也可以,但内嵌最稳。

我的做法是配合 Uptime Kuma 监控 盯服务可用性,曲库源文件另用 AList 挂载的存储 做一份冷备,服务器挂了曲库也不丢。

合规提醒

自建音乐服务器仅限存放和播放自己合法购买、拥有版权或已获授权的音乐文件,请勿传播盗版音源或向公众提供未授权的在线播放服务。依据《网络安全法》《著作权法》及相关规定,向不特定公众传播受版权保护的作品需取得授权。建议关闭注册、仅向家庭成员开放账号。

小结

Navidrome 把「自己的音乐库」变成了一个不输商业平台体验的私人流媒体:专辑墙、多端同步、智能转码、多用户,而资源占用低到 1 核 2G 都绰绰有余。雨云 KVM 配数据盘的组合月成本很低,优惠码 admin01 还能再打五折,音乐收藏多年的朋友值得为它建一台专属服务器。

常见问题(FAQ)

Navidrome 对服务器配置要求高吗?
很低。Go 编写、内嵌 SQLite,空载内存不到 100M,1核2G 完全够用。瓶颈主要在存放曲库的硬盘容量和听歌时的带宽,选套餐优先看数据盘大小。
手机流量下听无损太费流量怎么办?
在客户端把移动网络播放设为 128k Opus 转码,Navidrome 服务端实时转码,一小时约 50M 流量;Wi-Fi 下再走原始无损,两不耽误。
为什么扫描不到歌曲或专辑墙很乱?
扫描为空多是文件权限问题,对音乐目录执行 chmod -R 755 即可;专辑墙乱是 ID3 标签不规范,用 MusicBrainz Picard 批量修标签和内嵌封面后重新扫描。
雨云优惠码 admin01 怎么用?
雨云下单页优惠码/推广码输入框填 admin01 即享五折,以结算页显示为准。音乐服务器建议选带数据盘的 KVM 套餐,支持 7 天无理由退款。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

用雨云 KVM 云服务器 Docker 自建 Jellyfin 私人影视媒体库:转码取舍与配置选择、刮削命名规范、中文字幕乱码修复、多端客户端接入,含优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Heimdall 导航页,聚合图床/监控/Wiki/Git 等自托管服务入口,配 HTTPS 与访问保护。含卡片整理与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 部署 Code Server,浏览器里直接写代码、跑终端、调端口,环境只在服务器维护一份。含 HTTPS 反代、强密码安全与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Umami 隐私统计,Umami+MySQL 部署、Nginx 反代 HTTPS、跟踪代码嵌入网站。含默认密码坑、数据库类型与优惠码 admin01 五折。