The Docker image for the Roon Extension Manager is now available:
Hi, thx to Jan for the detailed instructions. I would like to add the extension to randomly choose a complete album to play. I’m a total novice when it comes to programming and need help completing the process. I followed Jan’s instructions at the top (thank you!) and everything worked until the end. I received an error message. I’ve copied the console from the end of the last successfully executed command to the end. What am I doing wrong and how can I correct it? Thx in advance for your assistance.
root@Aurelic:/# sudo apt-get install -y nodejs
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal
python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
libpython-stdlib libpython2.7-minimal libpython2.7-stdlib nodejs python python-minimal python2.7 python2.7-minimal
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 16.7 MB of archives.
After this operation, 79.0 MB of additional disk space will be used.
Get:1 https://deb.nodesource.com/node_9.x xenial/main amd64 nodejs amd64 9.11.2-1nodesource1 [12.8 MB]
Get:2 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-minimal amd64 2.7.12-1ubuntu0~16.04.4 [339 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7-minimal amd64 2.7.12-1ubuntu0~16.04.4 [1261 kB]
Get:4 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-minimal amd64 2.7.12-1~16.04 [28.1 kB]
Get:5 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-stdlib amd64 2.7.12-1ubuntu0~16.04.4 [1880 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7 amd64 2.7.12-1ubuntu0~16.04.4 [224 kB]
Get:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython-stdlib amd64 2.7.12-1~16.04 [7768 B]
Get:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python amd64 2.7.12-1~16.04 [137 kB]
Fetched 16.7 MB in 2s (6354 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libpython2.7-minimal:amd64.
(Reading database … 9598 files and directories currently installed.)
Preparing to unpack …/libpython2.7-minimal_2.7.12-1ubuntu0~16.04.4_amd64.deb …
Unpacking libpython2.7-minimal:amd64 (2.7.12-1ubuntu0~16.04.4) …
Selecting previously unselected package python2.7-minimal.
Preparing to unpack …/python2.7-minimal_2.7.12-1ubuntu0~16.04.4_amd64.deb …
Unpacking python2.7-minimal (2.7.12-1ubuntu0~16.04.4) …
Selecting previously unselected package python-minimal.
Preparing to unpack …/python-minimal_2.7.12-1~16.04_amd64.deb …
Unpacking python-minimal (2.7.12-1~16.04) …
Selecting previously unselected package libpython2.7-stdlib:amd64.
Preparing to unpack …/libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.4_amd64.deb …
Unpacking libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.4) …
Unpacking python (2.7.12-1~16.04) …
Selecting previously unselected package nodejs.
Preparing to unpack …/nodejs_9.11.2-1nodesource1_amd64.deb …
Unpacking nodejs (9.11.2-1nodesource1) …
Setting up libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.4) …
Setting up python2.7 (2.7.12-1ubuntu0~16.04.4) …
Setting up libpython-stdlib:amd64 (2.7.12-1~16.04) …
Setting up python (2.7.12-1~16.04) …
Setting up nodejs (9.11.2-1nodesource1) …
root@Aurelic:/# mkdir ~/.RoonExtensions
root@Aurelic:/# npm config set prefix ‘~/.RoonExtensions’
root@Aurelic:/# npm install -g https://github.com/TheAppgineer/roon-extension-manager.git
npm WARN deprecated email@example.com: Use uuid module instead
added 20 packages in 6.001s
root@Aurelic:/# cd ~/.RoonExtensions/lib/node_modules/roon-extension-manager
root@Aurelic:~/.RoonExtensions/lib/node_modules/roon-extension-manager# node start.js
throw err; ^
Error: Cannot find module ‘/root/.RoonExtensions/lib/node_modules/roon-extension-manager/start.js’
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:548:15) at Function.Module._load (internal/modules/cjs/loader.js:475:25) at Function.Module.runMain (internal/modules/cjs/loader.js:695:10) at startup (internal/bootstrap/node.js:201:19)
The instructions in this thread are outdated.
I suggest that you use the Roon Extension Manager image instead of the generic Ubuntu image that is used here. My post just above yours has a link to the applicable thread. By using the Roon Extension Manager image you only have to follow the first 6 steps described above and set the options that are described on the image page on Docker Hub (link is in the other thread).
If anything is unclear, just ask.
Thank you for the the quick reply. I didn’t try that approach because I’m not familiar with Docker and relationship to the image and Dockerfile. While I’m pretty good with computers, networks, NAS I’m not comfortable with the concept of Docker and making Terminal-level changes to my MBP.
I was hoping that I could simply install Docker, get the image and point it to the Roon Core on my NAS. This manual approach to adding extensions is more complicated than I thought.
When you followed the instructions provided by Mark, did you use the QNAP Container Station to create the Ubuntu container (steps 1-4)?
If so, then you should search for
theappgineer/roon-extension-manager instead of
ubuntu in step 3.
If you executed this command on a Linux machine and not in a container, then it might be better to use the Linux install script.
Thx for walking me through this. Yes, I’m used the QNAP Container Station to create the container (steps 1-4).
I did as you suggested, found “theappgineer/roon-extension-manager” and created it following steps 4-6 in Mark’s post. Unfortunately instead of a Linux command prompt I kept getting a blank black screen after pressing Enter. I even tried running the first command in step 8 “apt-get update” but only got the cursor with a blank screen and no command prompt.
It’s interesting because when I followed the original instructions, I got the Linux command prompt. What am I not doing correctly?
I even stopped the container, removed it, and created a new one but got the same result: no Linux command prompt. Thx for your patience.
You don’t need the command prompt or any of the manual install commands, everything is already included in the container. After the container is created you should move over to your Roon Remote and go to Settings→Extensions where the Extension Manager should appear.
Thank you! It works great. Found the random track/album play extension and am now very excited. I really don’t like listening to random tracks b/c of the nature of my content (lots of classic rock, live ablums, etc.) and prefer to listen to albums all the way through. I’ll now have the ability to “mindlessly” listen to albums. Thx again for the time and patience.
You’re welcome. Enjoy!
Sorry to come back. At some point the container stopped running on the NAS. I went away but had left Roon running on my MBP (Roon Core is on my NAS) but stopped playing any music. When I returned, there was nothing in the queue and couldn’t find the the extension in Settings. I went to the NAS and saw that the container had stopped running with a message of “404: Not Found” in the console. Everything started working again after I started the container manually. Is this normal behavior? Thx in advance for your continued help.
I think the restart option for Docker is missing. ContainerStation doesn’t offer a way to set this option in the GUI. Please use SSH or Docker compose to install the extension on a QNAP-NAS like I described in this post:
Thx for the reply. I’m very new and unfamiliar/uncomfortable with console operations so pls forgive my questions.
I created a Docker station through the ContainerStation on my QNAP. I then searched for the roon-extention-manager-1 image and created a new container. I didn’t use the Docker commands. I’ve also updated the extension manually through Roon.
Should I also be typing in the “docker compose configuration” you showed? If so, can I copy it directly in the Docker console on the QNAP (through ContainerStore overview tab)? Or do I have to customize the configuration based on my network name, host name, etc.?
Finally, I found an option for automatic restart. Does that mean my issue will now be resolved?
Thanks for your help and patience.
@BlackJack is right, you have to configure the restart policy of the container. It should be possible to change the restart policy on an already created/running container.
First step is to get console access on the QNAP. I don’t have one myself so I don’t know if this can be done via the web interface, but it surely can be done via ssh. These instructions might help to get connected.
Next you can set the restart policy by running the following command in the console:
docker update --restart unless-stopped <name of container>
<name of container> with the name that you gave or was given to the Extension Manager container.
Jan and BlackJack,
Thank you. Here’s what I’ve done:
and this is what it looks like in the QNAP GUI:
I’ve closed both tabs. I hope this works! I’m just an audiophile and wasn’t expecting to learn about containers, docker, etc! Always enjoy the learning part of our hobby however.
We are not there yet, the command has to be entered from outside the container. I expect that you use a laptop or PC to connect to the web interface of the NAS. Use that device and try to follow the steps in the instructions I linked to. You have to find the IP address of you NAS, (you might already use this to access the web interface) and use that to connect.
Let me know how far you get.
Thx for the live support! Will do that now.
Here’s what Terminal on my MBP shows after following the instructions:
The 2nd line “roon-extension-manager-1” was the response I received after I entered the first line: “docker update --restart unless-stopped roon-extension-manager-1”. (“roon-extension-manager-1” is the name of the container). I’ll now resart the container.
Here’s what it now shows in the QNAP GUI:
Should I delete the same command int the “console” part of the GUI? I don’t know what that does. Thx.
That’s exactly what we need, now we know the command was understood!
Everything should be fine now.
Better to remove it, it might lead to confusion in the future.
Thank you for confirming! The only way for me to delete the command in the console is to remove the container, reinstall, etc. That should be easily done now that I have the steps! Once I’m done I’ll post the steps for others.
Installing Roon Extension Manager on QNAP: For Novices Like Me!
Step 1: Use the App Center in your QNAP to find and install ContainerStation:
The How To:
- If you haven’t already, go ahead and install Container Station from QNAP’s AppCenter.
- Open Container Station and on the left hand side in the Management tab, click Create
- In the search box, type “theappgineer/roon-extension-manager:latest” and you’ll see this:
You’ll also see a list of others. Select the first one “Roon Extension for managing Roon Extensions”.
4. Click Create.
5. Now we’ll get a pop-up where we need to do our first bit of config. Click on Advanced Settings and navigate to the Network tab.
6. Change the Network Mode dropdown to Host. That’s all the config we need to do here so go ahead and click Create again. After you have done that we’ll have a Docker container running a vanilla and very stripped down Linux ready to go!
After a few seconds a background task will complete and your container is now running. Head back to the Container Station Overview tab and you’ll see the Container running - denoted by the green cube under Status.
Step 2: Enable Automatic Restart of the Container.
This step requires one to update the container from outside the container, so don’t use the “console” button in the QNAP ContainerStation Overview tab.
- If you’re not sure how to access the QNAP directly from a Mac or PC, follow these instructions:
Once you’re at the NAS command prompt, type this command: “docker update --restart unless-stopped ” without the quotes.
Where it says put in the actual name of the container created under step 1 above. For me that was: “roon-extension-manager-1”. If you’re not sure, go to the Overview tab in the ContainerStation and note the name. Don’t use the “<” and “>” characters when entering the command.
You’ll get a response back. For me it was the name of my container.
Exit Terminal or PuTTY if using Windows.
Step 3: Installing Extension Manager in Roon and Random Radio
In Roon, go to Settings and then Extensions.
Click on Settings for Roon Extension Manager.
Under Category, select Playback
Under Playback Extension, select Random Radio
Under Action, select Install.
Once installed, you can configure the settings for Random Radio. See below for specific instructions, etc.:
Step 4: Enjoy random albums!