Warum Traefik statt Nginx?
| Merkmal | Nginx | Traefik |
|---|---|---|
| Konfiguration | Statische Configs | Docker-Labels (dynamisch) |
| SSL-Renewal | Manuell / Certbot | Vollautomatisch |
| Neue Services | Neustart nötig | Automatisch erkannt |
| Dashboard | Separat | Integriert |
Traefik einrichten
Voraussetzungen
- Domain mit DNS → Server-IP
- Ports 80 und 443 erreichbar
- Docker und Docker Compose
docker-compose.yml für Traefik
services:
traefik:
image: traefik:v3.0
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik-certs:/letsencrypt
command:
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "[email protected]"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=Host(`traefik.firma.de`)"
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$..."
volumes:
traefik-certs:
Passwort-Hash für Dashboard generieren
htpasswd -nb admin IhrPasswort
# Ausgabe: admin:$apr1$...
# Dollarzeichen in docker-compose mit $$ escapen!
App hinter Traefik einrichten
services:
meine-app:
image: nginx:alpine
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.meine-app.rule=Host(`app.firma.de`)"
- "traefik.http.routers.meine-app.tls.certresolver=letsencrypt"
- "traefik.http.services.meine-app.loadbalancer.server.port=80"
networks:
default:
external: true
name: traefik-netz
Das Traefik-Netzwerk erstellen:
docker network create traefik-netz
Alle Services die von Traefik geroutet werden sollen müssen im gleichen Docker-Netz sein.
Middleware – Rate Limiting
labels:
- "traefik.http.middlewares.rate-limit.ratelimit.average=100"
- "traefik.http.middlewares.rate-limit.ratelimit.burst=50"
- "traefik.http.routers.meine-app.middlewares=rate-limit"
Middleware – IP-Whitelist
labels:
- "traefik.http.middlewares.only-office.ipallowlist.sourcerange=192.168.1.0/24,10.0.0.0/8"
- "traefik.http.routers.admin.middlewares=only-office"
FAQ
Kann Traefik auch ohne Docker genutzt werden?
Ja. Traefik unterstützt als Provider auch Consul, Kubernetes (Ingress), Rancher und Dateikonfigurationen.
Was ist der Unterschied zwischen Traefik v2 und v3?
Traefik v3 bringt verbesserte Kubernetes-Integration, HTTP/3 Support und eine überarbeitete Konfigurationssyntax. Migration von v2 ist meist durch einfachen Version-Bump möglich.
Fazit
Traefik macht Reverse-Proxy-Konfiguration trivial – ein Label am Container und das Routing ist aktiv, SSL-Zertifikat inklusive.
Wir implementieren Traefik-Infrastrukturen für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.