I run my own server: a bare-metal dual-Xeon Ubuntu box with 72 threads and 155 GB of RAM. It hosts 15+ services, including file sync with Postgres, chat, a password manager, mail, photo backup, media, and game servers, plus this site and the fishing app. Apache is the edge reverse proxy and Cloudflare handles DNS, TLS, tunnels, and rate limiting.
Monitoring runs on single-node k3s with Prometheus, Alertmanager, and Grafana, alerting to Discord when the host goes down, runs hot, or fills a disk. Apps ship through self-hosted GitHub Actions runners, Docker Compose, rootless Podman, and systemd. Everything is documented in a private runbook repo, and sanitized server-state snapshots and 72-hour log windows sync into it every 6 hours.
Logs taught me the most. The box died three times from a power-subsystem fault while I was away for weeks with no physical access. I wrote postmortems from the logs, then hardened it remotely: a systemd watchdog that reboots a hung kernel, a CPU power cap, a disabled GPU driver that kept flapping, and alerting so every future crash leaves a record.
I also sandboxed an AI coding agent under gVisor with no capabilities, a read-only root, resource caps, and locked-down egress. Every LLM call passes a Presidio PII-redaction gateway I wrote, which returns an error instead of forwarding raw text if redaction is down. It updates itself nightly and rolls back on failure.
I also tested whether this old box could serve a 35B mixture-of-experts model (Qwen3.6-35B-A3B) on CPU alone at 128k context. I ran llama.cpp in a no-egress sandbox and wrote a benchmark harness. It was too slow to use, because decode on this hardware is bound by memory bandwidth, so I kept it as a bounded, self-expiring service and wrote down what I would test on better hardware.