🔀 · Reverse Proxy

Traefik: Der Reverse Proxy der sich selbst konfiguriert

Traefik erkennt neue Docker Container automatisch und routet Traffic dorthin – kein manuelles Nginx-Config-Editieren mehr. Inklusive automatischer TLS-Zertifikate via Let's Encrypt. Der Standardweg für Docker-Server-Setups.

Docker LabelsLet's EncryptTLSMiddlewareDashboard

Traefik-Grundprinzip: Labels statt Konfigurationsdateien

Traefik liest Docker Labels direkt von Containern aus und konfiguriert sich selbst:

# compose.yml – Service mit Traefik-Labels services: traefik: image: traefik:v3 command: - "--providers.docker=true" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.le.acme.email=deine@mail.de" - "--certificatesresolvers.le.acme.tlschallenge=true" ports: ["80:80", "443:443"] volumes: - /var/run/docker.sock:/var/run/docker.sock - ./certs:/certs meinservice: image: meinimage labels: - "traefik.enable=true" - "traefik.http.routers.mein.rule=Host(`mein.domain.de`)" - "traefik.http.routers.mein.tls.certresolver=le"

Neuen Container mit den passenden Labels starten – Traefik erkennt ihn sofort, holt ein TLS-Zertifikat und routet Traffic. Kein Reload, kein Neustart.

Middleware: Auth, Rate Limiting und HTTP-Redirects

Traefik-Middleware fügt Funktionalität zwischen Eingang und Service ein:

  • HTTP → HTTPS Redirect: Automatisch alle HTTP-Requests auf HTTPS umleiten – eine Middleware-Regel für alle Services
  • BasicAuth: Passwortschutz für interne Tools ohne eigene Auth-Logik – Credentials als Labels oder in separater Datei
  • Rate Limiting: Anfragen pro IP begrenzen – schützt vor Brute-Force und übermäßigem Traffic
  • IP Allowlist: Services nur für bestimmte IPs zugänglich – für Admin-Interfaces die nie öffentlich sein sollten

Middlewares werden als Kette definiert und können auf mehrere Router angewendet werden – einmal definieren, überall nutzen. Kombiniert mit Reverse Proxy-Grundlagen ist das ein sehr mächtiges Setup.

Traefik Dashboard und Monitoring

Traefik hat ein eingebautes Dashboard das alle Routers, Services und Middlewares visualisiert:

  • Dashboard unter traefik.deine-domain.de – mit BasicAuth absichern, nie öffentlich ohne Auth
  • Health Checks: Traefik kann Container-Health überprüfen und unhealthy Container aus dem Routing nehmen
  • Logs: Access-Logs im JSON-Format, perfekt für Log-Aggregation mit Grafana Loki
  • Metrics: Prometheus-Endpoint für Monitoring – Request-Rate, Fehlerquoten, Latenz pro Service

Auf einem typischen Self-Hosting-Server läuft Traefik als einziger Container mit gebundenen Ports 80/443 – alle anderen Services kommunizieren ohne direkte Port-Bindings nur über Traefik.

Häufige Fragen zu Traefik

Traefik für Docker-Umgebungen: automatische Service-Discovery, kein Config-Reload. Nginx für statische Setups, komplexe Rewrite-Regeln oder wenn schon vorhanden. Caddy als dritte Option: einfacher als Traefik, mächtiger als Nginx für einfache Setups.

Der Docker Socket ist ein Sicherheitsrisiko – wer ihn hat, hat Root-Zugriff. Lösung: socket-proxy als Middleware (tecnativa/docker-socket-proxy) der nur lesenden Zugriff erlaubt. Traefik bekommt nur Verbindung zum Proxy, nicht direkt zum Socket.

Rate Limits bei Let's Encrypt beachten (5 Zertifikate pro Domain pro Woche). Zuerst mit staging-Resolver testen. DNS muss korrekt auf die Server-IP zeigen bevor der Challenge startet. Logs in Traefik-Container prüfen: `docker compose logs traefik`.

Mit Health Checks: neuer Container wird erst ins Routing genommen wenn er healthy ist. `docker compose up -d` startet neuen Container bevor alter gestoppt wird (bei Verwendung von `--no-deps`). Für echtes Zero-Downtime braucht man zwei Container gleichzeitig – Traefik balanced automatisch.