Von Chaos zu Klarheit: Meine Reise zu einer stabilen Homeserver‑VPS‑Architektur mit WireGuard und Caddy

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.