迁移群晖的Roon套件到Docker安装

8 min

Roon作为低调而优秀的数码音乐管理软件,确实做到了不断涨价也不断升级。当年的Life License是一笔非常值得的投资,完全不像现在很多软件,所谓的买断制是不包含一年后更新的,总是要骗你改投订阅制门庭。也正因为一直升级很顺利,直到这几天我才发现,Roon Server现在有基于Linux和NAS的官方部署方式了。在群晖上,原本都是靠一个第三方套件来封装运行环境,现在一点进去就提示,官方在4月底发布了Docker image,在NAS和Linux机器上,都应该用docker方式部署。知识库里更新了对几个主流国际品牌的操作指引(包括群晖),总体比较清晰,我结合自己在7.4.1最新版本下的实践并借助ChatGPT Work整理完善。对群晖硬件和软件版本的要求就不详述了,基本上就是x86_64和AMD64的CPU就能安装,7.2以上的软件版本应该和下面步骤一致。

一、准备基础信息

所有迁移工作最容易出问题的都是数据本身的迁移,而不是安装软件。所以动手前要先收集好下面的信息:

用途NAS 实际路径容器内路径操作
Docker 项目/volume1/docker/roonserver无新建,存放 Compose 文件
原来软件和数据库的位置/volumeUSB2/usbshare无从原始安装目录RoonServer找到实际挂载点
新 Roon 数据/volumeUSB2/usbshare/RoonOnDocker/Roon新建空目录,读写
现有音乐/volume1/Music/Music使用原目录,只读或读写
现有备份/volume1/Archive/RoonBackup/RoonBackups使用原目录,读写

上述路径是后续配置文件的关键。其中Docker项目是在Container Manager中,下载存放官方镜像和配置文件的地方,默认的存储空间1对应的一般就是/volume1。为了管理docker方便,我直接建了一个总目录docker,其中的子目录roonserver就是用于RoonServer这个项目。

音乐的位置要先到Roon客户端里点击Settings——Storage,看里面的文件夹。我的是NAS上存储空间1的Music这个文件夹,对应的实际路径就是/volume1/Music。备份是类似的,在Settings——Backups——Scheduled Backups里就能看到设置。Roon最金贵的就是元数据了,所以如果之前没备份的建议设置一下。

另一个需要注意的是Roon软件和数据库的安装位置。按官方建议,最好是能装在SSD上,否则性能会大大打折。所以我是外置挂载了一个固态移动硬盘,在我机器上的文件夹叫RoonServer,但实际挂载点得自己找一下。最简单的方法就是File Station里右键看文件夹属性,中间的“位置”就是文件夹实际路径。我在这个SSD里新建了一个RoonOnDocker作为新安装位置,避免影响原有数据。

查看实际路径
查看实际路径

二、停服&备份

这一步对于迁移来说非常重要,如果是想从头开始新安装,就无所谓。

首先打开Roon客户端,Settings——Storage,在原来的音乐文件夹后面“三个点”展开,选择disable(停用)。这相当于是冻结数据状态。紧接着到Backups这里,选择Backup Now将数据备份到NAS某一个目录下(可以见上面的路径)。如果你设置了定期备份,也可以点击查看Scheduled backups,一样“三个点”展开后点击Force backup now. 客户端会停滞一段时间,等备份结束后,建议到NAS里确认一下备份文件夹的时间戳是否OK(如果是定期备份的,在Roon界面上可以直接看到最新的备份日期)。备份出来的数据,后续是要恢复进新安装的,所以务必确保正确。

停掉原来的服务比较简单,在群晖套件中心里找到Roon Server,手动停用就行了。此时客户端会提示断开,不用管。

三、编写配置文件

按上面的路径和配置,替代下面配置内容:

services:
  roonserver:
    image: ghcr.io/roonlabs/roonserver:latest
    container_name: roonserver
    network_mode: host
    environment:
      - ROON_INSTALL_BRANCH=production
      - TZ=Asia/Singapore
    volumes:
      - /volumeUSB2/usbshare/RoonOnDocker:/Roon
      - /volume1/Music:/Music
      - /volume1/Archive/RoonBackup:/RoonBackups
    restart: unless-stopped
    logging:
      driver: local

其中,需要修改的主要是volumes下面的三行:第一行是安装地址,在docker内会映射到/Roon;第二行是音乐文件地址,直接映射成/Music;第三个是备份地址,映射成了RoonBackups. 这里做了映射之后,后面在Roon软件里能看到和要配置的就是这个新路径,docker安装的Roon是不能直接看到NAS或者外接硬盘的。这三行冒号前面的路径都要改成你自己在第一点中选好的设置。

四、安装

到NAS打开Container Manager,点击项目——新增,名称填roonserver,路径选/volume1/docker/roonserver,来源选新建docker-compose.yml,将上面的配置贴近下面的文本框,下一步后跳过端口设置继续下一步,启动下载和首次运行。大概10分钟吧,能下载并启动服务。

五、配置启用

此时打开客户端,连接新的Roon Server。正常你的NAS和电脑是在同一个局域网内,客户端会直接认到新的Roon Server,连接后不要登录,直接点下面小字Restore Backup,选择RoonBackups这个文件夹(假设你之前第二步的备份就在那里),接着就是1%开始的进度读数了,完成后会提示你需要重启。重启完成后就是登录绑定账号。

进入系统后的第一步进入设置,Storage下面应该有两个文件夹,一个是Music Folder,自带并且是默认禁用状态,不用管。另一个是你之前的音乐文件夹,这里需要修改,直接改成/Music(就是第三步提到映射后的文件夹),并启用。Roon会快速扫描一下,如果前面的步骤都正常,Roon已经完全恢复到你迁移前的状态了,可以开始播放音乐啦(可能需要重新手工选一下播放通道)。

最后运行几天如果没问题,就可以到套件中心删除原来的Roon Server套件啦。感谢官方,终于有了更稳定的跨平台实现。

Enjoy music & taste life ❤️