Self-healing personal infrastructure — Flatcar, Docker, Caddy, AI SRE Agent
| Project | Type | Domain |
|---|---|---|
| Oh My Ondas | Web Audio / GPS app | ohmyondas2.levm.eu |
| Marta Smaldone | Portfolio (Astro) | portfolio.martasmaldone.com |
| Fluid Reliability | Professional framework (Jekyll) | fluid-reliability2.levm.eu |
| Sisyphus | Dashboard (this page) | sisyphus.levm.eu |
| Maestro | AI Tutoring (Next.js) | maestro.levm.eu |
| Apapacho | Marta's business (Vite+React) | apapacho.martasmaldone.com |
| Oh My Sax | Music | ohmysax.levm.eu |
| Jaco Sales Assistant | AI sales assistant (Next.js) | jaco-sales-assistant.levm.eu |
Lightweight self-healing daemon. Polls every 60s, detects anomalies, remediates automatically. Claude Haiku provides root-cause analysis for correlated failures, capped at €5/month.
| Trigger | Action | Min. Mode |
|---|---|---|
| Container unhealthy >2min | Restart (3/hr limit) | observe |
| Disk >85% | Light prune | observe |
| Disk >90% | Full prune + log cleanup | diagnose |
| Memory >90% | Restart heaviest container | auto |
| TLS cert <7 days | Alert (Caddy auto-renews) | observe |
| Backup stale >26h | Alert | observe |
| Correlated failures (≥2) | Claude AI diagnosis | diagnose |
| Metric | Target | Window |
|---|---|---|
| Site availability (non-5xx) | 99.5% | Rolling 24h |
| Latency p95 | <500ms | Rolling 1h |
| Disk usage | <85% | Point-in-time |
| Memory usage | <90% | Rolling 5min |
| CPU sustained | <95% | Rolling 5min |
| Daily backup | 100% | Daily |
| TLS cert expiry | >7 days | Daily check |
| Container health | 100% | Rolling 1min |
You don't need to know anything about infrastructure. You work on your site, Sisyphus handles the rest.
martasmaldone.com, Apapacho)index.html in a browser to check it looks rightYou never touch servers, config files, or infrastructure. You just work on your site and push. If something goes wrong, the SRE Agent catches it before it reaches production.
Projects with a backend run as their own container behind Caddy. Deploys are fully automated: push to main → CI builds image → VPS pulls and restarts.
docker-compose.yml with build: context, a Caddy reverse proxy block, and a Consul project entryopenssl rand -hex 32), set it on the VPS as DEPLOY_SECRET_<PROJECT>.env.local on the VPS (API keys, database URLs — never in git)You never SSH into the VPS, run docker commands, or touch infrastructure. You just push code.
| Item | Status | Notes |
|---|---|---|
| Deploy webhooks + CI pipelines | Done | Static sites: GitHub Actions builds to gh-pages branch, VPS pulls. App projects: source built on VPS via HMAC-signed webhook. |
| Consul-Template | Planned | Auto-generate Caddyfile and docker-compose service blocks from Consul catalog. Add a project to Consul → config files update automatically. |
Be cutting-edge where it teaches you something transferable. Be boring where it just needs to work.
| Item | Cost |
|---|---|
| Hetzner CX22 (2 vCPU, 4 GB) | €4.00 |
| Hetzner Storage Box 1 TB | €3.50 |
| Cloudflare DNS | €0.00 |
| Domains (amortized) | ~€3.00 |
| Anthropic API (capped) | €5.00 max |
| Total | €15.50 max |