Traefik Docker Anleitung 2026: Der ultimative Reverse Proxy
TUTORIAL 11 min read fordnox

Traefik Docker Anleitung 2026: Der ultimative Reverse Proxy

Traefik mit Docker einrichten für automatisches SSL, Service-Erkennung und Lastverteilung. Vollständige Anleitung für moderne Container-Deployments.


Traefik Docker Anleitung: Automatischer Reverse Proxy

Traefik ist der Cloud-native Reverse Proxy. Er erkennt Ihre Docker-Container automatisch und leitet den Datenverkehr an sie weiter — mit kostenlosen SSL-Zertifikaten.

Was ist Traefik?

Traefik sitzt vor Ihren Diensten:

Internet → Traefik → Container A (app.domain.com)
                  → Container B (api.domain.com)
                  → Container C (admin.domain.com)

Hauptfunktionen:

Warum Traefik statt Nginx?

FunktionTraefikNginx
Docker-IntegrationNativManuelle Konfiguration
Auto-SSLIntegriertCertbot erforderlich
Service-ErkennungAutomatischManuell
Konfiguration neu ladenHot ReloadNeustart erforderlich
LernkurveMittelNiedriger
LeistungAusgezeichnetAusgezeichnet

Traefik gewinnt in Docker-Umgebungen. Nginx für statische Konfigurationen (siehe unsere Nginx Reverse Proxy Anleitung).

VPS-Anforderungen

Traefik ist leichtgewichtig:

Ihre VPS-Spezifikationen hängen von Ihren Diensten ab, nicht von Traefik. Lesen Sie unseren Bester VPS für Docker Leitfaden für Empfehlungen zur Dimensionierung.

Grundlegende Einrichtung

Schritt 1: Netzwerk erstellen

docker network create traefik-public

Schritt 2: Traefik-Konfigurationsverzeichnis erstellen

mkdir -p /opt/traefik
cd /opt/traefik

Schritt 3: Docker Compose erstellen

# docker-compose.yml
version: '3.8'

