Yunohost - Docker/Containerized App Packaging?

I am curious if the Yunohost team has considered making Docker apps be more easily integrated into the app store.

Currently, to run a docker app you have to:

  • get the docker-compose.yml
  • setup all ports and env variables etc.
  • create a domain
  • get HTTPS cert
  • run the Redirect App to connect your app.

I recently ran across Runtipi.io. To deploy their apps, you click install. Then another click and you can ‘expose it’ to hook up to a domain name. Traefik handles doing the domain name. It’s a very fast process.

Also, it looks like it very easy for them to add more apps to their whole ecosystem. I read through how to add an app to their app store and it doesn’t look impossible. I think I will give it a shot, and I am not a programmer.

I browsed the docs for Yunohost packaging guide and it looks a bit more involved.

It might be neat if Yunohost had a hybrid model. Some apps work better installed into the OS, such as Wireguard, Pihole but a lot of apps are just web apps that would probably be much easier to deal with if they were containerized.

Benefits:

  • less people messing up Debian with a bad install
  • apps easier to package → more apps could be packaged, easier for people to package apps.
  • Debian can be upgraded faster to newer versions, less stuff should break
  • apps could autoupdate with something like watchtower?

Downsides:

  • two types of packaging standards
  • how to integrate docker packages into Yunohost
  • might require huge changes to base Yunohost, impossible?

Note, I am coming into this conversation with the best of intentions. I have contributed money to Yunohost. I love Yunohost and have learned so much about self-hosting by using it. Please don’t take this discussion to mean that Yunohost sucks or is bad in any way.

Anyways, I’m curious what are thoughts from people who are part of the core team? or people who have packaged apps for Yunohost before?

2 Likes

I think it is an answer for your question:

Personally, I have a hybrid model with two devices. Main server runs Debian with Yunohost and it is my first choice to install new things. Also Yunohost is more stable with Hedgedoc, Nextcloud and other apps.
But If something is not updated long time or even is not available in Yunohost catalog, I use Docker on a second device (normally it is a second Mini PC computer, but for now it is a SBC Orange Pi) with other OS (Ubuntu or Fedora) and I run these apps here. If I want to have external access to it, I use Redirect app in Yunohost to create rules in reverse proxy.

It is not the best option - in example I can’t use Yunohost backup tool to backup Docker apps and I need a second device but also it is a very stable and comfortable way - especially for me.

1 Like

I believe the short answer is : no, it’s a hell of development work to integrate all this stuff and the various use cases.
Instead, when it’s available, we prefer to package apps with a native installation (which is often more reliable).
Side note: One could also argue against the huge extra storage space used “for nothing” by this tool, while many users use servers with limited storage (lots of raspberries and small VPS in our user base).
That’s a design choice, and I don’t think it’s going to change in the mid-term. Other tools like the one you quoted made different choices. If another solution fits your needs better, then that’s cool for you :wink:
Also Yunohost doesn’t come with only app packaging, but a whole server admin tool set, deep integration of some apps with Yunohost tools (such as SingleSignOn and LDAP).

As for the software that don’t even provide any other installation medium/instructions appart from Docker, well, that’s the shitty current state of software engineering ecosystem that focus on developer experience before user experience.

As for the packaging, we’re currently working on a way to make it more accessible :slight_smile: , and it’s getting simpler over time (packaging v3 long-term ongoing project).

PS : in case it’s not clear, this is only my opinion :wink:

1 Like

I started to create a YunoHost package that will use docker, here: master <- testing by jedie · Pull Request #1 · YunoHost-Apps/docker_django_example_ynh · GitHub It worked. But there is a open question how to deal with docker hub rate limits and caching in YunoHost see. See Using Docker in a YunoHost package - #3 by jedie

1 Like

I have also recently discovered Cosmos Cloud which is another docker based self-hosting thing.

I’m checking it out right now and so far it looks more promising, and customizable for those of us with a bit more experience with Docker. Runtipi looks like a better beginner solution for newbies.

1 Like