Von Chaos zu Klarheit: Meine Reise zu einer stabilen Homeserver‑VPS‑Architektur mit WireGuard und Caddy
Einleitung
Was als kleines Hobbyprojekt begann, entwickelte sich schnell zu einer komplexen Infrastruktur aus Docker‑Containern, Reverse‑Proxies, ActivityPub‑Integrationen und mehreren Domains.
Doch irgendwann war klar: Die Komplexität stand nicht mehr im Verhältnis zum Nutzen.
Es musste eine Architektur her, die:
- stabil
- nachvollziehbar
- modular
- und langfristig wartbar
ist.
Heute läuft mein Setup so sauber wie nie zuvor.
In diesem Artikel dokumentiere ich den Weg dorthin — und warum ich mich für eine klare Trennung zwischen Homeserver und VPS entschieden habe.
1. Ausgangslage: Ein Homeserver, ein VPS und viel Chaos
Ich betreibe:
- einen Homeserver, auf dem ich Dienste lokal hoste
- einen VPS, der öffentlich im Internet steht
Die ursprüngliche Idee war, Ghost‑Blogs sowohl lokal als auch auf dem VPS zu betreiben und ActivityPub überall zu aktivieren.
Doch schnell zeigte sich:
- ActivityPub auf Ghost ist empfindlich
- die Dokumentation ist lückenhaft
- Docker‑Netzwerke, Reverse‑Proxies und DNS‑Themen greifen ineinander
- kleine Fehler führen zu großen Problemen
Kurz: Es wurde zu viel.
2. Der Wendepunkt: ActivityPub lokal abschalten
Der entscheidende Schritt war die Erkenntnis:
Nicht jeder Dienst muss ActivityPub sprechen.
Für meinen lokalen Blog elmo.k9max.de war ActivityPub mehr Last als Nutzen.
Also habe ich:
- die ActivityPub‑Container aus dem Docker‑Compose entfernt
- die ActivityPub‑Datenbank deaktiviert
- die ActivityPub‑Snippets aus dem Caddyfile gelöscht
- die gesamte lokale Instanz auf „klassisches Ghost“ zurückgeführt
Das Ergebnis war sofort spürbar:
- weniger Fehler
- weniger Logs
- weniger Komplexität
- mehr Stabilität
3. Die neue Architektur: Klar getrennt, sauber strukturiert
Heute sieht meine Infrastruktur so aus:
Homeserver (privat, sicher, flexibel)
- Läuft im lokalen Netzwerk
- Dienste laufen in Docker‑Compose
- Keine Ports nach außen geöffnet
- Verbindung zum VPS ausschließlich über WireGuard
- Ideal für datenintensive oder private Anwendungen
Beispiele:
- Ghost (ohne ActivityPub)
- Immich
- Paperless
- Vaultwarden
- Home Assistant
VPS (öffentlich, minimal, stabil)
- Läuft Caddy als zentralen Reverse‑Proxy
- Liefert alle Domains aus
- Stellt TLS bereit
- Leitet Anfragen über WireGuard an den Homeserver weiter
- Hostet zusätzlich eigene Dienste (z. B. bayerwald.blog mit ActivityPub)
4. WireGuard: Das Rückgrat der gesamten Architektur
WireGuard verbindet Homeserver und VPS wie ein privates, verschlüsseltes Backbone.
Vorteile:
- extrem schnell
- extrem stabil
- extrem einfach zu konfigurieren
- kein NAT‑Gefrickel
- keine Portfreigaben
- keine Angriffsfläche
Der Homeserver ist dadurch nicht direkt im Internet sichtbar, aber alle Dienste können über den VPS öffentlich erreichbar gemacht werden.
5. Caddy auf dem VPS: Die Schaltzentrale
Caddy übernimmt:
- Routing
- TLS
- Logging
- Security‑Headers
- Analytics
- Domain‑Management
Und das Beste:
Jede Anwendung bekommt ihr eigenes Caddyfile.
Beispielstruktur:
/opt/ghost/caddy/
├── Caddyfile
├── Caddyfile.elmo
├── Caddyfile.bayerwald.blog
├── Caddyfile.paperless
└── snippets/
Keine Wildcards.
Keine Überraschungen.
Alles explizit.
6. Einheitliches Auslieferungsschema für alle Dienste
Egal ob ein Dienst auf dem Homeserver oder direkt auf dem VPS läuft:
- er bekommt eine Domain
- er bekommt ein eigenes Caddyfile
- er wird in der Haupt‑Caddyfile importiert
- Caddy wird neu geladen
Fertig.
Beispiel:
paperless.k9max.de {
reverse_proxy 10.13.37.2:8000
encode gzip
import snippets/SecurityHeaders
import snippets/Logging
}
Das gleiche Schema funktioniert für:
- lokale Dienste
- VPS‑Dienste
- statische Seiten
- APIs
- Blogs
- Admin‑Tools
7. Vorteile der neuen Struktur
✔️ Klarheit
Jeder Dienst ist sauber getrennt.
Jede Domain hat ihre eigene Datei.
Keine versteckten Abhängigkeiten.
✔️ Sicherheit
Der Homeserver bleibt privat.
Der VPS ist nur Reverse‑Proxy.
WireGuard schützt die Verbindung.
✔️ Flexibilität
Neue Dienste können in Minuten angebunden werden.
✔️ Wartbarkeit
Keine monolithischen Caddyfiles.
Keine Docker‑Compose‑Monster.
Keine ActivityPub‑Altlasten.
✔️ Skalierbarkeit
Mehr Dienste?
Mehr Domains?
Mehr Projekte?
Kein Problem.
8. Fazit
Was als frustrierende Fehlersuche begann, hat zu einer Architektur geführt, die:
- stabil
- modular
- sicher
- und zukunftsfähig
ist.
Die Kombination aus:
- Homeserver
- VPS
- WireGuard
- Caddy
- modularen Caddyfiles
- klar getrennten Diensten
ist für mich heute der perfekte Kompromiss zwischen Kontrolle, Sicherheit und Flexibilität.
Und das Beste:
Ich kann jederzeit neue Anwendungen hinzufügen — egal ob lokal oder auf dem VPS — und sie mit dem gleichen, eleganten Schema ausliefern.