I’m actively maintaining an unofficial Roon Server docker image for Ubuntu. Supports local libraries and cache persists across restarts. Directly connected USB DACs are discoverable and streamable, and native sound output is supported. The container can run unprivileged and without host networking. Healthcheck verifies availability of Roon Display.
The build as of the time of this posting is Roon Server 1.8 build 846 on Ubuntu 20.04.
I also published an Ansible playbook to deploy the image to an Ubuntu server.
The Dockerfile is published to github and open-sourced… so Roon Labs if y’all want to create an official docker image, it’s free for the taking…
Thanks Steef. If Roon Labs asks, I will remove the image from dockerhub.
One way to distribute a docker image without violating the license agreement is to move the curl request to a startup script inside of the docker image. The script will download and extract Roon if it is not present in /opt/RoonServer. /opt/RoonServer could persist across container restarts, and if the end user so chose, any upgrades prompted from within RoonServer would persist. Since this script runs on container creation, RoonServer is never distributed and is not baked into the image.
Alternately, but still similar to above, /opt/RoonServer can simply be mapped into the docker container as a volume, leaving it up to the end user to download and extract RoonServer. This would give all of the benefits of docker while following the exact steps any end user would use to install locally.
Again, happy to discuss with any staff from Roon Labs.
And of course if the image does come off of dockerhub, it should be easy enough for anyone familiar with docker to simply build the dockerfile locally.
Hello,
Thks for your work. It’s perfect…
I used a nuc with roon rock, but leaving a machine running just for that was a shame.
I just deployed your docker and it’s perfect for my use!
I am currently running roonserver on a windows machine, but plan to build a unraid server soon.
I guess I will be able to use your docker container on unraid OS, right ?
Also, how fast are you updating Roon once a new update comes out ? This is quite important as I am loosing the connection to the metadata identifier each time they decide to update Roon, which currently happens every few days.
I haven’t tried this with unraid (nor am I familiar with unraid), but at first glance it appears to support Linux so there’s a good chance it will work.
On first instantiation, the Docker container will download the latest Roon if it has not already been installed in the container. This was to comply with the Roon software license agreement, which does not allow for binary distribution. Upgrading the Roon version is up to the user via the Roon interface.
Hi David – I tried your container and it seems to work as well as Steef’s, with a bit less RAM utilisation (1.7-1.8GB vs. 2.3GB at steady-state for my library). Thank you to you both! I hope Roon will release a supported container.
Don’t think that will happen. Running RoonServer in a VM is an unsupported environment. So, if you do so, the Tinkering section is where you should post your questions.
Do you happen to have a github project for this container? I build my own container based on debian-slim based on the work @Steef_de_Bruijn did but I’d like to see what you’re doing with Photon. Thanks!
Thanks again, @David_Ferreira for sharing your Photon-based project and image.
Photon does appear to run a bit leaner than debian slim. Here’s a graph of what I see with debian slim and photon. These are using the same /app, /data, /music directories. What you see is a start of the debian slim followed by a start of photon:
The filled portion is memory, the yellowish line is CPU. Photon is using about 300mb less than debian slim. As is typical with Roon, it’s safe to assume that both will grow over time
This is a view of a grafana dashboard I use created using a combination of grafana, influxdb2, and glances.
I don’t see any obvious downsides to using Photon versus debian slim or alternatives now that you’ve solved the challenge of getting ffmpeg installed given that there is no tdnf package.
Thanks very much for this contribution. It’s good work!