[Thoughts] OMV 5.x Plugin Ecosystem

  • A long time user of Open Media Vault here. I used it since the very first stable release.


    I see a lot of people here missing plugins which existed in earlier releases. While I do understand that it requires a lot of maintenance to keep those plugins alive, it is definitively not an excuse to say 'docker' and 'if you don't understand it you reached a dead end'. That's not how that works. Heck, why would someone use OMV at all at this point? You could also point to a basic howto explaining how to install Debian with Samba or something like that and halt development at all "does the same, less maintenance". I believe NAS systems of this kind are made for ease-of-use and setup, without letting a novice to deal with the command line hassle, leaving them with potentially dangerous and insecure setup.


    Meaning some novices got a docker container working using a howto only is a far cry from a properly configured and a secure system, which is especially important as a use case of a NAS is having your data available everywhere. Docker is a advanced system - which when configured correctly is great - but if not mistakes are easily made putting the whole system at risk. This is something the developers should think of and design around.


    My opinion is that the plugin ecosystem in OMV needs a big overhaul. Using Docker containers is a good thing (persistence between systems), leaving the rest to the user is not. OMV Should have it's own interface of dealing with Docker (automated container setup) and a forward-compatible way of creating setting pages for those plugins. I take the DAV plugin as a example. In earlier versions, within the web interface, one was able to control shared folders and user permissions with a few clicks. Do do this now, one needs to recreate a container every time someone needs to add or delete a shared folder (Docker doesn't allow live changes in mountpoints) and needs the command line to add new users. But what if the user just wants to grants a household member access which already has a OMV account? Ask someone for his/her password and key it in for htaccess? Not a smart move. I can come up with lots of these things, but I feel like this is a bad decision.


    When OMV controls Docker under the hood with a standardized way of creating WebUI addons, these things can be automated while the maintenance burden is minimized. For example, how could someone check against OMV's user database for access control in a app running in a Docker container? It doesn't even offer an (REST) API for that. Sure, someone can build one. But I feel like this is stuff that belongs in the core which should just work. Especially now that more and more things are expected to run in Docker.


    I'm not saying OMV is bad. It just hurts me that more and more support and convenience (well-integrated plugins) is dropped, people are left with - in most cases - no clues and the ambiance seems to be 'good luck'. This is not what a product of this kind meant to be. It should be a nicely integrated package which requires little knowledge to setup, even for those who are less 'educated'.


    Remember, this is only my opinion. But I felt like I needed to mention it.

  • I would agree with these sentiments. I too have used OMV for a long time, one of the things that appealled to me most was the existance of prebuilt and supported (by people who knew what they were doing - generally :) ) plugins. I don't use many but they helped me make a lot of progress in the early days. I started to look at OMV 5 in the early days of its release and waited for the plugin updates to come. When I enquired where they were I was hit with much the same answer as above - 'Use Docker' but with not a lot of advice as to how to do so.


    VotDev has put a lot of effort into the base build of OMV to make it easy to use (it simply is!) but the move to Docker for many of the plugins isn't. The introduction of Portainer, to help bridge the gap to full blown Docker (?), helps a bit and TechnoDadLive's excellent video tutorials also help but the majority of these are based on the Docker interface in OMV v4. I can see the merits of going the Docker route and the removal of problems with dependencies etc but the learning curve to make good use of Docker and its features is a big one. As the OP above says, its a move away from the original simplicity of OMV which still exists in the base product.


    I think I have worked my way through adding the 'plugins' i need via Docker but I haven't as yet had to upgrade one and I hope they are secure but without others to peer review them thats a bit of a scary unknown.


    So, on the whole, I would agree with the sentiments of OpenSourcePowered above but again 'this is only my opinion'

    • Official Post

    TBH whilst I can understand where you are both coming from you're missing one fundamental thing, there is ONE maintainer for the plugins for OMV, whilst Docker appears to be daunting there are users on here more than willing to assist to help solve any issues.


    Any system evolves over time but open source requires someones time to help maintain and develop that, if there is another way/option to include a feature that is third party maintained why create and maintain one of your own.


    For what I use OMV for I could happily use Ubuntu or Debian as a headless server with Webmin or Cockpit and Portainer and get the same result.


    You could ask why are Pi owners using OMV they could just use Raspbian Desktop create their shares and users install docker and portainer, effectively it would do the same job.


    What makes OMV unique is not just OMV as an OS, it's this place, the forum, try posting the above in the Freenas forum, I know I've used it a long time ago.


    Docker and Portainer are a learning curve but it can be straightforward, perhaps we should have expanded more on this but the best option for Docker and Portainer is Stacks, and again there have been howto's added by users.

    • Official Post

    My favorite kind of post. I understand people are pissed that plugins moved to docker and the change to portainer.


    This started with OMV 4 and moving the "downloader" plugins to docker. The maintainer stopped working on them, I don't know anything about downloaders because I don't use them, and I don't have time to work on them. And I don't care what anyone says, these plugins belong in docker for security reasons. You may think a noob setting up docker might do it insecurely but they are still better off than running the plugin directly on the host.


    With OMV 5, the changes were substantial with the move to saltstack. I ported 26 plugins. People may not think that is enough but it was a LOT of work. I'm not being lazy or just disliked (other than plex) plugins. I either don't have enough time, don't know the service well enough, and the service changed enough to not fit a plugin anymore. I don't know what people want me to do to fix any of those issues.


    I will explain why I chose not to port each one of the plugins below. Notice that start/stop plugins with a button to their web interface were typically not ported because they didn't really do anything including not doing special security setup. They just installed the package and issued systemctl start/stop commands. Not worth the time in my opinion.


    openmediavault-calibre - The method of installation with calibre 3.x changed and I could not get it to work as a plugin because it requires user interaction at the command. Maybe I was missing something but I spent way too much time on it.


    openmediavault-cups - I have never used cups, it barely worked on OMV 4.x, and most printers are network printers now. This plugin also needed a lot of work for very few users.


    openmediavault-dnsmasq - I actually used this plugin myself. BUT pihole in a docker or VM is so much better. This plugin would have taken a lot of work to port to OMV 5 as well.


    openmediavault-docker-gui - Nightmare to maintain. Never had enough features especially docker-compose support. Portainer is better, maintained by lots of people, and allows OMV users to use many tutorials on images on the internet without having to be OMV specific. Big change but worth it.


    openmediavault-domoticz - This plugin was basically a start/stop plugin with a button to open the domoticz web interface. I also had to build or download the domoticz package since it is not the Debian repos. I don't use it and the user count is low.


    openmediavault-duplicati - Another start/stop plugin with a link to the web interface. Also had to download the package since it is not in the Debian repos.


    openmediavault-emby - Another start/stop plugin with a link to the web interface. This plugin also would install a ton of dependencies (mono) on the host which I consider a bad thing.


    openmediavault-letsencrypt - Hard to maintain. Not great as a plugin due to interaction requirements. Debian repos always behind on dependencies. docker images are very good.


    openmediavault-mysql - Probably could've been ported but lots of people wanted to change the default path. The plugin *always* had issues with moving the databases. People also wanted specific versions of mysql and/or mariadb and/or options that weren't in the plugin. People disagreed which web interface should've been used as well. Works so well in a docker (I even use it in containers at work). Just didn't make the cut.


    openmediavault-nginx - I used this plugin myself. But there was no other plugin that broke systems more than this plugin. I really think a web server should not be mixed with the OMV web server. So, this one made sense to move to docker. The plugin was also missing proxy features that most seemed to want and docker does that better than anything.


    openmediavault-plexmediaserver - I hate this plugin. It was just a start/stop plugin with a button to the web interface and an option to move the database (which always had problems). Originally, I had to build these packages and put them in the repo. Just too much time. Better in a docker (even if hardware transcoding is a pain).


    openmediavault-pxe - Not heavily used. Difficult to use and required lots of command line work. Weird dependencies on proper configuration with tftp and dnsmasq plugins. Couldn't be ported without dnsmasq plugin.


    openmediavault-remotedesktop - xrdp has been broken in the debian repos (at least for how I know to use it) a lot. Plugin had very little config and it required installing a lot of dependencies on the host. The ubuntu-xrdp docker image I recommend is very good.


    openmediavault-shellinabox - Still don't understand need for ssh web client. cockpit has a better ssh web client if you really need it.


    openmediavault-syncthing - I really liked this plugin and spent a ton of time writing it. Would have required a lot of work to port it to OMV 5.x. Probably more secure in a docker. Not many people complain about this being gone.


    openmediavault-transmissionbt - downloader plugin. I know nothing about it. Lots of work to port it and no way to test. Never worked on this plugin.


    openmediavault-urbackup-server - Not many users. Just a start/stop plugin with a button to the web interface. Had to download packages to put in repo.


    openmediavault-virtualbox - virtualbox isn't in the Debian repos. package from virtualbox repos is terrible with upgrades. Plugin had many problems. phpirtualbox isn't really maintained anymore. Thought cockpit would be good replacement (I realize it isn't now). Very difficult plugin to port.


    openmediavault-webdav - never had enough features. I know nothing about it. very difficult to port.

    omv 7.7.7-1 sandworm | 64 bit | 6.11 proxmox kernel

    plugins :: omvextrasorg 7.0.2 | kvm 7.1.2 | compose 7.5.1 | cputemp 7.0.2 | mergerfs 7.0.5 | scripts 7.1


    omv-extras.org plugins source code and issue tracker - github - changelogs


    Please try ctrl-shift-R and read this before posting a question.

    Please put your OMV system details in your signature.
    Please don't PM for support... Too many PMs!

    Edited once, last by ryecoaaron ().

    • Official Post

    I disagree completely. I've been around since a few months after the first public release. There's still a place for OMV, even w/ docker. User/Group management, Drive/Filesystem management, management of basic services (NFS, SMB, etc.). These are things a novice Linux user would likely have trouble with. Giving them a simple GUI to do these things only makes sense. I do tend to agree that docker pretty much makes it where anyone w/ a little time to learn can set up a standard Ubuntu, Debian, Centos, etc.. server w/ little effort. Honestly if something happened to OMV, I'd just hop over to whatever Ubuntu version was current, install docker, and set everything up with Portainer again.


    Admittedly I was a late adopter to docker (compared to many here) and have probably been using it about 16mo. Portainer is a well supported, and fully featured container management UI. As pointed out above.. it far surpasses the old docker-plugin (which I was also fond of, but understand it lacked a lot). I felt the OMV docker plugin laid a pretty good groundwork for me to deal w/ Portainer... but even without it, anyone willing to spend a few hours reading or posting questions on this forum, watching youtube videos, etc... can get quite a few of the popular containers up and running with little fuss. Now, I rarely even use Portainer, and have written docker-compose files for all my services that I keep backed up. In the event of a crash, reinstall, whatever... I just run my docker compose files and voila.. done.


    I love docker, rename the OS DockerMV for all I care... :). I think there is plenty of room a clean webui for the plugins that votdev supports and docker, which takes a huge load of ryecoaaron and the plugins he supports.


    Embrace change.

    • Official Post

    And one other thing to consider... Since the start of the move to docker, I have written at least four new plugins (borgbackup, wireguard, tgt, mergerfsfolders). So, it isn't like plugin development will stop and everything will move to docker.

    omv 7.7.7-1 sandworm | 64 bit | 6.11 proxmox kernel

    plugins :: omvextrasorg 7.0.2 | kvm 7.1.2 | compose 7.5.1 | cputemp 7.0.2 | mergerfs 7.0.5 | scripts 7.1


    omv-extras.org plugins source code and issue tracker - github - changelogs


    Please try ctrl-shift-R and read this before posting a question.

    Please put your OMV system details in your signature.
    Please don't PM for support... Too many PMs!

  • I see a lot of people interpret my opening post wrong.


    Never did I accuse people of being 'lazy' or called the move to Docker 'wrong'. In fact I'm happy to see that people still voluntary make time to dedicate to this product, that's the big power for FOSS products.


    I only concluded that by different design decisions it would be possible to have both nicely integrated plugins (both native and ones running on Docker) with minimized maintenance burden. Kind of have your cake, and eat it too. Yes, you could point out that there are video's online explaining how to do things... but it does not work out that way. Having accomplished something that works, doesn't mean it's good or safe. But that's a different discussion.


    I would invest the time in a solid plugin framework first, even if that means it takes longer for some plugins to arrive. But it also means maintenance is minimized across releases, as long as developer interface stays compatible. This way it doesn't matter how big the changes are under the hood, for plugin developers, it stays the same.


    Like I said, Docker could be awesome if it was tightly integrated and transparent to the users. But it just feels rushed.


    I am really sad to see what happened with FreeNAS Corral. It was a major leap forward for a open source product of this kind. It had it all, ease-of-use, async actions, etc. In comparison, their 'new' VueJS feels dated already. It was not great when it came out but it wasn't the fault of the developers, instead it was of the company pushing teams to deliver things in a too short time frame. A good project was effectively flushed down the drain that way.


    Having that said, I think OMV's interface could use a big overhaul as well (at least make it async), but I understand that there is effectively one person (votdev) working on it and these kind of interfaces are a big amount of work. So I don't see that happening anytime soon, but it would be nice.


    I think if someone develops a solid framework and interface to communicate with Docker from a development point of view, a lot of the current downsides could be overcome easily. But I realize that's not a trivial task.

    • Official Post

    I didn't say you called me lazy. I was just saying as general comment that on of the reasons I'm not porting some plugins isn't due to laziness.

    I think if someone develops a solid framework and interface to communicate with Docker from a development point of view, a lot of the current downsides could be overcome easily. But I realize that's not a trivial task.

    You are correct and people would still expect the current plugins to be maintained and ported to new versions of OMV.

    I would invest the time in a solid plugin framework first,

    This already exists. That is how the plugins are written now.

    This way it doesn't matter how big the changes are under the hood, for plugin developers, it stays the same.

    Unfortunately, that has not happened. OMV 6.x will be another huge change (different client side javascript framework) that will take a ton of time to port to.


    Docker could be awesome if it was tightly integrated and transparent to the users. But it just feels rushed.

    If I tightly integrated docker into individual plugins, it would be really not much different than the current plugins. It would just add extra code for the docker layer.


    Having that said, I think OMV's interface could use a big overhaul as well (at least make it async), but I understand that there is effectively one person (votdev) working on it and these kind of interfaces are a big amount of work. So I don't see that happening anytime soon, but it would be nice.

    Look at the blog. OMV 6.x might satisfy the changes you are talking about.

    omv 7.7.7-1 sandworm | 64 bit | 6.11 proxmox kernel

    plugins :: omvextrasorg 7.0.2 | kvm 7.1.2 | compose 7.5.1 | cputemp 7.0.2 | mergerfs 7.0.5 | scripts 7.1


    omv-extras.org plugins source code and issue tracker - github - changelogs


    Please try ctrl-shift-R and read this before posting a question.

    Please put your OMV system details in your signature.
    Please don't PM for support... Too many PMs!

  • Look at the blog. OMV 6.x might satisfy the changes you are talking about.


    That looks suspiciously much like the current FreeNAS interface which I called 'dated' earlier on. FreeNAS Corral was futuristic in comparison. The demo's are not truly async neither, that would be if, let's say, you choose to wipe a hdd, it would start directly in the background while displaying the progress realtime in a sidebar or something like that. Personally, I think an interface in OSJS would be very cool.

    This already exists. That is how the plugins are written now.

    Seems so. That's why plugin support is dropped across releases to lower the maintenance burden to begin with, right? ;) When I say solid, I mean a framework that at least not breaks across releases.


    Unfortunately, that has not happened. OMV 6.x will be another huge change (different client side javascript framework) that will take a ton of time to port to.

    Well, yes but... no. Most things to configure are specific options that can either be saved as booleans, key-value pairs or share configurations. That could be streamlined as a framework which persists across webUI reworks. Yes, this needs to have architectural changes which is, again, not a trivial task. But it is possible. More specific stuff needs indeed still to be custom written but the latter proposal eases it a lot.


    If I tightly integrated docker into individual plugins, it would be really not much different than the current plugins. It would just add extra code for the docker layer.

    This code, including an API to communicate with docker plugins should be in the core and part of the mentioned framework. For example, like I said, this could allow for some specific service to integrate with OMV's authentication database and ACL's.

    • Official Post

    That's why plugin support is dropped across releases to lower the maintenance burden to begin with, right? ;) When I say solid, I mean a framework that at least not breaks across releases.

    The plugin framework is part of OMV and I don't control that. If it stayed the same, then it would be easier to keep more plugins. But since the plugins are controlling services and those services change from Debian release to release, there could still be a lot of plugin work to do. Example is calibre.

    hat looks suspiciously much like the current FreeNAS interface which I called 'dated' earlier on. FreeNAS Corral was futuristic in comparison. The demo's are not truly async neither, that would be if, let's say, you choose to wipe a hdd, it would start directly in the background while displaying the progress realtime in a sidebar or something like that. Personally, I think an interface in OSJS would be very cool.

    I think true async interface (probably using node.js) would require just about everything to be rewritten.


    Well, yes but... no. Most things to configure are specific options that can either be saved as booleans, key-value pairs or share configurations. That could be streamlined as a framework which persists across webUI reworks. Yes, this needs to have architectural changes which is, again, not a trivial task. But it is possible. More specific stuff needs indeed still to be custom written but the latter proposal eases it a lot.

    Have you looked at how the plugins work now? I would love to have help. I hear many ideas but never any help or even actual designs.

    omv 7.7.7-1 sandworm | 64 bit | 6.11 proxmox kernel

    plugins :: omvextrasorg 7.0.2 | kvm 7.1.2 | compose 7.5.1 | cputemp 7.0.2 | mergerfs 7.0.5 | scripts 7.1


    omv-extras.org plugins source code and issue tracker - github - changelogs


    Please try ctrl-shift-R and read this before posting a question.

    Please put your OMV system details in your signature.
    Please don't PM for support... Too many PMs!

  • I think true async interface (probably using node.js) would require just about everything to be rewritten.

    Yes, it would be. And like I said, Volker is the only one working on the core. It is a huge task and it is totally understandable the he can't or won't do it in his spare time. This is more like a wishlist, but again, it would be very cool.


    Have you looked at how the plugins work now? I would love to have help. I hear many ideas but never any help or even actual designs.

    Yes, and while I looked at the code for the webdav plugin, it seemed complex to only add 2 tabs and the mentioned config stores. Could be made a lot easier.


    This is a chicken-egg story. For the things mentioned a architectural rework is needed. We could make both a simple API and a docker interfacing part as a plugin, but that moves the maintenance problem. But as a try out, I might want to help. What I would like to accomplish is Docker based plugins - persistent across releases - which the ease of use of native plugins and Docker transparent to the user.


    For communicating between Docker and OMV we could use a host-only container network (like for authentication) while for the container configuration itself (most importantly: mountpoints and fs permissions) we would need to write some middleware. It would be nice if votdev reaches us a helping hand and at least considers adding some of those features to the core. Yes it is a huge investment but a good plugin ecosystem could help to grow the community even further.


    If you think this is a good idea we could brainstorm personally about a design for this. Just let me know. Sounds like a fun project.

    • Official Post

    If you think this is a good idea we could brainstorm personally about a design for this. Just let me know. Sounds like a fun project.

    Sure. I am curious to know what you are envisioning.

    omv 7.7.7-1 sandworm | 64 bit | 6.11 proxmox kernel

    plugins :: omvextrasorg 7.0.2 | kvm 7.1.2 | compose 7.5.1 | cputemp 7.0.2 | mergerfs 7.0.5 | scripts 7.1


    omv-extras.org plugins source code and issue tracker - github - changelogs


    Please try ctrl-shift-R and read this before posting a question.

    Please put your OMV system details in your signature.
    Please don't PM for support... Too many PMs!

  • I endorse the Docker approach, not only because I like it, but because I believe any webservice or user app (like Plex, Syncthing and so on) should be independent by the OS it's running on and Docker is exactly this.


    Nevertheless I still use a LOT of plugins which I think will never go away because they're all system related: snapraid, unionfs, backup, wakealarm, flashmemory and so on.


    When I finished my OMV system, I realized how much ryecoaaron 's work I used so I sent him a small donation.

    He has made OMV a lot better not only with plugins but with a lot of comments in this forum.


    All of this is done in his spare time, so... please stop complaining there are no Plex and Transmission plugins, in the same time you* would have learned Docker. I understand Docker is hard for beginners, but there are a lot of great written and video tutorials out there. Everyone can learn it since I taught it to friends who don't have Linux or Sysadmin experience and are only tech users. If you* don't want to learn, then maybe a DIY NAS is not the right choice for you.


    (you = not referring to anyone in particular, but everyone who complained)

    openmediavault-plexmediaserver - I hate this plugin. It was just a start/stop plugin with a button to the web interface and an option to move the database (which always had problems). Originally, I had to build these packages and put them in the repo. Just too much time. Better in a docker (even if hardware transcoding is a pain).

    Works great when using Intel iGPUs :)

    OMV BUILD - MY NAS KILLER - OMV 6.x + omvextrasorg (updated automatically every week)

    NAS Specs: Core i3-8300 - ASRock H370M-ITX/ac - 16GB RAM - Sandisk Ultra Flair 32GB (OMV), 256GB NVME SSD (Docker Apps), 2x16TB HDDs w/ SnapRAID - Fractal Design Node 304 - Be quiet! Pure Power 11 350W


    My all-in-one SnapRAID script!

  • As a complete newcomer to OMV (been using it maybe for a week), I think for smaller FOSS projects it's extremely important to conserve manpower so the main product still gets updated and the volunteers don't burn out. That's why I think moving from a plugin to Portainer is a great improvement in all regards because 1. less work for whoever was maintaining the native plugin before 2. more features because Portainer is maintained by a completely separate group of people. This could probably be said about other plugins, too.


    One thing that I noticed is very common in FOSS projects is lot of people with ideas but not a lot of people with knowledge or time to contribute. This is not me pointing fingers at anyone but it's very easy for 10 people to argue what framework is the best to use for the UI when in the end it's one person who will do all the coding.


    So for what it's worth thank to everyone who keep the ship sailing, as a new user I'd say you've done a great job.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!