I created a Docker Image for the Roon Extension Manager!
This image should be runnable on the more powerful models of the Synology and QNAP NAS’es, although, I cannot test this myself so let me know how this works out.
There is one additional setting that might be relevant if you want to use the Alarm Clock extension, and that is the time zone.
You set this by creating an environment variable in the Environment tab of the Advanced settings. Create a variable called TZ and set the Value to the name of the timezone, in your case ‘Europe/Berlin’.
Do you need to paste the roon-extension-manager.sh file into the container? I keep getting the error that the file is missing. When I added the .sh file, I then got an error in the logs that systemctl1 needs to be installed.
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused “exec: “./roon-extension-manager.sh”: stat ./roon-extension-manager.sh: no such file or directory”: unknown.
Running docker on an Intel NUC with Ubuntu Server as my core OS. I’ve kept things very simple on this device, it’s for the most part a dedicated Docker server. I’m running the latest version of Docker, I believe 18.05.
Yes, I run docker from the command line. I was wondering if it was possibly an issue with permissions and where I’m mounting the volume? Anything I need to be aware of here.
Also, I’ve tried to set this up via docker-compose (my preferred method to manage containers) and ran into the same issue.
Can be, the roon-extension-manager.sh script is stored in the volume so it will be an issue if it can’t be accessed. How do you run docker commands, via sudo or did you add a user account to the docker group?
Did you mount the volume to a specific location, or did you only name it as I did in my command line example?
Usually without sudo (my user account is added to the docker group) but I also tried sudo in this case to troubleshoot.
I mounted it to a specific location (not the one in your command line), it’s the same folder that I store all of my docker configuration files without issues.
I changed my setup to mimic yours, i.e. add normal user to docker group and mount volume to a directory of this user. With these settings I can reproduce you issue
I get it working again by using the default volume location:
-v roon-extensions:/root/.RoonExtensions/lib
(The first part, roon-extensions, is now the name of the volume)
You could gives this a try as a workaround, then I will see if I can find a fix for this.
The thing is that the -v option can be used in two different ways.
The first is for creating a bind mount, this is what you used by specifying an absolute path. This is useful if you want to make a directory of the host system available to the container.
The second is for creating a Docker controlled volume. This is useful to separate container generated data from the container itself. In this case the argument before the colon specifies the name of the volume.
The roon-extension-manager image uses the second option to separate the installed extensions from the image itself, this makes things easier in case of an image update. By using a bind mount the extension directory gets replaced by the empty directory on your host system causing that the extensions can no longer be found.
In summary, you can use the -v option to name the volume or you can leave the -v option out completely to let Docker generate a name for it.
Makes sense, thanks for the clarification. I got it working tonight using docker compose. Here’s the docker-compose configuration I used for anyone interested in copying it.
Yup feel free. Definitely recommend using docker compose! I manage all of my containers using it, super easy to deploy a stack of containers with just the command docker-compose up -d
An updated Docker image is now available (v0.3.2). It solves a problem with timezone handling. This update is especially relevant if you run the Alarm Clock extension within a container.