I am planning on setting up a FreeNAS system soon, and it will run various services including Roon. There isn’t (unfortunately!) a BSD port of Roon (yet?), so I am going to have to look at running it in a VM (or possibly using linux binary compatibility). If the VM is dedicated 100% for Roon, then obviously I want the smallest, lightest OS possible.
So, to that end I set up a Tiny Core Linux VM image (http://tinycorelinux.net/10.x/x86_64/release). After installing the various dependencies, and making one tweak (symlinked /lib to /lib64 so the run time linker reference in the roon binaries would work), RoonServer runs. The entire disk space for the OS is 45Mb and memory usage is pretty light.
All in all a success I think, so figured it was worth reporting here in case anyone else is looking for this type of option (or if anyone has managed to create a smaller, lighter image). A lighter image is definitely possible, there are packages that got sucked in as dependencies which could avoided, but this is pretty decent I think.
A small (see what I did there?) update. I install arch Linux but the base install image was already over 100 megs so I gave up on that. I also tried alpine Linux, but it doesn’t use glibc and the repository doesn’t include ffmpeg, so would require a bit more effort than I am prepared to do… especially when the base install for alpine is also over 100megs.
At this point I think I’m going to stick with tiny core (technically “microcore” I think). If there is any interest I can write up instructions for setting up a tiny VM.
One of the great thing about BSD is its jail feature. Essentially you can have a linux environment running inside your BSD install that will run Roon.
It’s been years since I’ve used FreeNAS (pre jails we’re talking here), but I do believe they make it rather easy to set up through their webUI. A minimal debian install should do the trick. I wouldn’t worry about extra deps that get installed, as long as their not running they’re not doing anything harmful except maybe taking up some extra storage.
Jails are fantastic, and I make use of them for pretty much everything other than Roon. Unfortunately Linux emulation on BSD isn’t perfect, and it seems that Linux mono running under emulation has some problems that I wasn’t able to work around (I posted about it in the BSD feature request thread). RoonServer is a mix of mono binaries and a small handful of native libraries, which means we can’t just run it anywhere that has .net.
Specifically I get:
- Assertion at mini-amd64.c:207, condition `amd64_is_imm32 (disp)’ not met
Thanks for the suggestion tho, I appreciate it and definitely agree RoonServer running in a jail would be the ideal solution!
I’m very interested in the step by step instructions to install and run Roon on Linux / FreeNAS. I’m not a Linux expert, but I’m comfortable following instructions and dealing with minor issues that come up.
I would love to say it has been working for me, but I gave up in the end. Just about a week ago I picked up a cheap 2nd NUC and installed ROCK.
It is not possible to run Roon inside a jail, not even with Linux emulation so I was running a virtual machine with Linux however I encountered issues with plugins failing after a roon restart (which happens semi regularly for updates etc). Roon support was unable to resolve the issue. And it may well be very specific with bhyve (the virtualisation software on FreeBSD). This left a bit of a sour taste in my mouth as part of the appeal with roon is the ease of use, but plugins failing meant it wouldn’t work the way it should.
I spent a bunch of time on it, and my time is just not worth wasting on this, and a second hand NUC was only a couple of hundred bucks.