space-server
Self-hosted personal infrastructure — 15+ containerized services on a Hetzner VPS, behind Traefik, with full mail server.
- ▸15+ self-hosted services on a single Hetzner VPS — mail, blog, portfolio, monitoring, logs
- ▸Full mail server (docker-mailserver + Roundcube) with SPF, DKIM, DMARC configured
- ▸Traefik v3.6 fronts everything with automatic Let's Encrypt SSL, DNS-validated
- ▸Documented migration: 12 minutes total downtime moving 15+ services laptop → VPS
Self-hosted personal infrastructure — from old laptop to Hetzner VPS
space-server is the entire stack that powers my online presence — mail server, Ghost blog, portfolio, monitoring, logs — orchestrated with Docker Compose and fronted by Traefik. The repo also documents the migration: 30+ commits debugging the mail server, automated migration scripts, 12 minutes of total downtime moving 15+ services from a laptop to a VPS.
Why I built it
I was tired of depending on third-party services for basic things — email, hosting, backups. I wanted full control over my data and to learn how modern web infrastructure actually works in practice (not in a course). So I turned an old laptop into a home server, broke it a hundred times, learned Traefik and DKIM and DMARC and Docker volumes the hard way, and eventually migrated everything to a Hetzner VPS when the laptop couldn't keep up.
What it does
- 15+ containerized services — full mail server (docker-mailserver + Roundcube), Ghost blog (with MySQL), personal portfolio (React + Laravel API), Grafana + Prometheus + Uptime Kuma for monitoring, Dozzle for centralized logs.
- Traefik v3.6 as the edge — automatic SSL via Let's Encrypt, DNS-validated for everything.
- docker-mailserver with full SPF, DKIM, and DMARC configured (and 30+ commits' worth of bug stories).
- Documented migration — automated scripts, blog post walkthroughs, and lessons learned (Hetzner blocks port 25, migrated Docker volumes can have wrong permissions, Docker networks aren't portable).
- Production hardware — Hetzner VPS (8GB RAM, Intel Xeon, Ubuntu 24.04).
Stack
Docker + Docker Compose, Traefik v3.6, docker-mailserver, Roundcube, Ghost 5, MySQL 8, Grafana, Prometheus, Uptime Kuma, Dozzle, Let's Encrypt.
Status
Live in production. Hosts every service I run — including the Ghost blog and portfolio you're reading.