This commit is contained in:
Shautvast 2026-03-29 10:33:44 +02:00
parent 9e8c827b5d
commit 0ed54bf760

View file

@ -8,6 +8,8 @@ description: "And that also means get off github"
We are living in the end-of-saas era. Instead you ask the LLM to build stuff for you, the way you want it, instead of paying for a subscription, or becoming the product as they say. But how are you going to host all those shiny apps? Yet another cloud provider? Then you are still a 'cloud serf' (as Yannis Varoufakis says). Real resistance comes from the self hoster... or maybe. We are living in the end-of-saas era. Instead you ask the LLM to build stuff for you, the way you want it, instead of paying for a subscription, or becoming the product as they say. But how are you going to host all those shiny apps? Yet another cloud provider? Then you are still a 'cloud serf' (as Yannis Varoufakis says). Real resistance comes from the self hoster... or maybe.
I will not go too much into 'why'. There's plenty of reasons. You may have your own. I am driven by then the ambition to be the owner of my data. That is paradoxical if you keep using LLM's. But I also have a life outside of coding.
Last week's hackernews featured [moving to codeberg, for lazy people](https://unterwaditzer.net/2025/codeberg.html). Lazy person here! Last week's hackernews featured [moving to codeberg, for lazy people](https://unterwaditzer.net/2025/codeberg.html). Lazy person here!
So, in this vain, Claude and I coded a platform where I can host everything that my heart desires. In about a week, next to my day job. So, in this vain, Claude and I coded a platform where I can host everything that my heart desires. In about a week, next to my day job.
@ -15,23 +17,34 @@ At first it ran on my 10 years old pi3, which, was fine, were it not that compil
_What does it have?_ _What does it have?_
- a Podman compose cluster - a [Podman compose](https://docs.podman.io/en/latest/) cluster
- a control plane in Rust, with a UI for managing apps and users. Sqlite for its storage. - a control plane in Rust,
- builds itself on startup in a podman container. No cargo needed. - a UI for managing apps and users.
- automated let's encrypt server certificates. - sqlite for storage.
- a Caddy reverse proxy, handling TLS and routing dynamcally. - builds on startup in a podman container. No rust(up) needed on the host.
- forgejo for hosting my projects (selfhosted codeberg). - automated [Let's encrypt](https://letsencrypt.org) server certificates.
- a forgego agent to build stuff. Currently idle, but useful for testing apps before deploying them. - a [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy) reverse proxy
- build pipeline: git clone → detect stack → build container image → run via Podman - handles TLS and dynamic routing.
- webhooks for app updates or `git push hyi main` - [forgejo](https://forgejo.org) for hosting my projects (selfhosted codeberg).
- a postgres database. At the moment it's only purpose is datastore for forgejo - A little bash script to copy all my old github stuff.
- basic security, users can be assigned to apps - a forgego agent to build stuff
- backed up to my Proton drive using rclone. Protondrive came free (15Gb) with my email account. - o I can test apps before deploying them.
- running as systemd service on headless raspbian. Cold start in under a minute (haven't timed it). - build pipeline:
- git clone → detect stack → build container image → run via Podman
- webhooks for automatic redeploy
- a postgres database.
- datastore for forgejo
- for future apps
- basic security
- users can be assigned to apps
- backed up to my [Proton](https://proton.me/nl) drive using rclone.
- protondrive came free (15Gb) with my email account.
- running as systemd service on headless raspbian.
- cold start in under a minute (haven't timed it).
https://git.sanderhautvast.nl/sander/Hostityourself https://git.sanderhautvast.nl/sander/Hostityourself
And it deploys any git~~hub~~ repo you throw at it as long as it has a Dockerfile (that may change). The name you give it will be the subdomain in the url. And it deploys any git~~hub~~ repo you throw at it as long as it contains a Dockerfile (which may change). The name you give it will be the subdomain in the url.
The only thing that is missing from an SRE perspective is external monitoring. It does not have grafana. Just basic resource usage. The only thing that is missing from an SRE perspective is external monitoring. It does not have grafana. Just basic resource usage.