Caddy Role
Deploy Caddy, a modern web server with automatic HTTPS, as a reverse proxy for Docker services.
Zertifikate: Die Wildcards für rwcloud.ch und gate81.ch werden seit
10. Oktober 2026 auf mgmt durch den certs-Stack im Repo
homelab/portainer-hosted erneuert (acme.sh + Infomaniak DNS-01).
Diese Rolle verteilt lediglich die exportierten Dateien an bestehende Caddy-Hosts.
Betrieb und Wiederherstellung.
Zertifikats-Ablauf
Die Action Distribute Wildcard Certificates prüft täglich den certs-Stack auf
mgmt, kopiert Zertifikate auf docker_base, docker01, docker_idp
und lädt Caddy neu. immosrv410 ist absichtlich ausgeschaltet/im Aufbau und
wird nach dem Caddy-Onboarding wieder aufgenommen. Bei manueller Ausführung wird zusätzlich ein Renewal-Check
auf mgmt ausgeführt; force bleibt standardmäßig ausgeschaltet.
Quelle und Verzeichnis sind über Defaults konfigurierbar:
1 2 | |
Die Quelle liefert <domain>/fullchain.pem und <domain>/<domain>.key.pem.
Private Schlüssel werden mit 0600 geschrieben und nicht in Task-Ausgaben angezeigt.
Manueller Renewal-Check:
1 2 | |
Nur Gesundheit prüfen:
1 2 | |
Nur verteilen und Caddy neu laden:
1 2 | |
Der Workflow Deploy Docker Services mit service=caddy, action=reload
aktualisiert weiterhin nur die lokale Caddy-Konfiguration und lädt lokale
Zertifikatsdateien per --force neu; er stellt keine Zertifikate aus.
Usage
Basic Configuration
Konfiguration steht in playbooks/proxmox/group_vars/all.yml:
1 2 3 4 5 6 7 8 9 10 11 | |
Defining Proxy Sites
Definiere die Services pro Gruppe in den group_vars/<gruppe>_services.yml:
1 2 3 4 5 6 7 | |
Wildcard-Zertifikate
Jeder Host bekommt im wildcard-Modus für alle Domains in
caddy_wildcard_certs (Default: roles/caddy/defaults/main.yml) einen eigenen
Caddy-Site-Block mit dem passenden Zertifikat:
1 2 3 4 5 | |
caddy_proxy_sites UND caddy_additional_sites (z. B. pgadmin-*.gate81.ch)
werden je nach Domäne in den zugehörigen Wildcard-Block gerendert. Das Zertifikat
wird von mgmt geholt und unter
{{ proxy_caddy_own_certs_folder }}/<domain>/ abgelegt:
fullchain.pem<domain>.key.pem
Stage / Parallel Deployment
Zweite Caddy-Instanz (z. B. Stage) auf demselben Server — siehe
playbooks/proxmox/deploy_docker_base.yml / deploy_docker_services.yml
(caddy-stage, Ports 50000/50001).
Adding a New Service (Zero Downtime)
- Neue Site in
caddy_proxy_sites(bzw.caddy_additional_sites) eintragen. - Playbook mit dem Reload-Tag ausführen:
1 | |
Dies:
1. Rendert die Caddyfile neu auf dem Server.
2. Führt caddy reload im Container aus.
3. Wendet die Konfiguration an, ohne bestehende Verbindungen zu trennen.
Tags
| Tag | Beschreibung |
|---|---|
caddy-install |
Volle Installation (Ordner, Zertifikate, Error-Pages, Container) |
caddy-uninstall |
Entfernt den Caddy-Container |
caddy-update |
Image neu pullen + Container neu starten |
caddy-copy-certs |
Zertifikate von mgmt holen (wildcard-Modus) |
caddyfile-reload |
Caddyfile neu rendern + caddy reload (Zero Downtime) |
caddy-pages |
Error-Pages aktualisieren |
(entsprechend caddy-stage-* für die Stage-Instanz)