services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    ports:
      - 80:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/traefik.yml:ro
      - ./acme.json:/acme.json
      - ./config:/config:ro
    networks:
      - traefik-public
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.com`)"
      - "traefik.http.routers.traefik.entrypoints=websecure"
      - "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
      - "traefik.http.routers.traefik.service=api@internal"
      - "traefik.http.routers.traefik.middlewares=auth"
      - "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$xxxxx"

networks:
  traefik-public:
    external: true

Schritt 4: Traefik-Konfiguration erstellen

# traefik.yml
api:
  dashboard: true
  insecure: false

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https

  websecure:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    network: traefik-public
  file:
    directory: /config
    watch: true

certificatesResolvers:
  letsencrypt:
    acme:
      email: you@yourdomain.com
      storage: /acme.json
      httpChallenge:
        entryPoint: web

Schritt 5: Zertifikatsspeicher erstellen

touch acme.json
chmod 600 acme.json
mkdir config

Schritt 6: Dashboard-Passwort generieren

htpasswd -nb admin your-secure-password
# Ausgabe: admin:$apr1$...
# Verwenden Sie dies in docker-compose.yml und verdoppeln Sie die $-Zeichen

Schritt 7: Traefik starten

docker compose up -d

Dashboard aufrufen: https://traefik.yourdomain.com

Dienste hinzufügen

Beispiel: Nginx

# In einer separaten docker-compose.yml
version: '3.8'

services:
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: unless-stopped
    networks:
      - traefik-public
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nginx.rule=Host(`www.yourdomain.com`)"
      - "traefik.http.routers.nginx.entrypoints=websecure"
      - "traefik.http.routers.nginx.tls.certresolver=letsencrypt"

networks:
  traefik-public:
    external: true

Das war’s! Traefik erkennt den Container und:

Beispiel: Node.js App

services:
  api:
    build: .
    container_name: api
    networks:
      - traefik-public
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.api.rule=Host(`api.yourdomain.com`)"
      - "traefik.http.routers.api.entrypoints=websecure"
      - "traefik.http.routers.api.tls.certresolver=letsencrypt"
      - "traefik.http.services.api.loadbalancer.server.port=3000"

networks:
  traefik-public:
    external: true

Hinweis: loadbalancer.server.port gibt den Container-Port an.

Middleware

Basic Auth

labels:
  - "traefik.http.middlewares.auth.basicauth.users=user:$$hashed$$password"
  - "traefik.http.routers.admin.middlewares=auth"

Ratenbegrenzung

labels:
  - "traefik.http.middlewares.ratelimit.ratelimit.average=100"
  - "traefik.http.middlewares.ratelimit.ratelimit.burst=50"
  - "traefik.http.routers.api.middlewares=ratelimit"

IP-Whitelist

labels:
  - "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=192.168.1.0/24,10.0.0.0/8"
  - "traefik.http.routers.admin.middlewares=ipwhitelist"
labels:
  - "traefik.http.middlewares.security.headers.stsSeconds=31536000"
  - "traefik.http.middlewares.security.headers.stsIncludeSubdomains=true"
  - "traefik.http.middlewares.security.headers.contentTypeNosniff=true"
  - "traefik.http.middlewares.security.headers.frameDeny=true"

Weiterleitung

labels:
  - "traefik.http.middlewares.redirect.redirectregex.regex=^https://old.domain.com/(.*)"
  - "traefik.http.middlewares.redirect.redirectregex.replacement=https://new.domain.com/$${1}"

Komprimierung

labels:
  - "traefik.http.middlewares.compress.compress=true"
  - "traefik.http.routers.web.middlewares=compress"

Mehrere Domains

Gleicher Container

labels:
  - "traefik.http.routers.web.rule=Host(`domain1.com`) || Host(`domain2.com`)"

Mit Weiterleitung

labels:
  - "traefik.http.routers.www.rule=Host(`www.domain.com`)"
  - "traefik.http.routers.www.middlewares=redirect-to-apex"
  - "traefik.http.middlewares.redirect-to-apex.redirectregex.regex=^https://www\\.(.+)"
  - "traefik.http.middlewares.redirect-to-apex.redirectregex.replacement=https://$${1}"

Lastverteilung

Mehrere Container

services:
  api:
    image: myapi
    deploy:
      replicas: 3
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.api.rule=Host(`api.domain.com`)"

Traefik verteilt die Last automatisch auf alle Replikate.

Sticky Sessions

labels:
  - "traefik.http.services.api.loadbalancer.sticky.cookie=true"
  - "traefik.http.services.api.loadbalancer.sticky.cookie.name=server_id"

Gesundheitsprüfungen

labels:
  - "traefik.http.services.api.loadbalancer.healthcheck.path=/health"
  - "traefik.http.services.api.loadbalancer.healthcheck.interval=10s"

Pfadbasiertes Routing

labels:
  - "traefik.http.routers.api.rule=Host(`domain.com`) && PathPrefix(`/api`)"
  - "traefik.http.routers.web.rule=Host(`domain.com`) && PathPrefix(`/`)"

Pfad-Präfix entfernen

labels:
  - "traefik.http.middlewares.strip-api.stripprefix.prefixes=/api"
  - "traefik.http.routers.api.middlewares=strip-api"

/api/users wird für das Backend zu /users.

Wildcard-Zertifikate

Für *.domain.com:

# traefik.yml
certificatesResolvers:
  letsencrypt:
    acme:
      email: you@domain.com
      storage: /acme.json
      dnsChallenge:
        provider: cloudflare
# docker-compose.yml
environment:
  - CF_API_EMAIL=you@domain.com
  - CF_API_KEY=your-api-key

Dann verwenden:

labels:
  - "traefik.http.routers.web.tls.certresolver=letsencrypt"
  - "traefik.http.routers.web.tls.domains[0].main=domain.com"
  - "traefik.http.routers.web.tls.domains[0].sans=*.domain.com"

Dateibasierte Konfiguration

Für Nicht-Docker-Dienste verwenden Sie den Datei-Provider:

# /opt/traefik/config/external.yml
http:
  routers:
    external-service:
      rule: "Host(`external.domain.com`)"
      service: external-service
      tls:
        certResolver: letsencrypt

  services:
    external-service:
      loadBalancer:
        servers:
          - url: "http://192.168.1.100:8080"

Traefik überwacht das Konfigurationsverzeichnis und lädt automatisch neu.

Metriken & Überwachung

Metriken aktivieren

# traefik.yml
metrics:
  prometheus:
    entryPoint: metrics
    buckets:
      - 0.1
      - 0.3
      - 1.2
      - 5.0

entryPoints:
  metrics:
    address: ":8082"

Grafana Dashboard

Verwenden Sie die Dashboard-ID 11462 für Traefik-Metriken. Für eine vollständige Grafana-Überwachungseinrichtung lesen Sie unseren speziellen Leitfaden.

Zugriffsprotokolle

# traefik.yml
accessLog:
  filePath: "/var/log/traefik/access.log"
  format: json
  filters:
    statusCodes:
      - "400-599"
  bufferingSize: 100

Log-Verzeichnis einbinden:

volumes:
  - ./logs:/var/log/traefik

Fehlerbehebung

Container wird nicht erkannt

  1. Netzwerk prüfen:
docker network inspect traefik-public
  1. Labels überprüfen:
docker inspect container_name | grep -A 50 Labels
  1. Prüfen Sie traefik.enable=true

SSL funktioniert nicht

  1. ACME-Log prüfen:
docker logs traefik 2>&1 | grep -i acme
  1. acme.json-Berechtigungen überprüfen (600)

  2. Stellen Sie sicher, dass Port 80 für die HTTP-Challenge offen ist

502 Bad Gateway

  1. Prüfen Sie, ob der Container läuft
  2. Überprüfen Sie den Port in den Labels
  3. Container-Logs prüfen

Aktive Konfiguration anzeigen

Das Dashboard zeigt alle Router, Dienste und Middlewares. Alternativ:

curl http://localhost:8080/api/http/routers

Produktions-Checkliste

Bester VPS für Traefik

Traefik selbst ist winzig. Dimensionieren Sie nach Ihren Diensten:

AnbieterPlanPreisAm besten für
HetznerCX21€5,395-10 Dienste
HostingerKVM1$4,99Budget-Einrichtung
VultrVC2$12Globale Reichweite

FAQ

Traefik vs Nginx Proxy Manager?

Traefik für Docker-native Setups. NPM für einfachere GUI-basierte Konfiguration.

Wie viele Dienste kann Traefik verarbeiten?

Hunderte problemlos. Es ist für Microservices im großen Maßstab konzipiert.

Ist Traefik sicher?

Ja. Setzen Sie die API nicht ohne Authentifizierung frei. Halten Sie es aktuell.

Kann ich von Nginx migrieren?

Ja. Eine schrittweise Migration ist möglich — betreiben Sie vorübergehend beide gleichzeitig.

Unterstützt Traefik HTTP/3?

Ja, seit v3.0. Aktivieren Sie es in der Entrypoint-Konfiguration.

Zusammenfassung

Traefik automatisiert das, was Sie in Nginx manuell konfigurieren würden:

AufgabeNginxTraefik
Dienst hinzufügenKonfiguration bearbeiten, neu ladenLabels hinzufügen
SSL erhaltenCertbot ausführenAutomatisch
LastverteilungUpstream konfigurierenAutomatisch
Dienst entfernenKonfiguration bearbeiten, neu ladenContainer stoppen

Für Docker-Deployments ist Traefik die moderne Wahl. Einmal einrichten, Dienste für immer mit Labels hinzufügen. Für einen vollständigen Deployment-Workflow kombinieren Sie es mit Docker Compose.

~/traefik-docker-guide/get-started

Ready to get started?

Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.

Get Hostinger VPS — $4.99/mo

// up to 75% off + free domain included

// related topics

traefik docker traefik einrichten docker reverse proxy traefik ssl container routing

// related guides

Andrius Putna

Andrius Putna

I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.

// last updated: February 8, 2026. Disclosure: This article may contain affiliate links.