Then one day, after ignoring a few AWS emails, I got hit with a charge on my card that was orders of magnitude higher than usual.
"WTF?"
I logged in immediately to investigate. No DDoS. No misconfiguration. Then I checked the billing page:
*RDS PostgreSQL “legacy fee” — ~€200* for March
Apparently, I hadn’t upgraded from Postgres 13 to 16. That was it.
I had been paying ~€25/month for RDS, and suddenly there’s a €200 charge for essentially… not upgrading.
That was the moment it clicked for me: Why am I running this in the cloud?
I had a spare Raspberry Pi at home. For my use case, I just needed something that runs reliably. So I moved everything to self-hosting.
And immediately ran into a different set of problems:
Deployments were manual (SSH → pull → restart). Debugging required logging into the machine every time. Monitoring (Prometheus/Grafana) was too heavy for small devices.
So I started building a small agent for myself. It began as a deployment tool, but gradually evolved into something more:
- deploy apps from GitHub or Docker automatically
- self-healing processes with restart logic
- system metrics + lightweight monitoring
- *heartbeats so I know if a device/service is actually alive*
- *log forwarding so I don’t have to SSH in to debug*
- reverse tunnels (I use it for Home Assistant instead of Nabu Casa)
- remote terminal access from the browser
I named it Beacon. It’s open source, and I’ve been running it for the last ~8 months. Everything runs locally on the device (Pi, mini PC, etc.) but there is an optional beaconinfra.dev integration — mainly for monitoring, Home Assistant (or other local app) tunnel, and remote access. I host beaconinfra myself too, and since then I moved away from the Pi to an N100.