🏠 Zurück zur Hauptdokumentation | 🇬🇧 English Version
# Wechsle ins gewünschte Verzeichnis
cd /opt # oder dein bevorzugter Pfad
# Clone das Repository
git clone https://github.com/csaeum/DockerStackTraefik.git
cd DockerStackTraefik# Kopiere .env.example zu .env
cp .env.example .env
# Bearbeite die .env Datei
nano .envPasse mindestens diese Variablen in der .env an:
# Projekt-Name (für Container-Namen)
COMPOSE_PROJECT_NAME=traefik
# Timezone
TIMEZONE=Europe/Berlin
# Domain für Traefik Dashboard
HOSTRULE=Host(`traefik.deine-domain.de`)
# Email für Let's Encrypt
LETSENCRYPT_EMAIL=deine-email@example.com
# Netzwerk-Name
PROXY_NETWORK=traefik_proxy_network
# Restart-Policy
RESTART=unless-stoppedWichtig: Ändere das Standard-Passwort!
# Generiere einen Passwort-Hash
docker run --rm httpd:alpine htpasswd -nbB traefik-admin "DEIN_SICHERES_PASSWORT"
# Output: traefik-admin:$apr1$xyz123...Trage den Hash in die .env ein:
# WICHTIG: $ muss als $$ escaped werden!
DASHBOARD_USER=traefik-admin
DASHBOARD_PASSWORD_HASH=$$apr1$$xyz123$$...Beispiel:
# Generiert:
traefik-admin:$apr1$u5m91va6$jYOH.sK1gKMaLmWlNxA7m/
# In .env eintragen:
DASHBOARD_PASSWORD_HASH=$$apr1$$u5m91va6$$jYOH.sK1gKMaLmWlNxA7m/# Erstelle das externe Netzwerk für alle Services
docker network create traefik_proxy_networkHinweis: Dieses Netzwerk wird von allen Services geteilt, die hinter Traefik laufen sollen.
# Erstelle notwendige Verzeichnisse
mkdir -p logs volumes
# Setze Berechtigungen
chmod 700 volumes # Nur Root-Zugriff
chmod 755 logs # Lesbar für Logs# Prüfe die docker-compose.yaml Syntax
docker compose config
# Sollte keine Fehler zeigen und die finale Config ausgeben# Starte Traefik
docker compose up -d
# Logs anzeigen
docker compose logs -f traefikWarte auf:
✅ Server listening on :80
✅ Server listening on :443 (TCP/HTTP/2)
✅ Server listening on :443 (UDP/HTTP/3)
✅ Certificate obtained for domain [traefik.deine-domain.de]
# Prüfe ob Container läuft
docker compose ps
# Sollte zeigen: traefik (running)# HTTP → HTTPS Redirect testen
curl -I http://traefik.deine-domain.de
# Expect: 301 Moved Permanently
# Location: https://traefik.deine-domain.de/
# Dashboard aufrufen (mit BasicAuth)
curl -I https://traefik.deine-domain.de/dashboard/ \
-u traefik-admin:DEIN_PASSWORT
# Expect: 200 OK# Prüfe Let's Encrypt Zertifikat
openssl s_client -connect traefik.deine-domain.de:443 -servername traefik.deine-domain.de < /dev/null 2>/dev/null | openssl x509 -noout -text | grep -E 'Issuer|Subject|Not After'
# Sollte zeigen:
# Issuer: CN = R3 (Let's Encrypt)
# Subject: CN = traefik.deine-domain.de
# Not After: (Ablaufdatum in 90 Tagen)# HTTP/3 Support prüfen (benötigt curl mit HTTP/3)
curl -I --http3 https://traefik.deine-domain.de/dashboard/
# Oder im Browser:
# Chrome DevTools → Network → Protocol sollte "h3" zeigen# Prüfe Security Headers
curl -I https://traefik.deine-domain.de/dashboard/ \
-u traefik-admin:DEIN_PASSWORT | grep -E 'Strict-Transport-Security|X-Frame-Options|X-Content-Type-Options'
# Sollte zeigen:
# Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
# X-Frame-Options: DENY
# X-Content-Type-Options: nosniff# Logs prüfen
docker compose logs traefik
# Häufige Fehler:
# - Port 80/443 bereits belegt → sudo netstat -tulpn | grep -E ':80|:443'
# - .env Fehler → docker compose config
# - Netzwerk fehlt → docker network create traefik_proxy_network# Prüfe DNS-Auflösung
dig +short traefik.deine-domain.de
# Prüfe ob Domain erreichbar ist
curl -I http://traefik.deine-domain.de
# Logs für ACME-Fehler prüfen
docker compose logs traefik | grep -i acme
# Häufige Fehler:
# - DNS zeigt nicht auf Server → DNS-Propagation abwarten
# - Firewall blockiert Port 80/443 → Firewall prüfen
# - Rate Limit erreicht → 1 Woche warten oder Staging nutzen# Prüfe Container-Status
docker compose ps
# Prüfe Ports
docker compose port traefik 443
# Prüfe BasicAuth
# WICHTIG: $ muss als $$ escaped sein in .env!
cat .env | grep DASHBOARD_PASSWORD_HASH# Prüfe ob $$ escaped sind
grep DASHBOARD_PASSWORD_HASH .env
# Sollte $$ zeigen, nicht $
# Neu generieren falls nötig
docker run --rm httpd:alpine htpasswd -nbB traefik-admin "NEUES_PASSWORT"
# In .env eintragen ($ → $$)
nano .env
# Container neu starten
docker compose up -d --force-recreateInstallation erfolgreich? Jetzt kannst du:
- Services hinzufügen → Andere Container hinter Traefik schalten
- Konfiguration anpassen → 📝 Konfiguration
- Monitoring einrichten → Prometheus + Grafana
- Mailcow integrieren → Siehe README.md Beispiel 5
# Repository aktualisieren
git pull
# Configs neu laden (automatisch durch watch: true)
# Kein Neustart nötig!
# Bei docker-compose.yaml Änderungen:
docker compose up -d --force-recreate
# Bei Image-Updates:
docker compose pull
docker compose up -dMade with ❤️ by WSC - Web SEO Consulting
Dieses Projekt ist kostenlos und Open Source (GPL-3.0). Wenn es dir geholfen hat, freue ich mich über deine Unterstützung:
🏠 Zurück zur Hauptdokumentation | ➡️ Weiter zur Konfiguration