3rd Party Rock-Ons

Hello. Just started looking into Rockstor. Love that its totally based around BTRFS. I was wondering: Do we envision a time when it may be possible for there to be official Rock-ons and 3rd party Rock-ons?

1 Like

@Joe_Christl Thanks for your interest in Rockstor and welcome to our community!

Our plan is to create a Rock-on hub/store with following high level functionality

  1. Official Rock-ons supported by the Rockstor team
  2. trusted/certified/blessed Rock-ons that are supported by the community
  3. other Rock-ons added by community not yet in the above category.
    The hub/store should have a simple/transparent process for the community to add, review/rate Rock-ons.

Please feel free to add your input. We want it to be as community focused as possible :slight_smile:

Do you have a time-line of when this community rock-ons hub are planned?

My opinion is that rockstor has hudge potential, which makes Rockstor appealing for beginners and mid-level users. But you really need to have more add-ons to spread the beauty of Rockstor.

1 Like

Couldn’t agree more. Rock-on improvements are planned for the next update(3.8-10), so pretty much top of the list. Please stay tuned for the 3.8-10 dev log which will have more details as the work is being done. It’s possible that there will be multiple pull requests for this one.

1 Like

Hello,

is it possible at all to create and run own docker-containers in Rockstor?
What is the suggested way to do so?
Can I use Crane?

Regards,
Hendrik

Crane looks good, and you can use it. You are not restricted in any way. However, it won’t be picked up on the web-ui.

You can create a JSON file that Rockstor understands and handle the management via web-ui. It’s not stable yet, but instructions and examples are here. Would be great if you tinker with it and let me know your feedback.

Hello suman,

I am going to contribute some Rock-Ons. At least I am going to try.
I am wondering, whether it would be possible to create a script that converts a number of Docker-Files into a JSON file template.
Most of the Information needed in the JSON is available in the Docker file. What’s missing is the descriptive Text.

What’s your view?

Greetings,
Hendrik

That’s great to hear @henfri!

You are on the right path, but it may be a bit more involved than adding descriptive text. I have updated the instructions to create the JSON. Take a look at the readme here.

Hello Suman,

thanks for your reply.
I tried my first rock-on:

{
“SqueezeBoxServer”: {
“containers”: {
“syncthing”: {
“image”: “tdeckers/logitechmediaserver”,
“launch_order”: 1,
“ports”: {
“9000”: {
“description”: “Webserver Port. Suggested default: 9000.”,
“host_default”: 9000,
“label”: “Webserver port”,
“protocol”: “tcp”
},
“9090”: {
“description”: “CLI Port. Suggested default: 9090.”,
“host_default”: 9090,
“label”: “CLI port”,
“protocol”: “tcp”
},
“3483”: {
“description”: “SlimProto Port. Suggested default: 3483.”,
“host_default”: 3484,
“label”: “Slimproto port”,
“protocol”: “tcp”
},
“9001”: {
“description”: “Supervisord. Suggested default: 9001.”,
“host_default”: 9000,
“label”: “Supervisord port”,
“protocol”: “tcp”
}

            },
            "volumes": {
                "/media": {
                    "description": "Select the Share containing your Media",
                    "label": "Config Media",
                    "min_size": 1073741824
                }
            }
        }
    },
    "description": "Server for Squeezebox Devices",
    "ui": {
        "https": true,
        "slug": ""
    },
    "volume_add_support": true,
    "website": "http://mysqueezebox.com",
    "version": "1.0"
}

}

I saved this as /opt/rockstor/rockons-metastore/logitechmediaserver.json
(the folder did not exist before)

Then I went to the Rock-Ons in the WebUI and hit Update.
Unfortunately, the Rock-On does not show up in the Web-UI.

Any ideas?

Greetings,
Hendrik

Great. I am so glad to see a lot of interest in adding Rock-ons. I sure want to make it easier as we go along.

I think there’s a parsing error. These errors are logged in /opt/rockstor/var/log but not displayed in the UI. So checkout the logs for clues. I see you have “syncthing” as a container. It could be conflicting with the Syncthing Rock-on which also has a container with the same name. If this is the issue, choose a different name.

Hello Suman,

