Roon Core in a Virtual Linux Machine

Wow, 1.5 years is a long time

Surely there were some reboots of the host system between (for hardware changes), but no “reboots” of the VM were necessary.

Sooner or later…

I’m afraid, yes. Ubuntu Server 16.4 was just around, when made my first experiments with the roon VM. However temporary solutions are the ones that last the longest :wink:

Maybe for the next one I’ll get something more lightweighted, selfupdating…

I have ROON Core as Debian Buster ESXi VM.
Music is on Openmediavault NAS on the same ESXi host.
Used to have a DietPi VM before, but changed to vanilla Debian and I am very happy.

1 Like

My setup:

  • Roon Core
  • Ubuntu Server 18.04 LXC container, inside
  • Proxmox VE
  • Headless Dell 9020 i7, 16Gb RAM, 128Gb SSD
  • Library on Synology 1517 NAS

Incredibly stable and trouble free, and scheduled daily backups of the Room VM to the NAS makes it incredibly easy to restore in the event something gets FUBAR (hasn’t happened yet).

Highly recommend Proxmox. Free, incredibly slick virtualisation, with an amazing GUI. I run a bunch of applications in separate containers on Proxmox including Plex, Roon, etc.

2 Likes

@mentalfloss hello,
how are you running roon core as a container? If so, how did you create that container? thanks!

Create a linux container under proxmox, there you install Roon core as usual.
A container is sort of a stripped-down virtual machine, using less ressources.

cf.

I installed a ROCK as virtual machine on VMware. Sound quality is better than install on a physical NUC.

Hi John. I’m running the Proxmox VE (virtual environment) on an ex-lease Dell workstation that sits in the basement. There are good instructions on how to install Proxmox on bare metal on their site.

I use Proxmox to host a bunch of Linux VMs and containers for different applications including Roon - generally 1 app per container as this makes restoration very simple if anything goes wrong. Building a new container with your preferred flavour of linux is a 2 minute job from the Proxmox GUI once Proxmox is installed using the template library available in Proxmox.

Once installed the container acts pretty much identically to a linux VM. You then just follow the instructions on installing Roon Core in linux from the command line.

Dependning on your set up there may be little bit of configuration required to make sure your Roon container has access to your music library etc (mine is on a Synology NAS accessed via SMB) but this is all well documented on the Proxmox site e.g. Storage.

Note I’m a tinkerer but by no means a Linux guru, and found this pretty easy to set up. Almost everything can be done via the Proxmox GUI in you browser.

I’m a big fan of running Roon this way. The performance is fine (I have 5 Roon endpoints and it all works seamlessly and is very reliable). And it is very easy to manage - doesn’t require it’s own machine, easy to restore and upgrade. All my containers are backed up daily to my NAS (using the backup tool built into Proxmox).

This is a really helpful post.

I’m currently debating removing Win10 from my 7th gen i5 NUC 2(4) core with 8GB RAM, 125GB M.2 OS disk and 500GB sata SSD that runs only Roon Core and PLEX Server. Roon is the only user of the media disk now, PLEX uses my NAS for media storage. I only leverage the compute from the NUC to help in speeding up browsing media, transcoding etc. (compared to my NAS where I had PLEX installed before).

I was considering Proxmox with either ROCK in a LXC or a full Ubuntu VM for Roon Core. The only thing is that ROCK requires an OS disk and a media disk to expose via SMB, and I am not sure how to do that (no prior experience with Proxmox) as I also need an OS disk for the proxmox server itself. I guess I can partition the 500GB HDD for the VM’s OS and the media disk as well?

I have a database / registry back-up for my plex server in Windows but I don’t think I can restore that on a Linux VM/Container, meaning I would lose my metadata. This is not critical as PLEX is not used much, but still… I have considered setting up a Windows VM just for PLEX as well.

Since the NUC is a bit low on resources, I am still wondering what the best use case would be to optimize the usage of the available resources.

Hey, have you checked if your NAS has an app for plex?

I have tried it before, but the CPU in my NAS is inadequate for a pleasant experience. Especially pictures load exceptionally slow when the NAS has to process them for display on a TV. I’ve since moved PLEX to the NUC, and that works great. Until RoonARC, I used PLEX for out-of-home streaming of both Tidal and my local files, but that era is over now with ARC. I love that feature…

I understand, that is a reality with NAS hardware sometimes being short of resources for something like a Plex server.

I run my Roon Server in a VM limited to 2 cores and 2GB RAM. I use Vagrant [link] as the VM manager and Virtualbox as the VM platform. There are instructions over [here] for the docker version of the Roon server.

I would assume your NUC will be okay with running a Roon core and a Plex server at the same time but likely you won’t be able to do much more than that, for reliability reasons. Two VMs should work fine, I assume if you chose 2 containers would be okay as well.

Seems also like the ROCK on proxmox was done [here].

The thing about the partitions and the disks you ask should be managed directly by proxmox (having enough space in virtual disks for roon and for Plex) so I wouldn’t do sub-partitioning of the NUC drives.

Thanks for your reply.

Proxmox would be my hypervisor of choice, but given the fact that it would add overhead on an already rather anemic device would make that I would likely not gain much over my current “native” setup on Win10 besides the learning experience of setting it up and managing the host. And, perhaps also the option to migrate the VMs / containers to another host once the day comes to retire the hardware…

