Traefik als Docker Reverse Proxy mit SSL einrichten
Linux Featuredguide

Traefik als Docker Reverse Proxy mit SSL einrichten

Automatisches SSL, dynamisches Routing per Labels

S
SeeColors IT
25. Juli 20254 Min. Lesezeit

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.

Als IT-Ingenieur aus Heidelberg übernehme ich Linux-Administration für Unternehmen in der Metropolregion Rhein-Neckar. Kontakt aufnehmen.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Passende Tools & Services

Aus der Praxis für die Praxis — die Werkzeuge und Leistungen von SeeColors IT.

Projektgespräch vereinbaren

Verwandte Artikel