← BACK TO HOME vault.zaverous.com / LOGS
self-hosting devops infrastructure

Why I Stopped Using Cloud Everything

14 Aug 2025

I’ve been self-hosting for about eight months now. Here’s what nobody tells you: the annoying part isn’t the hard stuff. The annoying part is that the easy stuff keeps breaking.

The Incident

It started with a Cloudflare rate limit I didn’t know existed.

I had a dead-simple webhook — n8n listening for a GitHub push event, triggering a Docker pull on my Mac Mini. Worked perfectly in staging. On main, it fired once, then ghosted me for 47 minutes. No error. No log. Just silence.

Turns out Cloudflare’s free tier silently drops requests past a certain threshold if they look “automation-like.” My webhook URL pattern was too… mechanical.

# The ghost webhook that started it all
curl -X POST https://sys.zaverous.com/hooks/deploy \
  -H "Content-Type: application/json" \
  -H "X-Github-Event: push" \
  -d '{"ref":"refs/heads/main"}'

# RESPONSE: 200 OK
# REALITY: request was absorbed into the void

Okay. Fine. Cloudflare Tunnels are still better than exposing ports. I just needed to reroute the webhook through a different path pattern.

What I Actually Learned

Three things:

First: label your Traefik rules obsessively. I have a rules/ directory with one file per service. When something breaks at 2am you don’t want to grep through a monolithic YAML.

Second: bind-mount your configs, never bake them into images. The number of times I’ve rebuilt a container just to change one environment variable is embarrassing.

Third: SQLite is underrated for 90% of what people use Postgres for. My Vault runs on a single SQLite file. Zero ops overhead. Backups are cp. Restores are also cp.


The ecosystem is finally stable. This post is proof — it’s being served from a container on a Mac Mini under my desk, pushed via GitHub Actions, routed through Cloudflare Tunnels, proxied by Traefik, and written in Markdown that lives in a Git repo.

Zero cloud egress fees. Zero monthly SaaS subscriptions. One power bill.

Worth it.