Traefik vs. Nginx als Reverse Proxy
Nginx: Statische Konfiguration, manuell updaten
Traefik: Dynamisch, liest Docker-Labels automatisch
Traefik Vorteile:
+ Kein Config-Reload bei neuen Containern
+ Automatisches Let's Encrypt
+ Service Discovery (Docker, K8s, Consul)
+ Dashboard und Health-Checks eingebaut
+ Middleware-Ketten (Auth, Rate-Limit, Headers)
Traefik mit Docker Compose
# docker-compose.yml (Basis-Setup)
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
command:
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "[email protected]"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host('traefik.firma.de')"
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
App mit Traefik verbinden (Labels)
# Beispiel: Nextcloud hinter Traefik
services:
nextcloud:
image: nextcloud:latest
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host('cloud.firma.de')"
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
# Middleware: HTTP → HTTPS Redirect
- "traefik.http.routers.nextcloud-http.rule=Host('cloud.firma.de')"
- "traefik.http.routers.nextcloud-http.entrypoints=web"
- "traefik.http.routers.nextcloud-http.middlewares=redirect-https"
- "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https"
Middleware (BasicAuth)
# Traefik-Dashboard mit BasicAuth absichern
labels:
- "traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$10$$HASH"
# Passwort-Hash generieren
echo $(htpasswd -nB admin) | sed -e s/\$/\$\$/g
Traefik Dashboard
http://traefik.firma.de
Zeigt:
- Alle aktiven Router
- Services und Backends
- Let's Encrypt Zertifikate
- Entrypoints
- Health-Status
Statische Konfigurationsdatei (traefik.yml)
# traefik.yml
api:
dashboard: true
insecure: false
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
exposedByDefault: false
file:
filename: /etc/traefik/dynamic.yml
certificatesResolvers:
letsencrypt:
acme:
email: [email protected]
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web
FAQ
Kann Traefik mit nicht-Docker-Diensten umgehen?
Ja. Traefik unterstützt auch statische File-Provider für externe Services (z.B. VM hinter Traefik, Bare-Metal-Server).
Fazit
Traefik ist ideal für Docker-Umgebungen: Zero-Config für neue Container, automatisches SSL und eingebautes Dashboard.
Reverse Proxy und SSL-Konfiguration für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.