[Tutorial] Roon Core Canonical Multipass deployment

IMPORTANT:
Multipass does not support bridged networking yet as of version 1.3.0 (some users apparently made it to add a second interface in bridge mode) meaning it may not be a real alternative at the moment for most of us wanting to run Roon Core as a virtual appliance as we do use Roon as a networked music player across our home LAN.

What is Multipass?

Multipass is a lightweight VM manager for Linux, Windows and macOS. It’s designed for developers who want a fresh Ubuntu environment with a single command. It uses KVM on Linux, Hyper-V on Windows and HyperKit on macOS to run the VM with minimal overhead. It can also use VirtualBox on Windows and macOS. Multipass will fetch images for you and keep them up to date.

Since it supports metadata for cloud-init, you can simulate a small cloud deployment on your laptop or workstation.

Roon Core running in Multipass instance:

1-Download and install Multipass: https://multipass.run
2-Create your multipass Ubuntu instance (if no image is specified it will create an Ubuntu 18.04 instance “bionic”):

multipass launch -c 2 -m 6G -d 32G —-name RoonCore -v

VM options/layout explained:
-c 2 > Amount of CPUs (cores) your instance can use, 2 is more than enough.
-m 6G > RAM memory you are allowing the container to use. This is my current container usage (Memory usage: 803.8M out of 5.8G) fully loaded library + reproducing Qobuz at the moment.
-d 32G > Disk size, from my experience with Roon running in Parallels VMs (4000 -/+ album library) noticed the disk usage is around 6GB to 10GB, 32GB will be more than enough for most people (this disk will be thin allocated).
–name RoonCore > Your VM instance name, you can put whatever you want.
-v > Verbose, will show extra deployment data during the image install.

3-Preparing your instance for Roon Server for Linux deployment:

a- sudo apt-get update
b- sudo apt-get install ffmpeg
c- sudo apt-get install alsa
d- sudo apt-get install cifs-utils

4-Installing Roon Server:

NOTE: https://kb.roonlabs.com/LinuxInstall

a- $ curl -O http://download.roonlabs.com/builds/roonserver-installer-linuxx64.sh
b- $ chmod +x roonserver-installer-linuxx64.sh
c- $ sudo ./roonserver-installer-linuxx64.sh

5-Confirm Roon Server is now up and running: service roonserver status, you will get an output like this:

ubuntu@RoonCore:~$ service roonserver status
roonserver.service - RoonServer
Loaded: loaded (/etc/systemd/system/roonserver.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-06-26 11:20:06 CST; 21min ago

6-Check from your Roon GUI the newly deployed Roon Server instance is listed and ready to connect.

7-Prepare to attach your NAS storage target to the Multipass instance and be persistent after instance reboots:

NOTE: vi for beginers https://www.cs.colostate.edu/helpdocs/vi.html (I am sure there are better resources than this one…).

a- Create the file “sun-credentials”: sudo touch /etc/sun-credentials
b- edit the file: sudo vi /etc/sun-credentials
c- you have to enter the following information to the file:

username = user
password = password
domain = domain

Example how it should look like:
username = timcook
password = timspassword
domain = local

8-The “sun-credentials” file must not be readable by users. To set the correct permissions and ownership, run:

sudo chown root: /etc/sun-credentials
sudo chmod 600 /etc/sun-credentials

9-Create a mount point for your SMB/CIFS share: mkdir /mnt/MusicLibrary
NOTE: you can use whatever folder name you want to use instead of “MusicLibrary”, thats just the one I used for mine.

10-Mount your music smb/cifs share/source referencing to the “sun-credentials” file:
sudo mount -t cifs -o credentials=/etc/sun-credentials //192.168.5.1/MusicLibrary /mnt/MusicLibrary/

NOTE: make sure to use the correct IP and path to your music repository.

11-Check you were able to mount your SMB/CIFS share with: df -h

Output example:
//192.168.5.1/MusicLibrary 2.8T 2.2T 578G 80% /mnt/MusicLibrary

12-SMB/CIFS share automount configuration. Create the “/etc/fstab” file in case it does not exist at “/etc”: sudo touch /etc/fstab

13-Edit the file you just created “/etc/fstab” with vi: sudo vi /etc/fstab

a- Add the following entry (use your “/etc/fstab”):

//192.168.5.1/MusicLibrary /mnt/MusicLibrary/ cifs credentials=/etc/sun-credentials,file_mode=0755,dir_mode=0755 0 0

NOTE: make sure you use your personalized information for your SMB/CIFS share and mount point.

14-Reboot your Multipass instance: sudo reboot

15-Make sure your SMB/CIFS share was automounted to your instance with: df -h

16-If you want to keep using your Roon Core in this multipass instance instead of running it natively in MacOS, Windows or Linux follow the KB to migrate your core: https://kb.roonlabs.com/Migration

Personal feedback after around 24 hours of my core running in Multipass as an Ubuntu 18.04 instance:

1-It is Fast!
2-Haven’t had any issues so far (apart from the raw networking Multipass offer).
3-The resource usage is log, very low:

Name: RoonCore
State: Running
IPv4: 192.168.64.2
Release: Ubuntu 18.04.4 LTS
Image hash: 55646c02a8bc (Ubuntu 18.04 LTS)
Load: 0.22 0.18 0.18
Disk usage: 6.0G out of 30.8G
Memory usage: 759.6M out of 5.8G

4-No Qobuz issues or skipping tracks after several albums listened.
5-The Multipass instace will start with your computer (at least in MacOS), roonserver service as well.
6-It is light, free and headless.

2 Likes

I have not tried this yet, but it looks pretty cool. I think there are three places in the doc where you reference “win-credentials” when you intended to say “sun-credentials”. Or the reverse. Unless I’ve misunderstood, probably these should all be the same.

Right! thanks, within my testing decided to use a different node that’s why the mix, editing…

1 Like