Wenn mehrere Dienste auf demselben Server über Port 80 (HTTP) oder 443 (HTTPS) kommunizieren, kann es zu Port-Konflikten kommen, da normalerweise nur ein Dienst einen bestimmten Port zur gleichen Zeit belegen kann. Traefik löst dieses Problem als Reverse-Proxy und Load-Balancer.
Traefik leitet alle eingehenden Anfragen auf Port 80 oder 443 an die richtigen Dienste weiter. Dies geschieht anhand von konfigurierten Regeln, die das Routing bestimmen. So wird sichergestellt, dass jeder Dienst erreichbar ist, ohne dass Port-Konflikte entstehen. Nutze Traefik für eine effiziente und reibungslose Kommunikation der Webdienste.
In wie weit unterscheidet sich diese zu der bisherigen vorhandenen Anleitung?
- Die bisherige Anleitung ist etwas gealtert.
- Es gab viele wichtige Kommentare, Fragen und Anregungen – vielen Dank dafür!
- Traefik Major Release Version 3
Diese Anleitung ist nicht mehr die aktuelle und WIRD NICHT MEHR GEPFLEGT. Hier geht’s zur neuen Anleitung:
https://stage.goneuland.de/traefik-ab-v3-6-mit-crowdsec-installieren-und-konfigurieren/
Versionierung
| Datum | Änderung |
|---|---|
| Hinweis | Um die Docker-API-Problematik zu umgehen, kann in der Datei/opt/containers/traefik-crowdsec-stack/.env die VariableSERVICES_TRAEFIK_IMAGE_VERSION=3.6ergänzt werden. Diese Einstellung überschreibt die in compose/traefik.yml definierte Standard-Image-Version von Traefik. |
| 06.12.2025 | Kapitel 7.2.: SERVICES_TRAEFIK_IMAGE_VERSION in traefik.yml auf aktuellen Stand (3.6) gebracht. |
| 12.04.2025 | Kapitel 7.4.3.: In einzelne Middlewares aufgeschlüsselt und Header security um fehlenden Punkte erweitert. |
| 08.04.2025 | Kapitel 7.2.: Entfernen von default@file und Bouncer-Tausch default@file entfernt, da stets automatisch zugewiesen. Bouncer durch gepflegten Fork von FreifunkMUC ersetzt. |
| 07.04.2025 | Kapitel 7.2.: Elementare Änderungen im docker-socket-proxy von linuxserver.io wodurch der Healthcheck fehlschlägt. |
| 24.03.2025 | Kapitel 7.2.: Schreibfehler korrigiert (@nicklas) Kapitel 7.4.6.: Schreibfehler korrigiert (@nicklas) Kapitel 7.5.1.: Hinweis zu Debian 12 hinzugefügt (@christian) |
| 02.02.2025 | Kapitel 7.2: Fehler in der Compose von Traefik behoben (@thedj) / Traefik-Version auf 3.3 angepasst. |
| 10.10.2024 | Kapitel 7.3.1.: Hinweis erweitert (@steje) Kapitel 7.2. & Kapitel 7.3.2.: Anbindung von CrowdSec an den Docker-Socket-Proxy / Github aktualisiert |
| 09.10.2024 | Kapitel 7.5.1. & Kapitel 8.1.: Um Hinweis ergänzt (@Dearmon) |
| 07.10.2024 | Initialer Release |
WICHTIG!
Diese Anleitung nimmt keine Rücksicht auf die alte Anleitung. Ich werde schauen, dass ich eine gesonderte Anleitung für den Umstieg schreibe. Grundsätzlich ist es möglich in dem man alle Docker Container und Netzwerke herunterfährt dann diese Anleitung durchläuft und die Container nach und nach wieder hochfährt. Zu beachten gilt an dieser Stelle dann nur ein kleiner Unterschied in Angabe des Host in den Labels:
traefik.http.routers.nginx-mailcow-secure.rule: "Host(`mail.euredomain.de`) || Host(`autodiscover.euredomain.de`) || Host(`autoconfig.euredomain.de`) || Host(`mta-sts.euredomain.de`) || Host(`imap.euredomain.de`) || Host(`pop3.euredomain.de`) || Host(`smtp.euredomain.de`)"
Code-Sprache: JavaScript (javascript)
traefik.http.routers.nginx-mailcow-secure.rule: Host(`mail.euredomain.de`,`autodiscover.euredomain.de`,`autoconfig.euredomain.de`,`mta-sts.euredomain.de`,`imap.euredomain.de`,`pop3.euredomain.de`,`smtp.euredomain.de`)
Code-Sprache: CSS (css)
0. Testing
Ich werde versuchen, diese Anleitung so aktuell wie möglich zu halten. Die Kompatibilität der Anleitung und der dazugehörigen Konfigurationen kann im zugehörigen GitHub-Repository eingesehen werden. Ich empfehle, das GitHub-Repository nur dann zu verwenden, wenn du diese Anleitung bereits mehrfach durchgearbeitet hast oder generell ein erfahrener Anwender im Bereich Server- und Docker-Administration bist.
Repository-Link: https://github.com/psycho0verload/traefik-crowdsec-stack
1. Zielsetzung
- Traefik v3 installieren und konfigurieren
- Crowdsec installieren und konfigurieren
- Traefik Services via CrowdSec sichern
- Einzelner Stack
- Wie wir unsere Services mit Traefik verfügbar machen

