把音乐库搬上云端:Navidrome 自托管音乐服务器搭建指南

前言

不知道你有没有遇到过这样的尴尬:手机里存了几百首歌,但每次想听点"对味"的音乐,还得在各种 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 的安装:

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

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 命令 (适合传少量文件):在本地电脑打开终端,执行:

    bash 复制代码
    scp /本地路径/单曲.flac root@你的服务器IP:/opt/navidrome/music/
  • SFTP 工具(推荐新手):用 WinSCP 或 FinalShell 这类工具,像操作 FTP 一样直接拖拽上传。

  • 直接下载 :如果音乐文件在网盘或者某个下载链接里,可以在服务器上用 wget 直接拉取。比如:

    bash 复制代码
    cd /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,流畅地播放着服务器里的无损音乐时,这种"拥有"的感觉还是挺值的。

相关推荐
Yupureki2 小时前
《C++实战项目-高并发内存池》2.ObjectPool构造
linux·服务器·c语言·开发语言·jvm·c++
小狗很可爱2 小时前
利用Docker建立个人博客
运维·docker·容器
玉梅小洋2 小时前
修改 Docker 容器主机名
运维·docker·容器
这也能行2 小时前
KeepAlived
运维·服务器·网络
人间打气筒(Ada)2 小时前
gitlab私有仓库搭建
运维·gitlab·项目实战·devops·代码部署实战·版本控制仓库
何中应2 小时前
ubuntu如何设置远程工具连接
linux·运维·ubuntu
黑蛋同志2 小时前
Rocky Linux 10 上搭建 社区版 GitLab CE
linux·运维·gitlab
fygfh.2 小时前
Linux外设之 串口(UART)的使用
linux·运维·单片机
赛博云推-Twitter热门霸屏工具2 小时前
推特自动化营销新趋势:赛博云推如何实现热门霸屏与精准获客
运维·科技·自动化·媒体·twitter