Warum ein Reverse Proxy ins Homelab gehört
Wer im Homelab mehrere Dienste betreibt – Nextcloud, Portainer, OpenClaw, eine WordPress-Seite oder einen KI-Agenten wie Hermes – kennt das Problem: Jeder Dienst läuft auf einem eigenen Port, und die URLs werden unübersichtlich. Ein Reverse Proxy löst das, indem er alle Dienste unter einer Domain mit automatischem HTTPS bündelt. Der bekannteste Kandidat ist Nginx, doch Caddy hat einen entscheidenden Vorteil: automatisches HTTPS ohne manuelle Zertifikatsverwaltung.
Was Caddy von Nginx und Traefik unterscheidet
Caddy ist ein Go-basierter Webserver und Reverse Proxy, der sich durch drei Eigenschaften auszeichnet:
- Automatisches HTTPS: Caddy holt und erneuert Let's-Encrypt-Zertifikate selbstständig. Kein Certbot, keine Cronjobs, keine manuelle Konfiguration.
- Einfache Caddyfile-Syntax: Statt komplexer Location-Blöcke wie bei Nginx reichen oft wenige Zeilen.
- Docker-native Integration: Caddy erkennt Docker-Container und proxied sie automatisch.
Für das Homelab bedeutet das: Einmal konfiguriert – und jeder neue Dienst bekommt automatisch eine gültige HTTPS-URL. Ideal, wenn du viele Experimente fährst.
Installation mit Docker-Compose
Die einfachste Methode, Caddy im Homelab zu betreiben, ist Docker-Compose:
version: "3.8"
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data:/data
- ./config:/config
networks:
- homelab
Der Port 443/udp wird für HTTP/3 (QUIC) benötigt. Die Volumes speichern Zertifikate und Konfiguration dauerhaft.
Die Caddyfile-Konfiguration
Ein typisches Caddyfile für mehrere Dienste im Homelab:
meine-domain.de {
handle /portainer/* {
reverse_proxy portainer:9000
}
handle /cloud/* {
reverse_proxy nextcloud:80
}
respond "Homelab läuft!" 200
}
:8080 {
respond "Lokaler Test" 200
}
Die handle-Direktive ersetzt Nginx-Location-Blöcke. Caddy holt automatisch Let's-Encrypt-Zertifikate, falls die Domain öffentlich erreichbar ist – sonst selbstsignierte.
Automatisches HTTPS – der Kill-Feature
- Caddy prüft, ob die Domain auf den Server zeigt (HTTP-01-Challenge)
- Bei Erfolg: Let's-Encrypt-Zertifikat wird automatisch bezogen
- Automatische Erneuerung 30 Tage vor Ablauf
- Klare Log-Meldungen bei Fehlern
Für interne Server ohne öffentliche IP: DNS-Challenge verwenden. API-Key als Umgebungsvariable:
environment:
- CF_API_TOKEN=dein_token # Cloudflare DNS
Troubleshooting
Certificate cache miss: ./data-Volume persistent halten.
502 Bad Gateway: Container im selben Docker-Netzwerk prüfen.
Let's Encrypt Timeout: Port 80 muss erreichbar sein – sonst DNS-Challenge nutzen.
Fazit
Caddy ist der einfachste Weg zu HTTPS im Homelab. Kein Certbot, keine manuellen Cronjobs – einfach Caddyfile schreiben, Docker-Compose starten, fertig. Für Docker-Umgebungen mit mehreren Diensten die praktischste Lösung. Probiere es aus – deine zukünftigen Lets-Encrypt-Erinnerungen werden es dir danken.
🎯 Empfehlung: Prometheus & Grafana: Docker-Monitoring im Homelab selbst hosten – Monitoring-Stack mit Prometheus, Grafana, cAdvisor und Alertmanager – perfekt ergänzend zum Caddy-Reverse-Proxy-Setup.
🔒 Mehr zum Thema: Sicherheit im Homelab: SSH, Docker & Firewall richtig absichern
🔗 Neu: Docker Container selbstheilend machen: HEALTHCHECK, Restart-Policies & Watchtower – Fr Dienste hinter dem Caddy Reverse Proxy sind Docker-Healthchecks besonders wichtig.