The starting point
I wanted full control: code on my own Gitea, apps in containers, everything served through Caddy from my own hardware.
What I gained
No surprise monthly bills, no vendor lock-in, and a real playground for CI/CD, networking, and system administration.
What it cost me
Time. Backups are my responsibility, and so is security. Worth it — but not free.
The setup in short
Gitea + Runners for CI, one Docker image per app, Caddy as a reverse proxy with automatic TLS. Every app gets a route on andreibalea.ro.