78 Dokumentationen verfügbar

Wissensdatenbank

Traefik Reverse Proxy Docker

Zuletzt aktualisiert: 11.01.2026 um 11:53 Uhr

Traefik: Moderner Reverse Proxy für Docker

Traefik ist ein Cloud-nativer Reverse Proxy, der sich automatisch mit Docker integriert. Neue Container werden automatisch erkannt, SSL-Zertifikate via Let's Encrypt generiert.

Vorteile von Traefik

  • Auto-Discovery: Erkennt Docker-Container automatisch
  • Auto-SSL: Let's Encrypt Zertifikate automatisch
  • Dashboard: Web-UI für Monitoring
  • Modern: HTTP/2, gRPC, WebSocket Support

Basis-Setup mit Docker Compose

# docker-compose.yml
version: '3.8'

services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    restart: unless-stopped
    command:
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.letsencrypt.acme.email=admin@example.com"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - letsencrypt:/letsencrypt
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`traefik.example.com`)"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
      - "traefik.http.routers.dashboard.middlewares=auth"
      - "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$..."

volumes:
  letsencrypt:

Container mit Traefik verbinden

services:
  myapp:
    image: nginx
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.myapp.rule=Host(`app.example.com`)"
      - "traefik.http.routers.myapp.entrypoints=websecure"
      - "traefik.http.routers.myapp.tls.certresolver=letsencrypt"
      - "traefik.http.services.myapp.loadbalancer.server.port=80"

HTTP zu HTTPS Redirect

labels:
  - "traefik.http.routers.myapp-http.rule=Host(`app.example.com`)"
  - "traefik.http.routers.myapp-http.entrypoints=web"
  - "traefik.http.routers.myapp-http.middlewares=redirect-https"
  - "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https"

Mehrere Container

version: '3.8'

services:
  traefik:
    # ... (wie oben)

  wordpress:
    image: wordpress
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wordpress.rule=Host(`blog.example.com`)"
      - "traefik.http.routers.wordpress.tls.certresolver=letsencrypt"

  nextcloud:
    image: nextcloud
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud.rule=Host(`cloud.example.com`)"
      - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"

Passwort für BasicAuth generieren

# htpasswd installieren
sudo apt install apache2-utils -y

# Passwort generieren ($ muss escaped werden: $$)
echo $(htpasswd -nB admin) | sed -e s/\\$/\\$\\$/g

Weitere Hilfe