What is an alternative to Rock-ons?

I was about to ask if there was a way to install multiple instances of a Rock-on, since I have multiple people accessing the same NAS who want their own torrenting setups, i.e. two people wanting their own Transmission daemons or two Deluge daemons on their own shares. But then I saw that this issue was brought up in 2016 with no updates since then, so now I’m wondering what an alternative would be.

I believe Rockstor is using Docker, so would the best alternative be to manually create a new Docker container with the software of our choice? I’ve never used Docker before, so I have no idea how easy/hard that would be. My intuition would say that I would have to create a share for the Docker configurations, then figure out a way to link the torrenting directory to my media directories, which I did the equivalent of with Rockstor’s Rock-on and share webGUI interfaces. But I’m not sure if that’s all I need to do or if it’s going to be harder than I’m making it sound.

Any advice on what to do, or information on how others dealt with this problem, would be appreciated.

Hi @KVB,

You are correct on all points in your post: we currently do not support running multiple instances of a given Rock-on at the same time, but this is something you can do by running the docker containers yourself. You could thus run multiple containers based on the same image (let’s say Transmission or Deluge based on your example) with different container names and volume/port bindings.

Let’s take the example of the Deluge Rock-on; you can see its details in our rockon-registry repository:

When running the rock-on, Rockstor gathers the settings entered by the user during the Rock-On install wizard and then runs the corresponding docker run command. In this case, it would be (from memory):

docker run -d \
    --name Deluge \
    -p 8112:8112 \
    -p 58846:58846 \
    -v /mnt2/<share-set-as-config>:/config \
    -v /mnt2/<share-set-as-downloads>:/downloads \
    -e PUID=1000 \
    -e PGID=100 \
    -v /etc/localtime:ro:/etc/localtime \
    linuxserver/deluge

This will create and run a docker container named Deluge, using the linuxserver/deluge image. If you try to run the same command again, Docker will complain that a container with the same name already exists. To run another instance of the linuxserver/deluge image, you would thus need to change a few settings such as the container name, the volumes bound for /config and /downloads, as well as the ports (as they would otherwise be detected as already in use by docker). If your intent is to run different instances of the linuxserver/deluge image for different users, you could thus follow a logic akin to the following:

docker run -d \
    --name Deluge_user1 \
    -p 8112:8112 \
    -p 58846:58846 \
    -v /mnt2/<share-set-as-config>:/config \
    -v /mnt2/<share-set-as-downloads>:/downloads \
    -e PUID=<PIDofUser1> \
    -e PGID=<GIDofUser1> \
    -v /etc/localtime:ro:/etc/localtime \
    linuxserver/deluge


docker run -d \
    --name Deluge_user2 \
    -p 8113:8112 \
    -p 58847:58846 \
    -v /mnt2/<share-set-as-config>:/config \
    -v /mnt2/<share-set-as-downloads>:/downloads \
    -e PUID=<PIDofUser2> \
    -e PGID=<GIDofUser2> \
    -v /etc/localtime:ro:/etc/localtime \
    linuxserver/deluge

Note that you were also right in thinking you should create the shares first, as it would allow you to manage those using Rockstor’s webUI. Note also that if you plan on managing a few docker containers manually, you might be interested in using a docker management interface like Portainer (for which we have a Rock-On), or docker-compose.

The ability to mount the same share in multiple Rock-ons/docker containers will help you there. For instance, you could mount (volume bind) your media share to all your other containers, which means you can either set the latter to download directly to your media directory, or have something else copy your downloads to your media directory. Using the Rockstor webUI, this can be done by using the Add Storage post-install customization for a Rock-On, or simply by adding another volume bind (-v option) if running the docker run commands manually.

Hope this helps, and let us know if you’d like additional details/descriptions on anything.

3 Likes

Thank you for your help! After spending a bit too much time learning how Docker and Docker-compose works (some of those tutorials go into way too much detail for a simple use case like mine, lol), I eventually just did zypper install python3-docker-compose, created a docker-compose.yml file, and it worked. This also solved a problem I had (which I didn’t ask about) regarding older versions of programs. I have a person who uses Windows connecting to the NAS who likes to use Deluge, but Deluge has yet to officially upgrade to v2.0 on Windows, and v1.3 clients can’t connect to v2.0 daemons. I wound up solving this by using an unofficial installer for v2.0 on Windows, but thanks to Docker-compose, I now know how to start up v1.3 daemons on the NAS.

4 Likes