My self-hosted setup
Ubuntu · Docker · nginx · Tailscale · restic
Most of what’s on this page runs on hardware I look after myself. The setup is split by one rule: if someone outside my devices needs to reach it, it goes on the droplet. Everything else stays at home.
- The droplet (DigitalOcean) runs everything public: this blog, my git server, Vaultwarden, Umami, crash reporting, server metrics and the dashboards for my other projects.
- The home box runs media, photos and backups. It has no port forwards at all and is only reachable over my tailnet.
- One git repo holds every config, the notes for each machine and the scripts that check on them. Claude Code works from it as a co-admin, with guardrails that ask before anything changes a server.
- Backups and monitoring: nightly off-site backups, an uptime status page, and ops for health checks and alerts.
The full write-up, with what runs where and why, is in My Self-Hosted Setup.