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.
Update zur Traefik 3.7 Anleitung mit CrowdSec 🚀
Da mich in letzter Zeit immer mehr Fragen erreichen und auch @Christian immer mal wieder fragt, wann die Anleitung auf Traefik 3.7 aktualisiert wird, möchte ich euch ein kurzes Update geben.
Die neue Anleitung ist bereits geschrieben und befindet sich aktuell in der Testphase. 🔧
Allerdings ist sie im Vergleich zur bisherigen Version noch einmal deutlich umfangreicher geworden. Neben der Aktualisierung auf Traefik 3.7 habe ich weitere Anpassungen und Verbesserungen vorgenommen. Das macht die abschließenden Tests etwas aufwendiger, da ich sicherstellen möchte, dass am Ende alles sauber funktioniert und die Anleitung auch für Neueinsteiger nachvollziehbar bleibt.
Für alle, die bereits die bestehende Anleitung mit Traefik 3.6 nutzen: Grundsätzlich könnt ihr die Traefik-Version bereits über die entsprechende Variable in der .env auf 3.7 umstellen. Beachtet dabei bitte die Änderungen und Warnmeldungen der neuen Version.
Ich möchte die aktualisierte Anleitung erst veröffentlichen, wenn ich die gesamte Konfiguration ausreichend getestet habe. Einen konkreten Veröffentlichungstermin kann ich deshalb noch nicht nennen.
Vielen Dank für eure Geduld, euer Feedback und die zahlreichen Rückmeldungen! ❤️
Die Aktualisierung kommt auf jeden Fall! 🚀