2. Voraussetzung
Um die Installation und Konfiguration von Traefik v3 und CrowdSec durchzuführen, müssen die folgenden Systemanforderungen erfüllt sein:
- Ubuntu 24.04 LTS – “Noble” oder Debian 12 LTS – “Bookworm”
- Docker version 27.x
- Docker Compose version v2.28.x
root-Rechte auf dem Zielsystem
2.1. Hinweis
Diese Anleitung basiert auf meiner persönlichen Testumgebung, in der ich hauptsächlich mit der aktuellen Ubuntu-Version arbeite. Dennoch werde ich den gesamten Prozess auch auf der neuesten Debian-Version testen und bereitstellen.
Es ist möglich, dass die Anleitung auch rückwärtskompatibel zu älteren Versionen von Ubuntu und Debian ist. Dies werde ich jedoch weder testen noch sicherstellen.
Mir ist bekannt, dass es inzwischen ein CrowdSec-Plugin für Traefik gibt, allerdings möchte ich alle Möglichkeiten von CrowdSec in meinen Umgebungen voll ausschöpfen.
Wichtiger Hinweis:
ALLE Befehle werden als root-User ausgeführt!


Moin Moin,
ist geplant vom traefik-crowdsec-bouncer auf das neue traefik-crowdsec Plugin zu wechseln ? (https://plugins.traefik.io/plugins/6335346ca4caa9ddeffda116/crowdsec-bouncer-traefik-plugin)
Ich werde mich auch die Tage mal dort einlesen 😀
Hallo. Super Anleitung. Ich starte nun mal, um meine bestehende, nach der alten Anleitung, erstellte Traefik/Crowdsec Installation anzupassen (inkl. Mailcow 10 Projekte, WordPress, Portainer, Nextcloud etc.). Nach meinem Verständnis muss ich “Traefik-Crowdsec-Stack” in erster Linie total neu erstellen. Die übrigen Projekte kann ich danach wieder in Betrieb nehmen mit den entsprechenden Anpassungen in der docker-compose.yml resp. zusätzlich der override-Datei (Mailcow) und alte (teilweise unnötige) Cronjobs anpasse. Dafür sollte die gesamte Traefik-Crowdsec-Stack gelöscht werden und danach nach der neuen Anleitung aufgesetzt werden. Dabei werden ja auch alle bestehenden Zertifikate gelöscht (acme_letsencrypt.json) und beim neuen Start des jeweiligen alten, angepassten docker-compose Projekt neu erstellt. Sind noch weitere Stolpersteine (z.Bsp. Crowdsec Bouncer Firewall etc.) vorhanden, welche vor der neuen Traefik V3 Installation deinstalliert/gelöscht werden sollten? Danke für kurze Rückmeldung.
Hallo,
TRAEFIK V2 habe ich bereits erfolgreich eingesetzt nach entsprechender Anleitung.
Nun habe ich TRAEFIK V3 nach dieser Anleitung aufgesetzt, das kann aber nicht funktionieren: Ich benötige traefik (und später die folgenden docker-Installationen für wiki u.a.) nur in einem internen Netz, wo Let’s Encrypt nicht funktioniert.
Wie/Wo muss ich Anpassungen vornehmen, und traefik nutzen zu können?
Danke für die super Anleitung! Ich würde gerne, wie bei der „alten“ Anleitung, das Dashboard mit Authelia absichern. Hat das schon jemand zum Laufen gebracht? Oder, noch besser: Gibt es eine OIDC-Integration für den Zugriff auf das Dashboard?
Hi, erstmal vielen Dank für die ausführliche Anleitung
psycho0verload .
Ein Frage habe ich und vielleicht kann mir die hier jemand beantworten.
Meine Domains habe ich alle bei Cloudflare liegen. Beim neu einrichten mit Traefik 3 ist mir jetzt aufgefallen, das die Domain mit aktiviertem Proxy Modus bei Cloudflare nicht erreichbar ist.
Laut Traefik Log gibt es einen Fehler mit dem TLS
{"level":"error","providerName":"tls_resolver.acme","acmeCA":"https://acme-v02.api.letsencrypt.org/directory","providerName":"tls_resolver.acme","ACME CA":"https://acme-v02.api.letsencrypt.org/directory","routerName":"traefik-dashboad@docker","rule":"HOST(proxy.domain.tld)","error":"unable to generate a certificate for the domains [proxy.domain.tld]: error: one or more domains had a problem:\n[proxy.domain.tld] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Cannot negotiate ALPN protocol \"acme-tls/1\" for tls-alpn-01 challenge\n","domains":["proxy.domain.tld"],"time":"2024-10-24T09:07:49+02:00","message":"Unable to obtain ACME certificate for domains"}Würde den schon sehr gerne weiter nutzen allein der DDos Schutz ist es wohl wert.
Ich hoffe mal das es nur ein Config Problem ist und jemand hier den entsprechenden Tip für die Lösung geben kann.
Danke
Ich hab mich jetzt doch ran gewagt und alles manuell von neuem gemacht. Im Prinzip klappt alles. Aktuell läuft mein Portainer halt noch nicht über den Socket-Proxy, aber das kann man ja noch nachjustieren.
Was aber nicht funktioniert ist das Updaten von Crowdsec. Im Crontab hab ich folgendes drin stehen (wie in der Anleitung): docker compose -f /opt/containers/traefik-crowdsec-stack/docker-compose.yml restart crowdsec
Der Container mag aber nicht neu starten – der Fehler lautet: env file /root/data/socket-proxy/.env not found: stat /root/data/socket-proxy/.env: no such file or directory
Komme aktuell nicht drauf wo es hakt. Bin über Tipps dankbar! 🙂
http.middlewares.default.yml
und in der Config von traefik selber
default@file
geht Traefik dann einfach durch alle Dateien ? oder wie ist das zu sehen.
versuche gerade meine gesamte Config auf die neue zu übertragen, aber aktuell sehe ich nicht durch weil ich überall irgendwie was geändert habe
Eine Frage
psycho0verload, da ich mich gerade in der Vorbereitung zum Upgrade befinde:
Aktuell habe ich in meiner dynamic-conf.yml einen weiteren Router eingerichtet, der auf mein NAS verweist, um auch dieses via Traefik und Crowdsec abzusichern.
Erstelle ich hierfür eine weitere YML-Datei, die ich in die Docker compose integriere oder packe ich das in eine bestehende dazu?
Da wir die ursprüngliche dynamic conf nun auf mehrere Teile aufgeteilt haben, ist mir das nicht ganz klar.
routers:
qnap:
service: qnap
rule: “Host(
abc.de)”entryPoints:
– websecure
tls:
certResolver: http_resolver
services:
qnap:
loadBalancer:
servers:
– url: http://192.168.000.00:8080
nextcloud:
loadBalancer:
servers:
Hallo nochmal,
nehmt mir auch folgende Frage nicht übel, ich lerne mich noch in das ganze Thema ein. Kann ich eigentlich auch eine Traefik-Instanz für mehrere Webserver nutzen, oder muss ich auf jedem Server eine eigene Instanz aufsetzen?
Danke und viele Grüße
Moin,
mal eine Frage zu Crowdsec in diesem Stack. Im Moment trudeln bei mir ständig Nachrichten ein, das jemand aus dem bösen Internet meinen mailcow Server inspiziert. Das ist ja nichts ungewöhnliches. Dafür gibt es ja den den Crowdsec. mittels
werden die bösen IPs auch angezeigt, jedoch bekomme ich zur Zeit gerade wirklich viele Wiederholungstäter mit der gleichen IP (klar, die werden wahrscheinlich verschleiert) jetzt wollte ich mittels iptables -L -v -n mal nachsehen, ob die auch wirklich auf dem System gesperrt sind. Leider zeigt mir diese keinen einzige von den gesperrten IP im System an? Es werden mir nur die manuell gesperrten IP in der mailcow Konfiguration angezeigt (Chain MAILCOW). Wie kann ich nun feststellen ob das System richtig arbeiten und meine Installation wirklich durch Crowdsec geschützt ist?