Vergleich NGINX Proxy Manager
Caddy ist ein Reverse Proxy mit automatischem HTTPS, konfiguriert über eine einzige Textdatei.
|Nginx Proxy Manager|Caddy|
|---|---|---|
|Konfiguration|Web-UI + Datenbank|Caddyfile (Text, versionierbar)|
|Zertifikate|Pro Host per Klick|Automatisch für jeden Block|
|Websockets|Schalter pro Host|Funktioniert direkt|
|Upload-Limit|client_max_body_size|Keins|
|HTTP → HTTPS|Schalter pro Host|Automatisch|
Aufbau mit Docker Compose
services:
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy_data:/data
- ./caddy_config:/config
caddy_datamuss persistent bleibenDort liegen Zertifikate und Account-Schlüssel, sonst drohen die Let’s-Encrypt-Rate-Limits.
Caddyfile
immich.fshrmnsfrnd.ddnss.de {
reverse_proxy immich_server:2283
}
www.example.de {
redir https://example.de{uri} permanent
}| Ziel | Direktive |
|---|---|
| Weiterreichen an Container | reverse_proxy name:port |
| Weiterleitung (301) | redir https://ziel{uri} permanent |
| Eigenes Zertifikat | tls cert.pem key.pem |
| Staging-CA zum Testen | acme_ca https://acme-staging-v02.api.letsencrypt.org/directory (globaler Block) |
Netzwerke
Der Hostname im Caddyfile muss aus dem Caddy-Container auflösbar sein.
| Ziel | Eintrag |
|---|---|
| Container im gleichen Netz | reverse_proxy containername:port |
| Anderer Rechner im LAN | reverse_proxy 192.168.x.x:port |
| Dienst auf dem Docker-Host | reverse_proxy host.docker.internal:port |
localhost | zeigt auf den Caddy-Container selbst |
docker network create proxy
docker network connect proxy mein-containerZertifikate
| Fall | Verfahren | Voraussetzung |
|---|---|---|
*.ddnss.de-Subdomains | Let’s Encrypt, automatisch | DNS + Port 80/443 offen |
test.localhost | Interne Caddy-CA | Root-Zertifikat im Browser importieren |
| Wildcard | DNS-Challenge | Caddy-Plugin für den DNS-Anbieter |
docker compose cp caddy:/data/caddy/pki/authorities/local/root.crt ./caddy-root.crtBefehle
docker compose up -d caddy
docker compose logs -f caddy
docker compose exec -w /etc/caddy caddy caddy reload
docker compose exec -w /etc/caddy caddy caddy validate
docker compose exec -w /etc/caddy caddy caddy fmt --overwrite