Was du brauchst
Du brauchst einen Server mit Docker und Docker Compose. Für HTTPS sollte eine Domain per DNS auf die Server-IP zeigen, zum Beispiel demo.example.com.
1. Projektordner anlegen
mkdir traefik-sample
cd traefik-sample
mkdir letsencrypt 2. Docker Compose Datei erstellen
Die Beispielseite nutzt den offiziellen traefik/whoami Container. Er zeigt Request-Informationen an und ist ideal, um Traefik-Routing zu testen.
services:
traefik:
image: traefik:v3.0
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=admin@example.com
- --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.letsencrypt.acme.httpchallenge=true
- --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
restart: unless-stopped
sample:
image: traefik/whoami:v1.10
labels:
- traefik.enable=true
- traefik.http.routers.sample.rule=Host(`demo.example.com`)
- traefik.http.routers.sample.entrypoints=websecure
- traefik.http.routers.sample.tls.certresolver=letsencrypt
- traefik.http.services.sample.loadbalancer.server.port=80
restart: unless-stopped Ersetze admin@example.com durch deine E-Mail-Adresse und demo.example.com durch deine echte Domain.
3. Starten
docker compose up -d Rufe danach https://demo.example.com auf. Wenn DNS, Firewall und Ports stimmen, siehst du die Whoami-Ausgabe.
4. Häufige Fehler
- Port 80 oder 443 ist bereits durch nginx, Apache oder einen anderen Container belegt.
- Die Domain zeigt noch nicht auf die richtige Server-IP.
- Die Firewall blockiert eingehende HTTP- oder HTTPS-Verbindungen.
- Das Docker Socket Volume fehlt, dadurch erkennt Traefik die Container-Labels nicht.
5. Nächster Schritt
Wenn die Sample Page funktioniert, kannst du den sample Service durch deine echte App ersetzen. Wichtig sind vor allem traefik.enable=true, die Host-Regel und der korrekte interne Container-Port.