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!


Das aktuelle System läuft bei mir gar nicht. Es kommt immer die Meldung :
ERROR: In file ‘./docker-compose.yml’, services ‘include’ must be a mapping not an array.
Hallo,
grundsätzlich läuft das System bei mir auch. Heute musste ich allerdings Traefik intern in einer “.local” Domain aufsetzen. ACME ist natürlich dann ohne Funktion, da es keine valide TLD ist. Gibts da eine Möglichkeit, dass trotzdem gangbar zu bekommen?
Traefik läuft bei mir mit der aktuellsten Version 3.4.1 ohne Probleme bisher. Hat jemand bereits auch aktualisiert von euch?
Ich bekomme seit ein paar Tagen die Meldung, dass Crowdsec nicht aktuell ist: „A new CrowdSec release is available (v1.6.9). Your version is ‘v1.6.8’. Please update it to use new parsers/scenarios/collections.“ Zum updaten sollte doch, wie beschrieben, ein Neustart des Containers ausreichen? Funktioniert hat es bei mir allerdings nicht. Oder sind die Images einfach nur noch nicht auf dem aktuellen Stand?
Falls jemand Probleme nach einem Update hat und z.B. folgende Fehlermeldungen findet:
Ich habe Kapitel 10.3 wiederholt. Danach bekam ich folgende Fehler:
Das konnte ich beheben indem ich den API-Key “FIREWALL” gelöscht habe und den dann manuell eingetragen habe:
Der Key “XXXXXXX” ist der neue Key der im Schritt 10.3.3 erzeugt wurde.
lg,
Max
Ich würde gerne den Zugriff aus bestimmten Ländern blockieren, bzw. nur aus bestimmten Ländern erlauben. Wie mache ich das am geschicktesten? Wäre für einen Tipp sehr dankbar.
Hallo Zusammen.
Auch ich bin begeistert von dieser Anleitung und dem Aufwand, den sich @psycho0verload hier gemacht hat.
Um die Serverprovisionierung zu automatisieren (basierend auf einem “frischen” Debian 11/12 VPS) habe ich ein Ansible-Projekt geschrieben.
Auf eure Resonanz hierzu würde ich mich freuen:
https://github.com/oberator/ansible_goneuland_traefik_v3
Hi zusammen,
ich habe das Problem, dass ich nach dieser Anleitung alles gemacht habe funktioniert soweit auch alles.
Leider habe ich das Problem wenn ich mit meinem Handy mobil unterwegs bin ich mit der Nextcloud App nicht auf die Daten kommen.
Wenn ich aber mit dem selben Handy über den Browser gehe funktioniert es.
Wenn ich mich mit dem Handy in einem Wlan (nicht dagheim) befinde in dem es nur eine IPV4 gibt geht wieder beides.
Irgendwie habe ich die Vermutung, dass es an IPV6 liegt aber warum dann nur die App?
Ich möchte den Zugriff auf bestimmte Container ausschliessich aus dem LAN (192.168.1.0/24) erlauben hierbei jedoch nicht auf die SSL Verschlüsselung verzichten.
So wie ich das verstanden habe muss man hierfür die Regel des Routers bei dem der Host festgelegt wird um ClientIP erweitern.
Der entspr. Bereich in der docker-compose.yaml sieht bei mir dann folgendermassen aus
labels:
– “traefik.enable=true”
– “traefik.http.routers.spoolman.entrypoints=websecure”
– “traefik.http.routers.spoolman.rule=Host(
spoolman.mydomain.de) && ClientIP(192.168.1.0/24)”– “traefik.http.routers.spoolman.middlewares=default@file”
– “traefik.http.routers.spoolman.tls=true”
– “traefik.http.routers.spoolman.service=spoolman”
– “traefik.http.services.spoolman.loadbalancer.server.port=8000”
– “traefik.docker.network=proxy”
Leider bekomme ich aber egal, ob aus dem LAN oder Internet immer eine 404 Meldung.
Ich habe es jetzt, aus Mangel an Testmöglichkeiten, nicht mit einer reinen Traefik Umgebung getestet. Möglicherweise spielt hier CrowdSec noch mit rein, ich habe es aber nicht geschafft auch noch das 172.0.0.0/8er Netz frei zu geben.
Ohne den ClientIP Block läuft natürlich alles ohne Probleme, aber eben auch mit Zugriff aus dem Internet. BasicAuth ist auch keine Option, da andere Dienste auf die Seite zugreiffen können müssen und die können mit BasicAuth nicht umgehen.
Irgendwelche Ideen?
Hallo,
erstmal vielen Dank für die tolle Anleitung! Funktioniert wirklich hervorragend. 🙂
Einen Hinweis hab ich noch für Nextcloud-Nutzer. Beim Upload von großen Dateien schlägt bei mir nach dem Update auf Traefik3 dieser nach 60s fehl. Das liegt daran dass im Traefik der transport.respondingTimeouts.readTimeout Default-Wert von 0s auf 60s verändert wurde. Siehe https://doc.traefik.io/traefik/v2.0/routing/entrypoints/#respondingtimeouts vs https://doc.traefik.io/traefik/routing/entrypoints/#respondingtimeouts)
Ich hab diesen bei mir erstmal in der data/traefik/traefik.yml unter entryPoints – websecure auf 3601s, also gut ein Stunde angepasst, die eigentlich reichen sollte um den Default 100MB Chunk in die Nextcloud hochzuladen. Habs aber noch nicht endgültig getestet, im Zweifel setzt man den Wert halt wieder auf das alte Default von 0s.
Meine data/traefik/dynamic_conf/nextcloud.yml sieht im Moment wie folgt aus. Eventuell kann man den respondingTimeout auch hier speziell nur für Nextcloud einbauen, hab ich aber bisher nicht weiter geschaut:
Viele Grüße othiman