Caddy als Reverse Proxy: HTTPS ohne Aufwand in Docker

Caddy ist ein moderner Webserver und Reverse Proxy, der HTTPS automatisch über Let’s Encrypt bereitstellt. Mit Docker Compose lässt sich Caddy schnell auf Linux aufsetzen, inklusive automatischer Zertifikatserneuerung, persistenter Volumes für Konfigurationen und Logs sowie sicherer Netzwerke. Dieses Tutorial zeigt Schritt für Schritt, wie Sie Caddy als Reverse Proxy für Ihre containerisierten Services betreiben.

Grundkomponenten eines Caddy-Stacks

Ein typischer Caddy-Stack besteht aus:

  • Caddy: Reverse Proxy mit automatischer HTTPS-Konfiguration
  • Docker Services: Containerisierte Anwendungen, die über Caddy erreichbar sein sollen
  • Volumes: Persistente Speicherung von Konfigurationen, Zertifikaten und Logs
  • Netzwerke: Interne Kommunikation zwischen Caddy und den Services

Volumes für Persistenz

Persistente Volumes sichern Konfigurationen und Zertifikate, sodass diese auch nach Neustarts der Container erhalten bleiben.

volumes:
  caddy_data:
  caddy_config:
  caddy_logs:
  • caddy_data für automatische Let’s Encrypt Zertifikate
  • caddy_config für Caddyfile und statische Konfigurationen
  • caddy_logs für Server-Logs
  • Persistente Volumes bleiben auch bei Updates oder Neustarts der Container erhalten

Netzwerke für interne Kommunikation

Ein separates Netzwerk stellt sicher, dass Caddy und die containerisierten Services sicher miteinander kommunizieren.

networks:
  web_proxy_net:
  • Alle Services, die Caddy verwalten soll, werden mit web_proxy_net verbunden
  • Erleichtert Port-Mapping für HTTP/HTTPS

Beispiel: docker-compose.yml für Caddy

version: '3.8'

services:
caddy:
image: caddy:2.9.5
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- caddy_data:/data
- caddy_config:/config
- caddy_logs:/logs
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- web_proxy_net

Beispiel-Caddyfile für automatische HTTPS-Routen

whoami.example.com {
    reverse_proxy whoami:80
}
  • Der Host whoami.example.com wird automatisch mit HTTPS versehen
  • reverse_proxy leitet Anfragen an den internen Service whoami weiter
  • Caddy kümmert sich automatisch um Zertifikatserneuerung via Let’s Encrypt

Service hinter Caddy

services:
  whoami:
    image: containous/whoami
    container_name: whoami
    networks:
      - web_proxy_net
  • Service verbindet sich mit dem selben Netzwerk wie Caddy
  • Anfragen an whoami.example.com werden automatisch weitergeleitet

Start und Verwaltung des Caddy-Stacks

Starten Sie den Stack mit:

docker-compose up -d

Zum Stoppen und Entfernen aller Container, Netzwerke und Volumes:

docker-compose down -v

Best Practices

  • Volumes für persistente Daten verwenden
  • Separate Netzwerke für Caddy und Services definieren
  • Versionierte Docker Images nutzen für Updates und Rollbacks
  • Backups der Caddyfile und Zertifikate erstellen
  • Logs überwachen, um Fehler frühzeitig zu erkennen
  • Externe Ports nur bei Bedarf öffnen
  • DNS korrekt auf öffentliche IPs verweisen, damit Let’s Encrypt Zertifikate ausgestellt werden können

Praxisbeispiele

Caddy starten

docker-compose up -d

Logs überwachen

docker-compose logs -f caddy

Neuen Service hinzufügen

docker-compose up -d whoami

Updatefähigkeit

Versionierte Docker Images ermöglichen einfache Updates von Caddy, während Volumes für Konfigurationen und Zertifikate unverändert bleiben. Automatische HTTPS-Zertifikate werden nach Updates weiterhin bereitgestellt.

docker-compose pull
docker-compose up -d

Zusammenfassung

Mit Docker Compose lässt sich Caddy als Reverse Proxy schnell, sicher und automatisch HTTPS-fähig auf Linux betreiben. Persistente Volumes, Netzwerke und eine einfache Caddyfile sorgen für Wartbarkeit und Stabilität. Versionierte Images erleichtern Updates und Rollbacks und gewährleisten, dass alle containerisierten Services jederzeit zuverlässig erreichbar bleiben.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles