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!


Kleiner Hinweis zu 7.2 compose-Dateien: Bei der crowdsec.yml soll vermutlich statt SERVICES_TRAEFIK_NETWORKS_SOCKET_PROXY_IPV4 => SERVICES_CROWDSEC_NETWORKS_SOCKET_PROXY_IPV4 stehen. Kann zu einem Fehler führen, wenn man nicht mit mehreren .env Dateien arbeitet, da die gleiche Variable derzeit bei traefik.yml definiert ist und auf eine andere IP zeigen soll.
Bei mir gab es einige Probleme bei ipv6: Der Pi (Debian Bookworm) startete den Docker.Service nicht mehr. Folgende Konfiguration funktioniert bei mir:
{ "default-address-pools": [ { "base": "192.168.12.0/16", "size": 24 } ], "log-driver": "json-file", "log-opts": { "max-size": "29m", "max-file": "10" } }Hat schon jemand versucht unter traefik V3 (installiert gemäß der Anleitung hier) einen onlyoffice/documentserver zu installieren und mit Nextcloud zu verbinden? Bei meinem Versuch läuft der Onlyoffice Server und die Verbindung mit Nextcloud scheint zu klappen, aber bei der Erstellung eines neuen Dokuments oder dem Bearbeiten eines bestehenden Dokuments mit Nextcloud lehnt der Onlyoffice Server die Verbindung ab.
Hat jemand eine Idee?
Moin!
Ich habe gerade gesehen, dass bei meiner Installation das Zertifikat abgelaufen ist – hätte das nicht automatisch erneuert werden sollen?
Hi,
kann ich den ganzen Stack einfach so Updaten, ohne das alles im arsch ist ? 😀
Ich habe die komplette Anleitung gelesen und denke auch, dass ich einiges verstanden habe, aber wenn ich dann bei 8.1.
docker compose up -d mache startet der docker-socket-proxy nicht.
Wo finde ich die logs was da schief läuft? Ich bin nicht der große docker Held 😉
Funktioniert die neue Anleitung auch mit Wildcard-Zertifikaten, wie es bei der alten Anleitung war?
Meine Services sind aktuell alle so aufgebaut und bekommen ein gültiges Zertifikat:
app1.local.meinedomain.com
app2.local.meinedomain.com
etc.
certificatesResolvers:
cloudflare:
acme:
email: “x@y.com”
storage: “acme.json”
dnsChallenge:
provider: cloudflare
resolvers:
– “1.1.1.1:53”
– “1.0.0.1:53”
Rührt der Hinweis zu Debian 12 nicht einfach nur daher, dass es keine Log-Dateien im herkömmlichen Sinne mehr gibt, sondern nur nach Journald-Einträge, die man über journalctl abrufen kann? Wäre es da nicht viel sinnvoller, diese moderneren Varianten zu verwenden anstatt alte Zöpfe nachträglich wieder anzubringen?
Es gibt ja bei CrowdSec auch Möglichkeiten dafür, z. B. hier: https://docs.crowdsec.net/docs/data_sources/journald/
Leider kenne ich mich mit dieser Thematik nicht aus. Das ist mir als erstes in den Sinn gekommen, als ich den Hinweis gelesen habe. Falls ich völlig daneben liegen sollte, bitte ich das zu entschuldigen.
Wenn sich jemand damit auskennen sollte, würde ich mich gerne über Aufklärung freuen 🙂
zur Anleitung auf Seite 8 / Git-Repository
—————————————————–
Nach meinem Verständnis wird in folgender Datei der HOST nicht gesetzt:
/compose/traefik.yml
Ich vermute, dass hier ‘traefik.yourdomain.com’ noch für den eigenen Host umgestellt (d.h. entsprechend ersetzt) werden muss.
Ansonsten funktioniert die Installation damit prima.
Danke dafür!!!
Ich habe Theather mit dem crowdsec container. Ich bin auf meinem Server gebannt und wenn ich mich entbannen möchte, bekomme ich folgende Meldung:
level=error msg=”error while performing request: dial tcp 0.0.0.0:8080: connect: connection refused; 4 retries left”
level=info msg=”retrying in 18 seconds (attempt 2 of 5)”
In den logs finde ich dann folgendes:
Local agent already registered
Check if lapi needs to register an additional agent
/etc/crowdsec was found in a volume
Running hub update
level=warning msg=”Unable to retrieve latest crowdsec version: unable to send request to https://version.crowdsec.net/latest: Get \”https://version.crowdsec.net/latest\”: dial tcp: lookup version.crowdsec.net on 127.0.0.11:53: server misbehaving, using hub branch ‘master'”
level=warning msg=”Failed to check last modified: failed to make HEAD request for https://cdn-hub.crowdsec.net/crowdsecurity/master/.index.json?with_content=true: Head \”https://cdn-hub.crowdsec.net/crowdsecurity/master/.index.json?with_content=true\”: dial tcp: lookup cdn-hub.crowdsec.net on 127.0.0.11:53: server misbehaving” url=”https://cdn-hub.crowdsec.net/crowdsecurity/master/.index.json?with_content=true”
Downloading /etc/crowdsec/hub/.index.json
Error: failed to update hub: failed http request for https://cdn-hub.crowdsec.net/crowdsecurity/master/.index.json?with_content=true: Get “https://cdn-hub.crowdsec.net/crowdsecurity/master/.index.json?with_content=true”: dial tcp: lookup cdn-hub.crowdsec.net on 127.0.0.11:53: server misbehaving
/var/lib/crowdsec/data was found in a volume
Running hub upgrade
level=warning msg=”Unable to retrieve latest crowdsec version: unable to send request to https://version.crowdsec.net/latest: Get \”https://version.crowdsec.net/latest\”: dial tcp: lookup version.crowdsec.net on 127.0.0.11:53: server misbehaving, using hub branch ‘master'”
downloading https://hub-data.crowdsec.net/mmdb_update/GeoLite2-City.mmdb
level=warning msg=”Failed to check last modified: failed to make HEAD request for https://hub-data.crowdsec.net/mmdb_update/GeoLite2-City.mmdb: Head \”https://hub-data.crowdsec.net/mmdb_update/GeoLite2-City.mmdb\”: dial tcp: lookup hub-data.crowdsec.net on 127.0.0.11:53: server misbehaving” url=”https://hub-data.crowdsec.net/mmdb_update/GeoLite2-City.mmdb”
Error: while downloading data for /etc/crowdsec/parsers/s02-enrich/geoip-enrich.yaml: while getting data: failed http request for https://hub-data.crowdsec.net/mmdb_update/GeoLite2-City.mmdb: Get “https://hub-data.crowdsec.net/mmdb_update/GeoLite2-City.mmdb”: dial tcp: lookup hub-data.crowdsec.net on 127.0.0.11:53: server misbehaving
Running: cscli parsers install “crowdsecurity/docker-logs”
Nothing to do.
level=warning msg=”Unable to retrieve latest crowdsec version: unable to send request to https://version.crowdsec.net/latest: Get \”https://version.crowdsec.net/latest\”: dial tcp: lookup version.crowdsec.net on 127.0.0.11:53: server misbehaving, using hub branch ‘master'”
Jemand ein Tipp wie ich das lösen kann?