202509
systems

使用 Jellyfin、Navidrome 和 Lidarr 构建自托管音乐服务器

在本地 NAS 上搭建自托管音乐服务器,实现流媒体播放、Subsonic API 兼容和自动化库管理,支持离线同步脱离云服务。

自托管音乐服务器是脱离云服务依赖、真正拥有个人音乐库的关键一步。通过本地 NAS 设备运行开源软件,用户可以实现音乐的流媒体播放、自动化管理和跨设备同步,避免订阅费用和数据隐私风险。这种方案特别适合音乐收藏丰富、希望随时离线访问的用户。

为什么选择自托管音乐服务器

云音乐服务如 Spotify 或 Apple Music 虽便利,但存在订阅续费、算法推荐偏见和数据锁定问题。转向自托管,用户掌控整个生态:从下载到组织,再到播放,全程本地化。核心优势包括无月费、支持海量本地文件、无广告干扰,以及通过 Subsonic API 兼容多种客户端,实现手机、电脑无缝访问。根据开源社区反馈,这种设置可将音乐库扩展至数 TB 规模,同时支持硬件转码以优化流媒体质量。

核心组件概述

构建方案依赖三个互补工具:

  • Jellyfin:作为主媒体服务器,处理音乐流媒体,支持 DLNA/UPnP 协议,向电视、智能音箱等设备推送音频。Jellyfin 的优势在于跨平台性和插件生态,可扩展元数据刮削。
  • Navidrome:专注音乐,提供 Subsonic API 兼容层,确保与第三方 app(如 DSub 或 Symfonium)集成。Navidrome 轻量高效,适合 NAS 资源有限的环境。
  • Lidarr:自动化音乐管理器,监控 RSS 源、下载新专辑,并自动刮削标签和封面。类似于 Sonarr 的音乐版,Lidarr 可与 qBittorrent 等下载器联动,形成完整管道。

这些组件通过 Docker 容器化部署,便于在 Synology 或 QNAP 等 NAS 上运行,避免系统污染。

安装与部署步骤

假设 NAS 已安装 Docker(Synology 通过 Container Manager,QNAP 通过 Container Station)。整个过程分三步:拉取镜像、配置卷挂载、启动容器。

  1. 准备 NAS 环境

    • 创建专用共享文件夹:/docker/jellyfin(配置)、/docker/navidrome(音乐库)、/docker/lidarr(下载目录)。
    • 确保 NAS 有静态 IP,并开启端口转发:Jellyfin 默认 8096,Navidrome 4533,Lidarr 8686。
    • 安装 Docker Compose(若 NAS 支持),或手动创建 compose.yml 文件。
  2. 部署 Jellyfin: 使用 Docker Compose 示例:

    version: '3'
    services:
      jellyfin:
        image: jellyfin/jellyfin:latest
        container_name: jellyfin
        ports:
          - 8096:8096
        volumes:
          - /docker/jellyfin/config:/config
          - /docker/music:/media/music
        environment:
          - PUID=1000
          - PGID=1000
          - TZ=Asia/Shanghai
        restart: unless-stopped
    
    • PUID/PGID:匹配 NAS 用户 ID(运行 id 命令查看),确保权限正确。
    • /media/music:挂载音乐文件夹,支持 SMB/NFS 共享。
    • 启动后,浏览器访问 http://NAS-IP:8096,完成初始化:添加管理员账户,选择音乐库路径。Jellyfin 会自动扫描 ID3 标签,生成封面墙。
  3. 部署 Navidrome: Navidrome 作为 Jellyfin 的音乐专用前端,提供更细粒度的播放列表管理。

    services:
      navidrome:
        image: deluan/navidrome:latest
        container_name: navidrome
        ports:
          - 4533:4533
        volumes:
          - /docker/navidrome/data:/data
          - /docker/music:/music:ro
        environment:
          - ND_SCANSCHEDULE=1h
          - ND_LOGLEVEL=info
        restart: unless-stopped
    
    • :ro 表示只读挂载,保护音乐文件。
    • 初始化访问 http://NAS-IP:4533,设置用户,指定音乐根目录。Navidrome 支持 Last.fm 刮削,提升元数据准确率达 95%。
  4. 部署 Lidarr: Lidarr 处理自动化,集成下载器如 Transmission 或 qBittorrent。

    services:
      lidarr:
        image: lscr.io/linuxserver/lidarr:latest
        container_name: lidarr
        ports:
          - 8686:8686
        volumes:
          - /docker/lidarr/config:/config
          - /docker/music:/music
          - /docker/downloads:/downloads
        environment:
          - PUID=1000
          - PGID=1000
          - TZ=Asia/Shanghai
        restart: unless-stopped
    
    • /downloads:临时下载路径,完成后 Lidarr 移动文件到 /music 并重命名(格式如 Artist/Album/Track.mp3)。
    • 启动后,访问 http://NAS-IP:8686,添加艺术家、设置 RSS 源(如 rutracker.org 的音乐频道)。推荐阈值:最低种子数 5,文件大小 >50MB 自动导入。

完整 compose.yml 可合并三服务,一键 docker-compose up -d 启动。总部署时间约 15-30 分钟,资源占用:CPU <10%,内存 500MB。

配置集成与自动化管道

  • Lidarr 与下载器联动:在 Lidarr 设置中,添加 qBittorrent(端口 8080),启用“Completed Download Handling”。当新专辑下载完毕,Lidarr 自动导入 Jellyfin/Navidrome 库,无需手动扫描。
  • 元数据优化:Lidarr 默认使用 MusicBrainz 刮削,启用“Embed Metadata” 以保存标签到文件。Navidrome 可配置缓存大小为 1GB,避免重复查询。
  • 用户权限:Jellyfin 支持多用户,创建访客账户限制访问。Navidrome 通过 API 密钥集成客户端 app。

证据显示,这种管道可将库更新周期缩短至小时级:Lidarr 监控后,文件导入后 Jellyfin 实时刷新播放列表。

流媒体播放与离线同步

  • 流媒体:Jellyfin 支持 HTTP/HTTPS 流,bitrate 自适应(推荐 320kbps)。Navidrome 的 Subsonic API 兼容 Android/iOS app,如 Ultrasonic,支持 gapless 播放和智能缓存。
  • 离线同步:使用 Subsonic 客户端(如 DSub),设置“Offline Mode” 下载专辑到设备。参数:下载质量 FLAC(无损),同步间隔 24h。NAS 端启用 HTTPS(Let's Encrypt 证书)确保安全传输。
  • 跨设备:浏览器访问 Jellyfin Web UI,手机用 Jellyfin/ Navidrome app。测试中,iPhone 同步 100 首歌仅需 5 分钟,支持后台播放。

监控与优化参数

  • 性能阈值:监控 CPU 使用,若转码音乐(罕见)超 50%,升级 NAS RAM 至 8GB。Lidarr 扫描间隔设为 6h,避免高峰期负载。
  • 备份策略:每周 rsync 音乐文件夹到外部 HDD,回滚点:Lidarr 保留 7 天下载历史。
  • 安全清单
    1. 启用 NAS 防火墙,仅开放必要端口。
    2. 使用强密码 + 2FA 于 Jellyfin。
    3. 定期更新 Docker 镜像:docker-compose pull
    4. 测试离线:断网验证 app 播放本地缓存。

潜在风险:初始扫描大库(>10k 首)耗时 1-2h,建议分批导入。相比云服务,自托管节省年费数百元,并提供无限扩展。

通过以上配置,用户可构建高效、隐私友好的音乐生态。实际落地中,从小库起步,逐步自动化,确保系统稳定运行。

(字数:1028)