Traefik als Reverse Proxy mit Docker einrichten

Wer mehrere Docker-Dienste unter eigenen Domains erreichbar machen will, braucht einen Reverse Proxy. Traefik ist dafür besonders beliebt, weil er neue Container automatisch erkennt und HTTPS-Zertifikate von selbst besorgt. In dieser ausführlichen Anleitung richtest du Traefik als Reverse Proxy mit Docker ein – inklusive automatischer Service-Erkennung über Labels und kostenlosem HTTPS per Let’s Encrypt.

Was ist Traefik – und warum eignet es sich für Docker?

Traefik ist ein moderner, cloud-nativer Reverse Proxy und Load Balancer. Sein größter Vorteil gegenüber klassischen Lösungen: Er liest die Docker-Labels deiner Container aus und konfiguriert Routen dadurch dynamisch zur Laufzeit. Startest du einen neuen Container mit den passenden Labels, ist er sofort erreichbar – ohne dass du eine Konfigurationsdatei anfassen musst. Das macht Traefik ideal für Setups, die häufig wachsen. Die Docker-Grundlagen dazu findest du in Docker Compose installieren.


Voraussetzungen

  • Docker und Docker Compose auf dem Server.
  • Eine Domain, deren DNS auf deinen Server zeigt.
  • Offene Ports 80 und 443 in der Firewall, damit Let’s Encrypt Zertifikate ausstellen kann.

Schritt 1: Das Traefik-Grundgerüst per Compose

Lege eine docker-compose.yml an. Traefik läuft selbst als Container und bekommt Zugriff auf den Docker-Socket, um andere Container zu erkennen:

services:
  traefik:
    image: traefik:v3.1
    container_name: traefik
    restart: unless-stopped
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "[email protected]"
      - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
      - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt

Die Option exposedbydefault=false ist ein wichtiger Sicherheitsschalter: Nur Container, die du ausdrücklich mit Labels markierst, werden veröffentlicht.


Schritt 2: Einen Dienst über Labels anbinden

Jetzt kommt der Clou: Einen beliebigen Container machst du erreichbar, indem du ihm die passenden Traefik-Labels gibst. Beispiel für einen einfachen Webdienst:

services:
  whoami:
    image: traefik/whoami
    container_name: whoami
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`app.example.de`)"
      - "traefik.http.routers.whoami.entrypoints=websecure"
      - "traefik.http.routers.whoami.tls.certresolver=le"

Traefik erkennt den Container, richtet die Route app.example.de ein und besorgt automatisch ein gültiges HTTPS-Zertifikat. Mehr zur Container-Kommunikation erklärt Docker Netzwerke erklärt.


Schritt 3: HTTP automatisch auf HTTPS umleiten

Damit niemand versehentlich unverschlüsselt zugreift, leitest du den gesamten HTTP-Verkehr auf HTTPS um. Ergänze dazu im command-Block von Traefik:

- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"

Traefik im Vergleich zu anderen Reverse Proxys

Traefik ist nicht die einzige Option. Welche Lösung passt, hängt vom Anspruch ab:

LösungStärkeIdeal für
TraefikAutomatische Erkennung per LabelsDynamische Docker-Setups
Nginx Proxy ManagerGrafische OberflächeEinsteiger, wenige Dienste
CaddyMinimale TextkonfigurationSchlanke, statische Setups

Wer lieber eine grafische Oberfläche nutzt, greift zum Nginx Proxy Manager. Für minimale Konfiguration ist Caddy eine Alternative.


Das Traefik-Dashboard

Traefik bringt ein Web-Dashboard mit, das alle erkannten Router und Services anzeigt – praktisch zur Fehlersuche. Aktiviere es mit --api.dashboard=true und sichere es unbedingt mit einer Authentifizierung ab, bevor du es öffentlich erreichbar machst. Ein ungeschütztes Dashboard verrät Angreifern zu viel über deine Infrastruktur.


Middlewares: Zugriffsschutz und mehr

Ein starkes Feature von Traefik sind sogenannte Middlewares. Sie hängen sich zwischen Anfrage und Dienst und erledigen Zusatzaufgaben – ebenfalls per Label konfiguriert. Besonders nützlich sind:

  • Basic Auth: schützt einen Dienst mit Benutzername und Passwort, bevor er überhaupt erreichbar ist.
  • Rate Limiting: begrenzt die Anfragen pro Zeitraum und bremst so einfache Angriffe aus.
  • IP-Whitelist: lässt nur bestimmte Quell-IPs zu.
  • Security Headers: setzt sinnvolle HTTP-Header wie HSTS automatisch.

So schützt du etwa ein sensibles Admin-Panel mit wenigen Labels, ohne den Dienst selbst anzupassen. Für einen zusätzlichen Schutz auf Netzwerkebene sorgt eine UFW-Firewall.


Häufige Fragen zu Traefik

Warum bekomme ich kein HTTPS-Zertifikat?

Die häufigsten Ursachen: Die Domain zeigt nicht auf den Server, Port 80 ist nicht erreichbar (Let’s Encrypt braucht ihn für die HTTP-Challenge) oder die E-Mail-Adresse fehlt. Prüfe DNS und Firewall zuerst.

Muss ich Traefik neu starten, wenn ich einen Dienst hinzufüge?

Nein. Genau das ist der Vorteil: Traefik erkennt neue Container mit passenden Labels automatisch und richtet die Route zur Laufzeit ein – ganz ohne Neustart.

Ist Traefik für Anfänger geeignet?

Die Label-Logik hat eine gewisse Lernkurve. Wer nur wenige Dienste betreibt und eine Oberfläche bevorzugt, startet leichter mit dem Nginx Proxy Manager und wechselt später zu Traefik.


Fazit

Traefik nimmt dir bei wachsenden Docker-Umgebungen die meiste Arbeit ab: Container erkennen, Routen anlegen, Zertifikate verwalten – alles automatisch über Labels. Nach dem einmaligen Aufsetzen fügst du neue Dienste nur noch per Label hinzu. Achte auf die Absicherung des Dashboards und offene Ports 80/443, dann steht deinem selbst gehosteten Setup nichts im Weg. Passend dazu: Container automatisch aktualisieren.

Siehe auch  Portainer installieren: Docker per Weboberfläche verwalten
Nach oben scrollen