前言

不知道你有没有遇到过这样的尴尬:手机里存了几百首歌,但每次想听点“对味”的音乐,还得在各种 APP 之间来回切换。更糟心的是,明明是花钱买了会员,喜欢的歌今天还在,明天就因为版权到期变灰了。对于真正喜欢听歌的人来说,手里或多或少都囤了些数字遗产——从早年下载的 MP3,到后来收藏的 FLAC、APE 无损资源。这些文件静静地躺在硬盘里,只能插着电脑听,出门就彻底失联。

Navidrome 就是为了解决这个问题而生的。它是一个开源的音乐服务器软件,可以把服务器变成你私人的云端曲库。装上它之后,你收藏的那些音乐文件就有了“灵魂”——会被自动整理成专辑、歌手歌单,封面和元数据也会被识别出来。更重要的是,它支持多用户,你可以给家人开账号,大家听各自的歌,互不干扰。

这篇教程不讲晦涩的理论,纯粹是一份操作手册。我会带你从头开始,在一台空的 Linux 云服务器上把 Navidrome 跑起来。哪怕你之前没碰过 Linux 命令行,只要跟着敲命令,也能搞定。

第一步:准备工作:

准备一台具备公网IP的云服务器(推荐使用雨云)

优惠注册地址:https://www.rainyun.com/sn_

使用优惠码:sn

注: 使用优惠码注册后绑定微信可领取5折优惠券

服务器选购步骤:

  1. 注册后,在"总览"页面找到"云服务器"入口,进入后点击"购买云服务器"

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

    3.选好后进入控制台,使用SSH客户端远程连接服务器即可,SSH客户端建议选择FinalShell

第二步:安装 Docker(含镜像加速配置)

Navidrome 官方提供了两种安装方式:直接下载二进制文件运行,或者用 Docker。考虑到零基础用户的操作便捷性,这里选择 Docker 方式——它能把应用和依赖环境打包在一起,不用担心因为系统版本差异导致的各种奇怪报错。

2.1 一键安装 Docker

执行下面的命令,它会自动检测你的系统并完成 Docker 的安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

国内服务器访问 Docker 官方仓库有时会比较慢,上面这条命令已经指定了阿里云镜像,安装速度会快很多。

2.2 启动 Docker 并设置开机自启

安装完成后,需要启动 Docker 服务,并确保服务器重启后 Docker 能自动运行:

systemctl start docker
systemctl enable docker

检查一下 Docker 的运行状态,看到 active (running) 就说明正常了:

systemctl status docker

2.3 配置镜像加速(可选但推荐)

如果你身处中国大陆地区,拉取 Docker 镜像时可能会遇到超时。可以给 Docker 配一个国内的镜像源。执行以下命令创建配置文件:

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.nju.edu.cn"
  ]
}
EOF

保存后重启 Docker 让配置生效:

systemctl restart docker

第三步:创建 Navidrome 容器

Docker 环境就绪后,就可以开始部署 Navidrome 了。我们需要创建一个目录来存放 Navidrome 的配置文件、数据库和音乐文件,这样即使容器出问题被删掉,你的数据和音乐也不会丢。

3.1 创建项目目录

执行下面的命令,一次性创建好需要的文件夹:

mkdir -p /opt/navidrome/data /opt/navidrome/music

简单说明一下这两个文件夹的用途:

  • data:存放 Navidrome 的数据库、缓存和配置文件
  • music:你以后上传的音乐文件就放在这里

3.2 编写 docker-compose.yml

Navidrome 官方推荐用 Docker Compose 来管理容器。进入刚才创建的目录,编辑配置文件:

cd /opt/navidrome
nano docker-compose.yml

在编辑器中粘贴以下内容:

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 目录下执行:

docker-compose up -d

-d 参数表示后台运行。第一次启动会从 Docker Hub 拉取镜像,根据网络情况可能需要等一两分钟。拉取完成后,容器就自动跑起来了。

3.4 验证容器状态

输入下面的命令,看到 Up 字样就代表容器正常运行:

docker ps | grep navidrome

如果容器状态是 Exited,可以用 docker logs navidrome 查看日志,看看具体哪里报错。

第四步:上传音乐文件

容器跑起来了,但现在里面还是空的。你需要把喜欢的音乐传到服务器的 /opt/navidrome/music 文件夹里。

4.1 上传方式选择

有几种常见的传文件方法:

  • SCP 命令(适合传少量文件):在本地电脑打开终端,执行:
    scp /本地路径/单曲.flac root@你的服务器IP:/opt/navidrome/music/
    
  • SFTP 工具(推荐新手):用 WinSCP 或 FinalShell 这类工具,像操作 FTP 一样直接拖拽上传。
  • 直接下载:如果音乐文件在网盘或者某个下载链接里,可以在服务器上用 wget 直接拉取。比如:
    cd /opt/navidrome/music
    wget 音乐文件的下载链接
    

无论用哪种方式,上传完成后,建议给音乐目录设置一下权限,确保容器能读到:

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,流畅地播放着服务器里的无损音乐时,这种“拥有”的感觉还是挺值的。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