Traefik mit Docker: Installation, Dashboard & Subdomain-Routing

Traefik ist ein moderner Reverse Proxy, der besonders gut mit Docker zusammenspielt. In dieser Anleitung zeige ich dir, wie du Traefik in wenigen Minuten aufsetzt, das Web-Dashboard aktivierst und eigene Services über Subdomains erreichbar machst.
Voraussetzungen
- Ein Ubuntu-Server mit Docker und Docker Compose
- Eine Domain mit konfigurierbaren DNS-Einträgen (z.B. bei Cloudflare)
- Zugriff auf Port 80 und 443 (HTTP und HTTPS)
1. Traefik per Docker Compose installieren
Erstelle ein neues Verzeichnis auf deinem Server:
mkdir traefik && cd traefik
Erzeuge die Datei docker-compose.yml
:
version: "3.8"
services:
traefik:
image: traefik:v3.3
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./traefik_dynamic.toml:/traefik_dynamic.toml
- ./acme.json:/acme.json
# Beispiel-Service
whoami:
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.deine-domain.de`)"
- "traefik.http.routers.whoami.entrypoints=websecure"
- "traefik.http.routers.whoami.tls=true"
- "traefik.http.routers.whoami.tls.certresolver=letsencrypt"
- "traefik.http.services.whoami.loadbalancer.server.port=8080" #Ggf. Port angeben, auf dem der Service erreichbar ist
2. Traefik-Konfiguration erstellen
Lege die Datei traefik.toml
an:
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.http.redirections.entryPoint]
to = "websecure"
scheme = "https"
[entryPoints.websecure]
address = ":443"
[api]
dashboard = true
[certificatesResolvers.lets-encrypt.acme]
email = "info@tech-insight.de"
storage = "acme.json"
[certificatesResolvers.lets-encrypt.acme.tlsChallenge]
[providers.docker]
watch = true
network = "web"
[providers.file]
filename = "traefik_dynamic.toml"
Dann die Datei traefik_dynamic.toml
mit Middleware für das Dashboard:
[http.middlewares.simpleAuth.basicAuth]
users = [
"<DEIN_BENUTZERNAME>:<DEIN_HASHED_PW>"
]
[http.routers.api]
rule = "Host(`traefik.deine-domain.de`)"
entrypoints = ["websecure"]
middlewares = ["simpleAuth"]
service = "api@internal"
[http.routers.api.tls]
certResolver = "lets-encrypt"
Die Benutzerdaten kannst du wie folgt erzeugen:
# Ggf. installieren: sudo apt-get install apache2-utils
htpasswd -nb DEIN_BENUTZERNAME DEIN_SICHERES_PASSWORT
3. ACME-Datei vorbereiten
touch acme.json
chmod 600 acme.json
4. Traefik starten
docker compose up -d
Nach wenigen Sekunden erreichst du das Dashboard über:
https://traefik.deine-domain.de
5. Weitere Services via Subdomain erreichbar machen
Willst du z. B. einen Node.js-Service über app.deine-domain.de
erreichbar machen, ergänze in dessen docker-compose.yml
:
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`app.deine-domain.de`)"
- "traefik.http.routers.app.entrypoints=websecure"
- "traefik.http.routers.app.tls.certresolver=letsencrypt"
Das war’s! Traefik erkennt deinen Container und macht ihn über die Subdomain öffentlich erreichbar – vollautomatisch mit HTTPS.
Fazit
Du hast jetzt:
- Traefik erfolgreich als Reverse Proxy mit Docker installiert
- Das Dashboard via Subdomain abgesichert
- Eigene Services mit wenigen Labels per Subdomain erreichbar gemacht
Ab hier kannst du mit Middlewares (Redirects, Security, Auth) weitermachen – wie in diesem Artikel beschrieben.