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
Versionierung
Datum | Änderung |
---|---|
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`)"
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`)
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!
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?
docker logs socket-proxy:
::1 – – [16/Oct/2024:04:05:39 +0000] “GET / HTTP/1.1” 403 146 “-” “curl/8.10.1”
Wenn ich mich nicht täusche resultiert diese Meldung aus dem Healthcheck des Containers, der speziell dafür konfiguriert ist, eine HTTP 403-Antwort zu erhalten, oder?
Vielen Dank psycho0verload für die geile Anleitung 😀 Du hast dich echt nochmals selbst übertroffen 😃
Erhalte in ‘Portainer Business Edition 2.21.3’ folgende Fehelermeldung:
Guten Morgen,
entschuldigt bitte die doofe Frage, aber ich komme einfach nicht weiter. Ich bekomme mit der neuen Anleitung weder Traefik noch Mailcow zum Laufen. Muss ich die IPV6 an meinen Server anpassen, oder kann ich diese so wie in der Anleitung übernehmen?
psycho0verload
Mein Feedback.
Bin heute umgestiegen. Backup alter Server. Neuinstallation Ubuntu 24.X.
Nach Anleitung vorgegangen. Anschl. Mailcow neu installiert und restore der Daten.
Danach aus dem Borgbackup alle Container wieder hergestellt.
System läuft nun einwandfrei. Mir fiel nur die hohe Anzahl der Bans auf.
39 aktive Bans hatte ich noch nie. 🙂 Port 22 war aber auch lange offen 🙂
Vielen Dank für die gute Anleitung.
steje
Die Entscheidung, welche Domain du verwendest, liegt ganz bei dir und deinem individuellen Setup. Ob du dich für eine Second-Level-Domain oder eine Third-Level-Domain entscheidest, bleibt dabei dir überlassen. 😊
Lass uns gerne im Mailcow-Beitrag genauer anschauen, wo das Problem liegt bzw. an welcher Stelle das Zertifikat fehlt. Das gehört primär nicht zu diesem Thema hier.
Vielen Dank für die Anleitung! Hat seitens der Anleitung problemlos Funktioniert.
Zwei Anmerkungen.
Kapitel 7.5.1 (@all)
Ich hab beim ausführen von “docker compose up crowdsec -d && docker compose down” folgende Fehlermeldung erhalten.
WARN[0000] The “PWD” variable is not set. Defaulting to a blank string.
Danach ist crowdsec nicht gestartet.
Das lag bei mir am Terminal. Eine Möglichkeit das Problem zu umgehen ist den Befehl mit “-E” zu modifizieren.
Neuer Befehl: -E docker compose up crowdsec -d && docker compose down
Zusatz: Ich arbeite mit Sudo, da ich nicht root bin. Weiß nicht inwiefern das damit zusammenhängt.
Kapitel 8.1. ( psycho0verload )
Bei der Referenzierung auf die URL vom Traefik Dashboard bitte den Kaptielschritt referenzieren in dem wir die URL festlegen.
Ich hatte die URL als allgemein URL im Kopf abgespeichert und war kurz verwirrt als wir plötzlich von der spezifischen Traefik Dashbord URL gesprochen haben.
Auch von mir ein ganze großes Dankeschön! Super geschrieben und richtig informativ. Alleine die ersten 5 Seiten enthalten so viele wichtige Informationen, dass es alleine das schon Wert ist zu lesen. Da werde ich mich in nächster Zeit mal dran machen 😀
Super die Anleitung vielen Dank für deine Arbeit. Da ist es wirklich zu überlegen Traefik neu aufzusetzen.
Wow, da hast du wirklich ein gigantisches Meisterwerk erstellt.
Ich überlege, ob ich meine alte Traefik config kille und diese neu aufsetzte oder auf deine Migrationsanleitung warte.
Ein großes Kompliment und Dankeschön für die neue Anleitung. Freue mich auf die Migrationsanleitung, da ich mein System gerne auf den aktuellen Stand bringen möchte. 🙂