Was ist der Caddy Web Server?
Der Caddy Web Server (oft auch nur „Caddy” genannt) ist ein moderner, in Go geschriebener Webserver, der vor allem durch eine Besonderheit bekannt geworden ist: Automatisches HTTPS out of the box. Während Konkurrenzprodukte wie Nginx oder Apache meist manuelle SSL-Konfiguration erfordern, holt Caddy automatisch gültige Let's Encrypt-Zertifikate für jede Domain – und verlängert sie auch selbstständig.
Doch Caddy kann weit mehr als nur HTTPS. Dank des innovativen Caddyfile-Formats lassen sich Reverse-Proxy-Regeln, Static-File-Hosting, PHP-FPM-Weiterleitungen und sogar komplexe Middleware-Ketten in wenigen Zeilen konfigurieren. Das macht Caddy zur idealen Wahl für DevOps-Teams, die eine unkomplizierte, aber leistungsstarke Lösung für ihre Infrastruktur suchen.
In diesem Guide zeigen wir Ihnen, wie Sie Caddy 2026 auf Ihrem VPS oder Server einrichten, konfigurieren und in Betrieb nehmen.
Caddy vs. Nginx vs. Traefik – Ein Vergleich
Bevor wir ins Setup einsteigen, werfen wir einen Blick auf die Unterschiede zwischen den drei populärsten Reverse-Proxys im DevOps-Umfeld:
| Eigenschaft | Caddy | Nginx | Traefik |
|---|---|---|---|
| Sprache | Go | C | Go |
| Auto-HTTPS | ✅ Ja (Standard) | ⚠️ Manuell (Certbot) | ✅ Ja (Standard) |
| Konfiguration | Caddyfile (sehr einfach) | nginx.conf (mittel) | YAML / Labels (mittel) |
| Docker-Integration | ⚠️ Über Labels (manuell) | ⚠️ Manuelle Konfiguration | ✅ Automatisch (Default) |
| Performance | Sehr gut (Go) | Hervorragend (C) | Sehr gut (Go) |
| Plugins | ✅ Module (einfach) | ⚠️ Third-Party Module | ✅ Middleware |
| HTTP/2 & HTTP/3 | ✅ Ja (beide) | ✅ Ja (beide) | ✅ Ja (beide) |
| Einsatzgebiet | Allrounder, Static Sites, Reverse Proxy | Traditioneller Webserver, Load Balancer | Cloud-Native, Microservices, Docker |
Fazit des Vergleichs: Caddy kombiniert die Einfachheit von Traefiks Auto-HTTPS mit der Flexibilität eines klassischen Webservers – und ist dabei deutlich einfacher zu konfigurieren als Nginx. Für Einsteiger und erfahrene DevOps gleichermaßen geeignet.
Caddy installieren – Die drei besten Methoden
Caddy kann auf mehreren Wegen installiert werden. Wir zeigen die drei gängigsten Methoden für Linux (Ubuntu/Debian).
1. Installation per Paketmanager (apt)
Die offizielle Caddy-Community bietet ein eigenes APT-Repository an. So binden Sie es ein:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Nach der Installation läuft Caddy automatisch als Systemd-Dienst und stellt bereits eine Willkommensseite auf Port 80 bereit.
2. Docker-Installation
Für Docker-Umgebungen ist das offizielle Image die erste Wahl:
docker pull caddy:latest
docker run -d -p 80:80 -p 443:443 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
--name caddy caddy:latest
3. Binär-Download (manuell)
Für maximale Kontrolle laden Sie das Binär direkt von der offiziellen Caddy-Download-Seite herunter:
curl -OL "https://github.com/caddyserver/caddy/releases/latest/download/caddy_linux_amd64.tar.gz"
tar xzf caddy_linux_amd64.tar.gz
sudo mv caddy /usr/bin/
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/caddy
caddy version
— Anzeige —
Google AdSense Platzhalter
Das Caddyfile – Die einfachste Konfigurationssprache der Welt
Das Herzstück von Caddy ist das Caddyfile. Anders als die verschachtelten Blöcke in nginx.conf ist das Caddyfile extrem lesbar und benötigt oft nur eine einzige Zeile, um eine Website zum Laufen zu bringen.
Minimales Caddyfile – Static File Server
example.com {
root * /var/www/example
file_server
}
Das war's! Caddy erkennt automatisch, dass Port 443 (HTTPS) verwendet werden soll, holt ein Let's Encrypt-Zertifikat für example.com und serviert den Inhalt aus /var/www/example. Kein manuelles Zertifikatsmanagement, keine SSL-Konfiguration.
Reverse Proxy einrichten
Ein Reverse Proxy ist mit Caddy ebenfalls in wenigen Zeilen erledigt:
api.example.com {
reverse_proxy localhost:3000
}
app.example.com {
reverse_proxy localhost:8080 {
health_uri /health
health_interval 30s
}
}
Caddy leitet Anfragen an api.example.com transparent an den lokalen Port 3000 weiter – natürlich inklusive HTTPS. Die Health-Check-Option im zweiten Block sorgt dafür, dass bei einem Ausfall des Backends automatisch kein Traffic mehr dorthin geleitet wird.
PHP-FPM mit Caddy
Für PHP-Anwendungen (z. B. WordPress, Laravel) nutzen Sie das php_fastcgi-Directive:
wordpress.example.com {
root * /var/www/wordpress
php_fastcgi unix//var/run/php/php8.3-fpm.sock
file_server
}
Damit können Sie WordPress und andere PHP-Anwendungen ohne Nginx oder Apache betreiben – Caddy übernimmt sowohl das SSL als auch das PHP-Routing.
Auto-HTTPS mit Let's Encrypt – Caddys Killer-Feature
Caddy integriert den ACME-Client (Automatic Certificate Management Environment) direkt in den Server. Das bedeutet: Sobald Sie eine Domain in Ihrem Caddyfile eintragen, passiert Folgendes automatisch:
- Zertifikatsanfrage: Caddy kontaktiert Let's Encrypt und stellt eine HTTPS-Zertifikatsanfrage für Ihre Domain.
- Challenge: Caddy beantwortet die HTTP-01- oder TLS-ALPN-01-Challenge selbstständig – ohne dass Sie einen Port freischalten oder eine Datei ablegen müssen.
- Installation: Das ausgestellte Zertifikat wird sofort geladen und HTTPS aktiviert.
- Automatische Verlängerung: 30 Tage vor Ablauf verlängert Caddy das Zertifikat automatisch. Kein Cronjob, kein Certbot, kein manuelles Eingreifen.
Optional können Sie auch ZeroSSL als ACME-Provider verwenden oder ein eigenes internes CA für Entwicklungs- und Staging-Umgebungen definieren.
# Eigener ACME-Provider (z. B. ZeroSSL)
{
acme_ca https://acme.zerossl.com/v2/DV90
email [email protected]
}
example.com {
reverse_proxy localhost:3000
}
Caddy mit Docker Compose – Produktions-Setup
Für eine professionelle Container-Umgebung empfehlen wir den Einsatz von Docker Compose. So sieht ein vollständiges Setup mit Caddy als Reverse Proxy vor einer Node.js-App aus:
version: '3.8'
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- web
app:
build: ./app
expose:
- "3000"
networks:
- web
restart: unless-stopped
volumes:
caddy_data:
caddy_config:
networks:
web:
driver: bridge
Das zugehörige Caddyfile:
meineapp.de {
reverse_proxy app:3000
header / {
X-Content-Type-Options "nosniff"
X-Frame-Options "DENY"
Referrer-Policy "strict-origin-when-cross-origin"
}
}
— Anzeige —
Google AdSense Platzhalter
Caddy API – Konfiguration ohne Neustart
Caddy bietet eine mächtige Admin-API, mit der Sie die Konfiguration zur Laufzeit ändern können – ohne Neustart. Standardmäßig lauscht die API auf localhost:2019.
# Aktuelle Konfiguration abrufen
curl localhost:2019/config/
# Neue Route hinzufügen
curl -X POST localhost:2019/config/apps/http/servers/srv0/routes/ \
-H "Content-Type: application/json" \
-d '{
"handle": [{
"handler": "subroute",
"routes": [{
"handle": [{
"handler": "reverse_proxy",
"upstreams": [{"dial": "localhost:4000"}]
}]
}]
}],
"match": [{"host": ["neu.example.com"]}]
}'
Diese API macht Caddy besonders attraktiv für dynamische Umgebungen, in denen häufig neue Services hinzukommen – ähnlich wie bei Traefik, jedoch mit deutlich einfacherer Syntax.
Caddy-Module (Plugins) – Erweiterungen installieren
Anders als bei Nginx, wo Module oft aufwändig kompiliert werden müssen, verwendet Caddy ein xcaddy-Buildsystem. Sie laden einfach die benötigten Module und erhalten ein maßgeschneidertes Binary:
# xcaddy installieren
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
# Caddy mit Modulen bauen
xcaddy build v2.8.0 \
--with github.com/caddyserver/transform-encoder \
--with github.com/caddyserver/nginx-adapter \
--with github.com/mholt/caddy-l4
Beliebte Caddy-Module für 2026:
- caddy-l4: Layer-4-Load-Balancing (TCP/UDP)
- caddy-security: Authentifizierung, OAuth, CORS-Management
- caddy-json-encoder: Strukturierte Logs im JSON-Format
- nginx-adapter: Importiert existierende Nginx-Konfigurationen nach Caddy
- caddy-cache: HTTP-Caching-Layer für statische Assets
Best Practices für Caddy in der Produktion
Damit Ihr Caddy-Setup stabil und sicher läuft, sollten Sie folgende Praktiken beachten:
- Daten-Persistenz sichern: Das Verzeichnis
/dataenthält alle Zertifikate. Stellen Sie sicher, dass es bei einem Container-Neustart erhalten bleibt (Docker-Volume oder Host-Binding). - Logging konfigurieren: Nutzen Sie das
log-Directive, um Access- und Error-Logs getrennt zu speichern:
example.com {
log {
output file /var/log/caddy/access.log
format json
}
reverse_proxy localhost:3000
}
- Rate-Limiting einsetzen: Schützen Sie Ihre API-Endpunkte mit dem
rate_limit-Directive vor Überlastung. - Header Security: Setzen Sie Sicherheits-Header wie HSTS, X-Content-Type-Options und Content-Security-Policy.
- Monitoring: Exportieren Sie Metriken über das Prometheus-Modul, um Performance und Fehlerraten zu überwachen.
- Updates: Halten Sie Caddy aktuell – neue Versionen erscheinen regelmäßig mit Sicherheitspatches und Performance-Verbesserungen.
Caddy als Static File Server
Caddy eignet sich hervorragend als Static File Server – sei es für eine Single-Page-Application (React, Vue, Svelte) oder eine einfache HTML-Website:
meineseite.de {
root * /var/www/meineseite
encode gzip
file_server {
index index.html
browse
}
handle_errors {
@404 {
expression {http.error.status_code} == 404
}
rewrite @404 /404.html
}
}
Die encode-Direktive aktiviert automatische Gzip-Kompression, browse erlaubt das Durchstöbern von Verzeichnissen (optional) und die handle_errors-Direktive fängt 404-Fehler ab.
Fazit – Lohnt sich Caddy 2026?
Der Caddy Web Server hat sich in den letzten Jahren von einem Nischenprodukt zu einer ernstzunehmenden Alternative für Nginx und Traefik entwickelt. Seine Stärken liegen klar in der Einfachheit und dem automatischen HTTPS. Für Einsteiger, die schnell eine sichere Website betreiben möchten, gibt es kaum eine bessere Wahl. Aber auch erfahrene DevOps-Profis schätzen die API, die Modularität und die saubere Go-Architektur.
Wo Caddy (noch) nicht glänzt: Bei extrem hochfrequentierten Static-File-Szenarien liegt Nginx in der Rohperformance minimal vorn. Und wer eine vollautomatische Docker-Discovery wie bei Traefik braucht, muss bei Caddy etwas mehr Handarbeit investieren.
Dennoch: Für 90 % aller Anwendungsfälle – Reverse Proxy, Static Files, PHP-FPM, Docker-Setup – ist Caddy nicht nur gut genug, sondern oft die bessere Wahl. Probieren Sie es aus! Die Installation dauert keine fünf Minuten, und Sie werden überrascht sein, wie einfach modernes Hosting sein kann.