Vielen Dank für die neue Anleitung. Ich habe eine kleine Frage – ich glaub ich steh da irgendwo auf dem Schlauch. Seit ich auf das neue Setup umgestellt habe, bekomme ich der Crowdsec Konsole immer den Hinweis, dass 1 Remedation Component inactiv ist (vgl. Bild).
Wenn ich jedoch die Metrics eingebe, scheint dieser Firewall sehr wohl in Betrieb – auch die Statusüberprüfung von Crowdsec-Firewall ergibt, dass dieser aktiv ist… (sowohl in der Bouncers List unter derselbek IP wie auch im systemctl “active and running”.
Hat jemand eine Idee? Ist dies eine falsche Angabe in der Konsole? Installiert ist der firewall-nftables-firewall-bouncer…. oder alternativ werde ich den Server neu aufsetzen….
an Christian: ist das 2 Minuten Script zwischenzeitlich aktuell? Ist evtl. noch ein alter Firewall aus der”alten” Konfiguration/Anleitung aktiv? Ich habe nach der Schnellanleitung umgestellt……
Nachtrag: Habe den Fehler gefunden…. Habe die Umstellung (einfache Variante) nicht sauber gemacht…. Dadurch war immer noch der alte Firewall-Bouncer auf Ebene der IP der VM aktiv (nicht in App). Dadurch hatte ich 2 Bouncer…. Dies ist durch zuviel “copy-paste” bei den middlewares etc. bei der Umstellung passiert…. Habe nun die Umstellung nochmals genau nach Anleitung durchgeführt und alles paletti.
Erst einmal vielen Dank für die Arbeit, die Du hier rein gesteckt hast.
Ich habe mal alles durchgelesen und finde die Änderungen grundsätzlich gut.
Als Migrationspfad hast Du ja geschrieben, am besten einmal neu aufsetzen. Das wäre die sauberste Lösung.
Ich habe allerdings noch ein Setup mit Traefik V2.X. Frei nach dem Motto “Never change a running system…” Gilt Deine Aussage auch hier? Einmal neu installieren und sauber hochfahren?
Oder muss ich noch Anpassungen in der Konfiguration der einzelnen Dienste machen? Wenn ja, wie sähen die dann aus?
Herzlichen Dank für dieses HowTo Crowdsec+Traefik. Es hilft mir sehr!
Beim abarbeiten ist mir gerade aufgefallen, dass
${SERVICES_TRAEFIK_NETWORKS_SOCKET_PROXY_IPV4}
zwei mal verwendet wird.
—
In der crowdsec.yml
${SERVICES_TRAEFIK_NETWORKS_SOCKET_PROXY_IPV4:-172.31.255.252}
—
In der traefik.yml
${SERVICES_TRAEFIK_NETWORKS_SOCKET_PROXY_IPV4:-172.31.255.253}
—
Der Syntax nach, vermute ich, dass es in der crowdsec.yml entsprechend so lauten sollte:
${SERVICES_CROWDSEC_NETWORKS_SOCKET_PROXY_IPV4:-172.31.255.252}
${SERVICES_CROWDSEC_NETWORKS_SOCKET_PROXY_IPV6:-fd00:1:be:a:7001:0:3e:8ffe}
“customResponseHeaders – Content-Security-Policy: “frame-ancestors ‘self’;”” stört in meinem setup die Verbindung zwischen Nextcloud und Collabora.
Aber unter Traefik 3.6 gibt es noch weitere Stolpersteine “encodedcharacters” ist das Stichwort.
Vielen lieben Dank ihr zwei, die Anleitung hat super funktioniert!
Zwei kleine Anmerkungen: Der Link am Ende von 8.1 führt noch zu der alten Anleitung und in 7.3.1 würde ich mir eine Klarstellung wünschen, dass mit “SERVICES_TRAEFIK_LABELS_TRAEFIK_HOST” die DASHBOARD domain und nicht die “Mutter-Domain” des Servers gemeint ist. 😉
Weiterhin hatte ich mit meiner alten Installation häufiger mal false-bans, wenn ich meinen Browser offen gelassen habe und beim erneuten Aufrufen eines Services/Seite ohne aktiven Session Cookie. Crowdsec hat diese Szenarien dann als brute-login oder ähnliches (http-probing oder so…) erkannt.
Gibt es hier auch andere, die ähnlichen Problemen begegnet sind und eventuell Lösungsansätze teilen können?
Erst einmal an der Stelle ein riesiges Dankeschön für die top Anleitung!
Ich hätte dazu eine Frage in die Runde bezüglich der Auswahl des richtigen Firewall Bouncers für Crowdsec unter Debian 13.
Ich nutze UFW, habe aber durch Debian 13 vermutlich die Default-FW Implementierung NFT aktiv.
Auch scheint (laut dem Web) inzwischen UFW auch mit NFT zu funktionieren.
Welcher Bouncer ist in dem Fall der Richtige?
Es müsste eigentlich UFW+NFT sein, aber diese Auswahl besteht nicht..?
Wer ein Wildcard-Zertifikat erstellen möchte (hier am Beispiel von Cloudflare) muss folgendes abändern bzw. hinzufügen:
.
.
.
In /opt/containers/traefik-crowdsec-stack/.env hinzufügen:
CF_DNS_API_TOKEN=DeinCloudflareAPIToken
.
.
.
In /opt/containers/traefik-crowdsec-stack/compose/traefik.yml abändern (siehe Hinweise im Code).
services:
traefik:
container_name: ${SERVICES_TRAEFIK_CONTAINER_NAME:-traefik}
depends_on:
socket-proxy:
condition: service_healthy
env_file: ${ABSOLUTE_PATH}/data/traefik/.env
environment: ##### Hinzufügen
– CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN} ##### Hinzufügen
…
…
…
restart: unless-stopped
security_opt:
– no-new-privileges:true
volumes:
– /etc/localtime:/etc/localtime:ro
– ${ABSOLUTE_PATH}/data/traefik/traefik.yml:/etc/traefik/traefik.yml
– ${ABSOLUTE_PATH}/data/traefik/.htpasswd:/etc/traefik/.htpasswd
##### Folgendes Umbenennen / Alle anderen .json-Zeilen löschen#####
– ${ABSOLUTE_PATH}/data/traefik/certs/acme.json:/etc/traefik/acme.json
##### Ende #####
– ${ABSOLUTE_PATH}/data/traefik/dynamic_conf:/etc/traefik/dynamic_conf:ro
– /var/log/traefik/:/var/log/traefik/
.
.
.
Im Ordner ‘/opt/containers/traefik-crowdsec-stack/data/traefik/certs‘ eine ‘acme.json‘ – Datei mit chmod 0600(!) erstellen, alle anderen löschen. (Oder eine bestehende in ‘acme.json‘ umbenennen)
.
.
.
In /opt/containers/traefik-crowdsec-stack/data/traefik/dynamic_conf/http.routers.traefik-dashboard.yml mit folgenden Code austauschen:
http:
routers:
traefik-dashboard:
entrypoints: websecure
middlewares: traefik-dashboard-auth@file
rule: {{ env “SERVICES_TRAEFIK_LABELS_TRAEFIK_HOST” }}
service: api@internal
tls:
certresolver: cloudflare
domains:
– main: beispiel.de
sans:
– “*.beispiel.de”
.
.
.
In /opt/containers/traefik-crowdsec-stack/data/traefik/traefik.yml NUR den Abschnitt ‘certificatesResolvers’ mit folgendem Code austauschen:
certificatesResolvers:
cloudflare:
acme:
email: deine@email.de
storage: /etc/traefik/acme.json
dnsChallenge:
provider: cloudflare
propagation:
delayBeforeChecks: 10
resolvers:
– “1.1.1.1:53”
– “8.8.8.8:53”
👌
Ich habe bei mir die unter Kapitel 13 angeschnittene DNSchallenge mit Cloudflare implementiert und könnte hier eine entsprechende Anleitung contributen. In welcher Form wäre das sinnvoll/möglich?
Be mir läuft nun alles mit dem neuen Plugin
allerdings habe ich nun das Problem das in der Traefik und crowdsec log jeweils immer die IP vom CDN drin stehen also Cloudflare und ich bekomme ums verrecken es nicht hin das bei crowdsec die orign (client) ip ankommt …
Ich habe folgende fehlermeldung in den logs:
{“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-dashboard@docker”,”rule”:”HOST(
traefik.ancienne-forge.eu)”,”error”:”unable to generate a certificate for the domains [traefik.ancienne-forge.eu]: error: one or more domains had a problem:\n[traefik.ancienne-forge.eu] invalid authorization: acme: error: 400 :: urn:ietf:params:acme:error:malformed :: Unable to contact \”traefik.ancienne-forge.eu\” at \”2001:16b8:a79a:ec00:cbd8:8d5c:bcfe:58dd\”, no IPv4 addresses to try as fallback\n”,”domains”:[“traefik.ancienne-forge.eu”],”time”:”2026-01-07T08:00:21+01:00″,”message”:”Unable to obtain ACME certificate for domains”}Für mich unverständlicherweise ist die adresse
traefik.ancienne-forge.eu
über
ping -c3 -6 traefik.ancienne-forge.eu
erreichbar. Ein
nslookup traefik.ancienne-forge.eu
ergibt:
Server: 192.168.1.95
Address: 192.168.1.95#53
Non-authoritative answer:
Name: traefik.ancienne-forge.eu
Address: 2001:16b8:a79a:ec00:cbd8:8d5c:bcfe:58dd
Warum funktioniert der aufruf von
https://traefik.ancienne-forge.eu
dennoch nicht?
Übrigens: auf 192.168.1.95 läuft ein pihole.
Vielen dank für die hilfe.