negative…
I have modified the json accordingly.
I cannot find anything particular in the logs. I suspect when ‘reloading’ on the Rockon-Page something should happen in the logs, but no.

Is it normal, that I had to create the directory /opt/rockstor/rockons-metastore/? Why are the other (Owncloud et al) *.json not in this folder?

Greetings,
Hendrik

Yes it is normal. rockons-metastore is a per appliance local metastore. The Rock-On profiles commonly available to everyone are pulled from a remote metastore on our server accessible to everyone. That’s why you don’t see them in the local directory.

I will give your Rock-On a try after the stable release. But good luck debugging, hope you’ll correct the issue soon!

Hello Suman,

thanks for your reply.
Can you point out, which of the log files should contain the Rock-Ons / Docker Messages?

Edit: None of the files in /opt/rockstor/var/log/ does contain the words ‘docker’ or ‘json’ (I have cleaned the directory, re-booted and hit re-load under Rock-Ons).
I have also tried using the btsync.json and modifying it by searching btsync and replacing by “ctsync”. I would now expect a “ctsync” in the Rock-Ons List, but it also does not appear.

Could this be a bug?

Greetings,
Hendrik

@henfri A example 3rd Party Rock-on was referenced by @OpenSourceUser in a recent forum post. That one was the official Emby Rock-on maintained within their Emby.Build repo. That might be worth a look.

The log file you need to tail is rockstor.log.

Note that this feature is only available in the testing channel updates currently though soon to be released in the stable channel update very soon. At least that was my understanding.

Hope that helps.

1 Like

Hello,

it does work with the new release now. Thanks!

When I start my first Rock-On (:slight_smile: ), I get a small web-page with “supervisord” though under http://rockstor:9000.

I would expect the Logitech-Server though. Port 9000 is used by docker-proxy:
netstat -tulpn | grep 9000
tcp6 0 0 :::9000 :::* LISTEN 5258/docker-proxy

This does only apper while my RockOn is running. How can I get to the web-interface of my rock-on?

Regards,
Hendrik

congrats! Can you post your final .json file? From above I see something wrong in the port mapping. It looks like host port 9000 is being mapped twice.

Sure, here it is:

{
    "SqueezeBoxServer": {
        "containers": {
            "squeezebox": {
                "image": "tdeckers/logitechmediaserver",
                "launch_order": 1,
                "ports": {
                    "9000": {
                        "description": "Webserver Port. Suggested default: 9000.",
                        "host_default": 9000,
                        "label": "Webserver port",
                        "protocol": "tcp"
                    },
                    "9090": {
                        "description": "CLI Port. Suggested default: 9090.",
                        "host_default": 9090,
                        "label": "CLI port",
                        "protocol": "tcp"
                    },
                    "3483": {
                        "description": "SlimProto Port. Suggested default: 3483.",
                        "host_default": 3484,
                        "label": "Slimproto port",
                        "protocol": "tcp"
                    },
                    "9001": {
                        "description": "Supervisord. Suggested default: 9001.",
                        "host_default": 9000,
                        "label": "Supervisord port",
                        "protocol": "tcp"
                    }

                },
                "volumes": {
                    "/media": {
                        "description": "Select the Share containing your Media",
                        "label": "Config Media",
                        "min_size": 1073741824
                    }
                }
            }
        },
        "description": "Server for Squeezebox Devices",
        "ui": {
            "https": true,
            "slug": ""
        },
        "volume_add_support": true,
        "website": "http://mysqueezebox.com",
        "version": "1.0"
    }
}

Why is the host_default 9000 here?

That’s a typo.
Thanks for spotting.
I changed this to 9001, un-installed the rock-on, re-loaded the rock-ons and re-installed.
Still I get the same result on rockstor:9000

Any Idea?

Greetings,
Hendrik

I noticed a couple of small errors. For instance, the UI is not HTTPS, so you shouldn’t have added “https”: true. Here’s the working profile as a gist: https://gist.github.com/schakrava/cfccb12200c18027c97a#file-squeezebox-json

uninstall the app first, place the new json file in your local metastore, hit update and then install again. If for some reason the UI button goes to https://, manually change it to http://. The app worked for me. Good luck!

If all works, may I request you to write a blog post or forum doc detailing the Rock-On installation and your detailed setup of the app?