I’ve since read up, and it seems LXC containers are a more resource-conservative option besides full VMs. ROCK and PLEX on Ubuntu can run that way it seems… It seems like the smarter option besides 2 full VMs on this hardware…

I’m torn…

1 Like

If you’re thinking LXC I’d take a look at Docker containers as well. They’re more widely used and help will be easier to come by.

I haven’t run these instructions but Plex on LXC over proxmox sounds like it might be not so hard to accomplish.

killdozer has a point, though, docker not only has a larger community and support is easier to obtain, it also runs in windows and you could test your container solutions in windows OS before blowing up the machine to install another OS.

On the VM solution, I chose that because even with 2 cores and 2 GB RAM, the system load is pretty minimal even when running 3 clients connected to the roon server. I am not sure about Plex, though, but if it doesn’t peak about 70% of a VM limited as described, you would have no issues running 2 VMs in that NUC of yours. Remember that the hypervisors still manage to optimize the processor resources when needed so you would only hit trouble if both of your VMs were executing at capacity.

Either option you choose, sounds like a fun learning experience. Let us know how it goes.

1 Like

I run Docker on my NAS for a few low-power containers, so I am familiar with the tool…
My reasoning for LXC (with which I don’t have prior knowledge) is the least amount of resource overhead and the option to run Rock instead of Roon core.

I’m not sure I would hear a difference between ROCK and Roon Core anyway, given that my endpoints are more MidFi than HiFi :blush:

If I would do docker, I would need to go Proxmox => Linux VM or LXC => Docker => Roon + Plex… It’s really unlikely I would run PLEX and Roon at once anyway… So maybe just give it a shot…

1 Like

Thanks for sharing your amazing experience.
I personally run my roon core on Rock and it is working well. 100% reliable.
I used to run my core on Mac or Windows. I used to notice the sound quality becomes with some echo artifacts and when I restart the core it works well. Anyway nothing as reliable as a rock. I am saying that but I am not sure.

Anyway, Rock is amazing. but I am always curious to learn about other Linux based installations. My core interest is sound quality. Any observation from your side on the sound quality. Please note that my Rock is running on Pentium slow processor without a GPU as I assume it is better. Any thoughts would be appreciated.

Thanks.

Honestly…

I’d install whatever flavor of Linux you’re comfortable with and then run both server processes on that Linux. Both Plex and Roon could access the media disk and the NAS if you wanted.

I don’t see any reason to add overhead of a hypervisor in this scenario. But, also, hypervisors are very low CPU overhead but can be very high I/O overhead. So, this is where you want to be careful if you go the hypervisor route. You want to expose as much native disk as possible (passthrough) to the VM. And that native passthrough requires virtualization supports in your CPU so check before going down this route.

In your scenario loading Plex Server and Roon Server on any Linux distro won’t be much different than containers other than you now need to maintain the containers. The difference, of course, is you can’t run ROCK without virtualizing it in some way. I really like ROCK but I also like giving it “dedicated” resources to both guarantee a minimum set of resources and not letting it run away. Roon has a tendency to just consume all RAM it can find.

I run ROCK in a VM on Proxmox but I’ve got 32GB of RAM and 8 Cores so I have resources to dedicate to ROCK. I use a direct attached USB drive for media. The VM is configured with 2 cores and 8GB of RAM. It works well enough. It worked well with 6GB RAM as well but I find certain tasks are just a little snappier with the 8.

oh, and I should mention my base clock frequency on the CPU I’m using is 3.4Ghz. A virtualized core at high core clock frequency is going to be a very different experience than your average NuC CPU which has a lot slower base frequency.

1 Like

I’ve since reinstalled my NUC with Proxmox as the OS, and installed a Win11 VM on top of it. When I saw the CPU power was more than adequate, but the memory was not, I installed 16GB of RAM instead of 8. I was surprised about the limited CPU power the service needs.

Currently, both Roon and Plex are running on the same Win11 VM which works ok. There is a weird issue where I need to restart a client once for the endpoint to show up, but other than that it works fine. The NUC has ample spare resources to run other services on.

I’ve attempted several times to install a ROCK VM, but thus far I have not been able to get it to work. The issue is I can’t get the .iso on the USB key to load properly.

Ideally, I want PLEX and Roon to live on dedicated VMs (or containers).ROCK would be my OS of choice for Roon, but if that would not work out maybe I’ll try on Ubuntu.

I currently have a small 128GB M.2 SATA disk and a 500GB 2,5" data disk in the NUC. The small one contains the Proxmox OS and the VM storage. The larger one is mounted as a directory drive and contains the media (about 70GB of it). I am wondering if I should put a bigger NVME drive in for LVM (thin) or just swap how I use the disks now. I don’t want to invest too much in the NUC though, given it’s age. I do have a 500GB Samsung T5 USB-C SSD I could use as passthrough storage for media I suppose and use the 128GB disk for the OS, the 500GB internal drive for LVM and the external one for music?

The reason I went for VMs is that I am likely going to acquire a more powerful host in the not-too-distant future and I want to be able to move VMs hassle-free. I have a Ryzen 3900x that will come available soon, that might be a candidate, or maybe just a 12 or 13th gen i7 NUC…

I have a fairly decent Synology 720+ with a read/write cache. I have also considered hosting the music there and not bothering with local storage at all… Choices…

Update:

Roon runs in it’s dedicated VM using a ROCK image, thanks to the guys in this excellent thread. Besides ARC, everything works as expected. I guess I need to figure out how to setup port forwarding in the VM itself for that to work…