前言
不知道你有没有遇到过这样的尴尬:手机里存了几百首歌,但每次想听点"对味"的音乐,还得在各种 APP 之间来回切换。更糟心的是,明明是花钱买了会员,喜欢的歌今天还在,明天就因为版权到期变灰了。对于真正喜欢听歌的人来说,手里或多或少都囤了些数字遗产------从早年下载的 MP3,到后来收藏的 FLAC、APE 无损资源。这些文件静静地躺在硬盘里,只能插着电脑听,出门就彻底失联。
Navidrome 就是为了解决这个问题而生的。它是一个开源的音乐服务器软件,可以把服务器变成你私人的云端曲库。装上它之后,你收藏的那些音乐文件就有了"灵魂"------会被自动整理成专辑、歌手歌单,封面和元数据也会被识别出来。更重要的是,它支持多用户,你可以给家人开账号,大家听各自的歌,互不干扰。
这篇教程不讲晦涩的理论,纯粹是一份操作手册。我会带你从头开始,在一台空的 Linux 云服务器上把 Navidrome 跑起来。哪怕你之前没碰过 Linux 命令行,只要跟着敲命令,也能搞定。
第一步:准备工作:
准备一台具备公网IP的云服务器(推荐使用雨云)
优惠注册地址:https://www.rainyun.com/sn_
使用优惠码:sn
注: 使用优惠码注册后绑定微信可领取5折优惠券
服务器选购步骤:
- 注册后,在"总览"页面找到"云服务器"入口,进入后点击"购买云服务器"

2.根据需求选择合适的配置,建议选择国内的服务器,访问更快,选好后点击立即购买即可

