this post was submitted on 11 Feb 2025
1 points (100.0% liked)

Self-Hosted Alternatives to Popular Services

224 readers
1 users here now

A place to share, discuss, discover, assist with, gain assistance for, and critique self-hosted alternatives to our favorite web apps, web...

founded 2 years ago
MODERATORS
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/K0ka on 2025-02-11 12:27:57+00:00.


Hi r/selfhosted ,

My goal is to make the installation process of self-hosted apps easier, ideally in one click. This is what I did my pet project for -   

It can install/uninstall such packages as Jellyfin, Immich, Plex and some others in one click.

Many packages are supplied as a single docker container but require other stuff for a full setup: a domain, databases, volumes, ssl certificates. Each and every thing needs to be configured according to your existing infrastructure. Provided docs and hints are far from being unified. Some of the packages require docker, some docker compose. Some packages will install their own db, some request your existing db credentials. Some require an ssl certificate, some want to install traefik which will request the cert on its own.

Long story short, the idea to unify package requirements crossed my mind. I tried to reach the goal using modern IaC instruments, such as terraform, ansible, puppet. But they are tailored to describe what exactly needs to be done, or the precise state to be reached. They don’t have tools to specify that I just need a container, and it doesn’t matter if this container is running on a local docker daemon, or a kubernetes cluster, or AWS ECR, or anything else. 

This is why I created my own app which is more of a proof of concept right now. I use an abstract description format, so that packages can be installed on any system. This format is based on the notion of “contracts” that the infrastructure has to complete to make the package work. The contract can be completed in any way. For example, the HttpEndpoint contract can be completed either by exposing a port to the outside network or via a reverse proxy setup. I implemented only traefik as a reverse proxy, but other services such as caddy or nginx can also be supported in the future.

You can check the package format at   

My next plans might be

  • Increase the amount of packages (there are only 20 of them right now)
  • Implement more features for current packages. For example, integrate arr-stack between each other and torrent client
  • Add more contract types. For example, mysql and postgresql databases.
  • Add more ways to fulfill contracts. For example, use caddy or nginx instead of traefik. Use podman or kubernetes instead of docker.
  • Write tests and documentation
  • Try to auto-detect the running infrastructure and configure packages accordingly.
  • And many more

The question that bothers me is if it is needed for anyone except me. I do like the idea, but I wouldn't like to implement it solely for myself. Has anyone already done (or is doing) something similar?

Please let me know what you think about it.

no comments (yet)
sorted by: hot top controversial new old
there doesn't seem to be anything here