3.选好后进入控制台,使用SSH客户端远程连接服务器即可,SSH客户端建议选择FinalShell
第二步:安装 Docker(含镜像加速配置)
Navidrome 官方提供了两种安装方式:直接下载二进制文件运行,或者用 Docker。考虑到零基础用户的操作便捷性,这里选择 Docker 方式------它能把应用和依赖环境打包在一起,不用担心因为系统版本差异导致的各种奇怪报错。
2.1 一键安装 Docker
执行下面的命令,它会自动检测你的系统并完成 Docker 的安装:
bash
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
国内服务器访问 Docker 官方仓库有时会比较慢,上面这条命令已经指定了阿里云镜像,安装速度会快很多。
2.2 启动 Docker 并设置开机自启
安装完成后,需要启动 Docker 服务,并确保服务器重启后 Docker 能自动运行:
bash
systemctl start docker
systemctl enable docker
检查一下 Docker 的运行状态,看到 active (running) 就说明正常了:
bash
systemctl status docker
2.3 配置镜像加速(可选但推荐)
如果你身处中国大陆地区,拉取 Docker 镜像时可能会遇到超时。可以给 Docker 配一个国内的镜像源。执行以下命令创建配置文件:
bash
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.nju.edu.cn"
]
}
EOF
保存后重启 Docker 让配置生效:
bash
systemctl restart docker
第三步:创建 Navidrome 容器
Docker 环境就绪后,就可以开始部署 Navidrome 了。我们需要创建一个目录来存放 Navidrome 的配置文件、数据库和音乐文件,这样即使容器出问题被删掉,你的数据和音乐也不会丢。
3.1 创建项目目录
执行下面的命令,一次性创建好需要的文件夹:
bash
mkdir -p /opt/navidrome/data /opt/navidrome/music
简单说明一下这两个文件夹的用途:
data:存放 Navidrome 的数据库、缓存和配置文件music:你以后上传的音乐文件就放在这里
3.2 编写 docker-compose.yml
Navidrome 官方推荐用 Docker Compose 来管理容器。进入刚才创建的目录,编辑配置文件:
bash
cd /opt/navidrome
nano docker-compose.yml
在编辑器中粘贴以下内容:
yaml
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 0:0 # 使用 root 权限运行,避免读写权限问题
ports:
- "4533:4533" # 左边是宿主机的端口,右边是容器端口
restart: unless-stopped
environment:
ND_SCANSCHEDULE: 1h # 每小时自动扫描一次音乐库
ND_LOGLEVEL: info # 日志级别
ND_SESSIONTIMEOUT: 24h # 登录会话有效期
ND_BASEURL: ""
volumes:
- "/opt/navidrome/data:/data" # 映射配置数据目录
- "/opt/navidrome/music:/music:ro" # 映射音乐目录,ro表示只读
这段配置里有几个关键点需要留意:
user: 0:0表示容器以 root 用户运行。如果你对权限管理比较在意,可以先不写这行,如果遇到文件权限问题再加回来。restart: unless-stopped保证容器意外退出时会自动重启,除非你手动停止它。ND_SCANSCHEDULE: 1h让 Navidrome 每隔一小时检查一次音乐文件夹,有新歌进来会自动刷新。
按 Ctrl+O 保存文件,按 Ctrl+X 退出 nano 编辑器。
3.3 启动容器
在 /opt/navidrome 目录下执行:
bash
docker-compose up -d
-d 参数表示后台运行。第一次启动会从 Docker Hub 拉取镜像,根据网络情况可能需要等一两分钟。拉取完成后,容器就自动跑起来了。
3.4 验证容器状态
输入下面的命令,看到 Up 字样就代表容器正常运行:
bash
docker ps | grep navidrome
如果容器状态是 Exited,可以用 docker logs navidrome 查看日志,看看具体哪里报错。
第四步:上传音乐文件
容器跑起来了,但现在里面还是空的。你需要把喜欢的音乐传到服务器的 /opt/navidrome/music 文件夹里。
4.1 上传方式选择
有几种常见的传文件方法:
-
SCP 命令 (适合传少量文件):在本地电脑打开终端,执行:
bashscp /本地路径/单曲.flac root@你的服务器IP:/opt/navidrome/music/ -
SFTP 工具(推荐新手):用 WinSCP 或 FinalShell 这类工具,像操作 FTP 一样直接拖拽上传。
-
直接下载 :如果音乐文件在网盘或者某个下载链接里,可以在服务器上用
wget直接拉取。比如:bashcd /opt/navidrome/music wget 音乐文件的下载链接
无论用哪种方式,上传完成后,建议给音乐目录设置一下权限,确保容器能读到:
bash
chmod -R 755 /opt/navidrome/music
第五步:首次访问与基础配置
5.1 访问 Web 界面
打开浏览器,在地址栏输入 http://你的服务器IP:4533。如果一切正常,你会看到一个创建管理员账号的页面。
输入你想要的用户名和密码,点击 Create Admin。
5.2 切换中文界面
登录进去之后,界面默认是英文的。点击右上角的头像图标,选择 Personal 。在设置页面找到 Language 下拉框,切换到 简体中文,不需要刷新页面,界面会自动变成中文。
5.3 等待扫描完成
Navidrome 会在后台自动扫描 /music 文件夹里的文件。扫描速度取决于音乐文件的数量和大小------几百首歌大概一两分钟,上万首的大曲库可能要十几分钟。你可以盯着右上角的通知图标,或者刷新页面看看专辑有没有陆续出现。
扫描完成后,你就能在"专辑"、"歌手"等分类里看到自己的音乐了。随便点开一首歌试试,如果能正常播放,恭喜你,私人音乐服务器已经搭建成功了!
写在最后
到此为止,你已经亲手搭建起了一个完全属于自己的云端音乐库。以后再也不用担心"该资源暂无版权",也不用为了听一首歌充好几个会员。想听什么歌,直接丢进服务器的 music 文件夹,Navidrome 会自动帮你整理好。
当然,目前只能在局域网或者公网 IP 直连的情况下访问。如果你想把服务器藏在云上,通过域名随时随地访问,可以接着研究一下 Nginx 反向代理和 SSL 证书的配置。如果希望节省服务器流量,也可以搭配 Rclone 挂载网盘,把音乐文件存在对象存储里。
搭建的过程可能有点折腾,但当你第一次在地铁上打开手机 App,流畅地播放着服务器里的无损音乐时,这种"拥有"的感觉还是挺值的。