99. Anleitung in 2 Minuten
Falls du diese Anleitung bereits mehrfach durchgearbeitet hast oder dich generell als jemand betrachtest, der den gesamten Aufbau und die Funktionsweise versteht, dann habe ich eine Abkürzung für dich.
Ich habe die kompletten Dateien der Anleitung in ein Git Repository hochgeladen. Du kannst dieses Repository auschecken und mit nur wenigen Anpassungen direkt verwenden. So sparst du dir die manuelle Erstellung der Dateien und Konfigurationen.
https://github.com/Psycho0verload/traefik-crowdsec-stack
Hinweis: Ich würde mich über Unterstützung in Form von Sternen, Issue-Tickets oder PullRequests freuen, wenn du Verbesserungen oder Fehler findest! Und auch Christian, der uns diese wunderbare Webseite zur Verfügung stellt, freut sich über Feedback und Unterstützung.
Viel Spaß mit deinem optimierten Setup! 🚀
Hinweis zu Kommentaren
Wenn etwas nicht funktioniert, gehe noch einmal alle einzelnen Punkte in der Anleitung durch. Ich habe die Anleitung mehrfach getestet und Christian hat sie auch durchgesehen. Wenn du sicher bist, dass du alles richtig konfiguriert hast und das noch einmal überprüft hast, dann hinterlasse gerne einen Kommentar. Der Blog wird von Christian betrieben und er, sowie alle Co-Autoren, bemühen uns, alle Fragen und Probleme zu lösen – allerdings ist dies auch immer von unserer verfügbaren Zeit abhängig!
Bitte abonniert GoNeuland, damit dieser Blog uns auch weiterhin viele Jahre Freude bereiten kann 😉
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?
Vielen Dank für die großartige Anleitung,
psycho0verload! 🙂
Eine kleine Anmerkung: Das obige Setup führt zu folgendem Fehler:
Hintergund ist ein kleiner Tippfehler in der /data/traefik/dynamic_conf/http.middlewares.traefik-bouncer.yml:
Fügt man hier statt forwardauth = forwardAuth ein, funktioniert es. 🙂
Hallo,
ich habe folgende Fehlermeldung nach Aufruf von:
systemctl status crowdsec-firewall-bouncer
Process: 1911999 ExecStartPre=/usr/bin/crowdsec-firewall-bouncer -c /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml -t (code=exited, status=1/FAILURE)
Ein restart wird auch mit einer Fehlermedlung quittiert.
Hat jemand eine Idee. Vielen Dank. Gruß Andreas
Der hier benutzte fbonalair/traefik-crowdsec-bouncer wird seit 3 Jahren nicht mehr geupdated und führt bei mir zu 403 forbidden Problemen in einem Subprojekt.
Eine aktuell gepflegte Alternative wäre maxlerebourg/crowdsec-bouncer-traefik-plugin.
Ein Update wäre cool! 🙂
Hi,
danke für die super Anleitung und das tolle Skipt.
ich habe jetzt nur das Problem, dass ich meinen homeassisten Server über das Handy extern nicht mehr erreiche.
Nextclout welches als Docker läuft aber schon. Daher gehe ich irgendwie davon aus, dass es an der Weiterleitung an eine IP im zusammenhang von IPv4 und IPv6 zu tun haben könnte.
Denn wenn ich wieder außerhalb in einem fremden Wlan mit IPv4 bin komme ich wieder auf den HA Server drauf.
Ich habe in der http.middlewares.default.yml
folgendes eingetragen:
routers:
homeassistent:
entryPoints:
– websecure
rule: “Host(
ha.test.de
)”service: “homeassistent”
middlewares:
– default@file
– traefik-bouncer
tls:
certresolver: http_resolver
services:
homeassistent:
loadBalancer:
servers:
– url: “http://192.168.178.79:8123”
passHostHeader: true
damit hatte es unter Traefik 2 super funktioniert und hatte keine Probleme.
Was mache ich flasch?
Gruß
Ich habe festgestellt, dass man bei den Traefik-Labels inzwischen auf fünf Labels reduzieren kann.
traefik.docker.network: proxy
: Das Netzwerk wird in der statischen Configproviders.docker.network
schon definiert und ist hier redundant. https://doc.traefik.io/traefik/providers/docker/#networktraefik.http.routers.wordpress.middlewares: default@file
: Die Middleware wird auch schon in der statischen Config definiert inentryPoints.websecure.http.middlewares
.traefik.http.routers.wordpress.service: wordpress
: Ein Service wird automatisch erstellt oder automatisch assigned, wenn die Konfiguration durch Labels geschieht. https://doc.traefik.io/traefik/routing/providers/docker/#service-definitiontraefik.http.routers.wordpress.tls: true
: Wenn ein TLS-Konfigurationslabel angegeben ist, also dencertresolver
, dann wird TLS implizit auftrue
gesetzt. https://doc.traefik.io/traefik/routing/routers/#generalDamit bleiben am Ende die Labels fürenable
,entrypoint
,rule
,certresolver
undport
.Hallo zusammen,
zunächst einmal vielen Dank – dank dieser Anleitung habe ich den Umstieg auf eine selbstgehostete Nextcloud geschafft.
Allerdings habe ich ein Problem – nachdem die Installation fast 3 Wochen lang fehlerfrei lief, konnte ich heute nachmittag nicht mehr zugreifen. Wenn ich traefik aufrufe, kommt “forbidden”. Auch bei der Nextcloud.
Ich habe daraufhin Traefik nach der Anleitung nochmal komplett neu installiert, dann konnte ich wieder mit meiner Nexcloud arbeiten – und nach ca. 5 Minuten flog ich raus und es kam wieder “forbidden”.
Ich habe nach dem unten aufgeführten Post das data/crowdsec/data Verzeichnis gelöscht, danach läuft es auch wieder – für 10 Minuten. Dann tritt das Problem wieder auf.
Bin für jede Hilfe dankbar.
Dietmar
Hallo Zusammen
Ich habe ein Problem mit der Acquisition Metrics. Ich habe Traefik einmal Punkt für Punkt nach der Anleitung Installiert und einmal mit dem Shell Scripte auf einem Debian 12 gehostet von Netcup.
Beides Mal steht nach dem Befehl
docker exec crowdsec cscli metrics
nichts von Traefik.log oder access.log unter Acquisition Metrics.
Das komische ist, ich habe das ganze nur ein paar Stunden vorher auf einem Debian 12 Server eines anderen Hoster installiert und dort wurden mehr Menü Punkte angezeigt.
Folgendes fehlt bei Netcup
—————————————————————————————————————————-+
| Acquisition Metrics |
+———————————-+————+————–+—————-+————————+——————-+
| Source | Lines read | Lines parsed | Lines unparsed | Lines poured to bucket | Lines whitelisted |
+———————————-+————+————–+—————-+————————+——————-+
| file:/var/log/traefik/access.log | 714 | 714 | – | 1.09k | – |
+———————————-+————+————–+—————-+————————+——————-+
+—————————————————-+
| Local API Alerts |
+——————————————–+——-+
| Reason | Count |
+——————————————–+——-+
| crowdsecurity/http-admin-interface-probing | 2 |
| crowdsecurity/http-probing | 9 |
| crowdsecurity/http-sensitive-files | 13 |
| crowdsecurity/http-wordpress-scan | 1 |
| crowdsecurity/netgear_rce | 1 |
+——————————————–+——-+
+——————————————————————————————-+
| Bouncer Metrics (FIREWALL) since 2025-02-22 20:48:06 +0000 UTC |
+—————————-+——————+——————-+———————–+
| Origin | active_decisions | dropped | processed |
| | IPs | bytes | packets | bytes | packets |
+—————————-+——————+———+———+———–+———–+
| CAPI (community blocklist) | 46.98k | 810.46k | 17.35k | – | – |
| crowdsec (security engine) | 0 | 0 | 0 | – | – |
+—————————-+——————+———+———+———–+———–+
| Total | 46.98k | 810.46k | 17.35k | 1.32G | 442.26k |
Kann mir jemand da einen Tipp geben?
Hallo zusammen,
tja, das war wohl etwas voreilig (siehe hier drunter).
Die Container starten und laufen nun alle, doch mehrere Dinge liegen im Argen, weshalb ich sowohl beim Zugriff auf die Traefik-Management-Seite, als auch beim Zugriff auf meinen Immich-Dienst ausschließlich ein ‘Forbidden’ bekommen.
Identifizierte Problemstellen:
Das Zertifikat für meinen Dienst hat Traefik gezogen, doch – wie beschrieben: Ich bekomme ausschließlich ein ‘Forbidden’ in der linken, oberen Ecke, und dasselbe bekomme ich auch schon ohne den Dienst für die Traefik-Management-Seite (also keine HTTP-Authentifizierung).
Kann mir jemand weiterhelfen?
Viele Grüße
Matthias
ps Ach ja: In der docker-compose von Traefik habe ich “3.1” durch “3.3” ersetzt.
Hallo zusammen,
zunächst vielen Dank an psycho0verload für die fantastische Anleitung!👌
Nach bestem Wissen und Gewissen bin ich sie durch und habe auch ein paar Kleinigkeiten aus den Kommentaren ergänzt bzw. korrigiert.
Doch bei mir will der Traefik-Container nicht starten bzw. bleibt im ‘restarting’.
Meine Frage: Wie kann ich herausfinden, woran das liegt? /var/log/traefik bleibt leer.🙄
Wer hat mir einen Tipp? Wo und wie kann ich schauen, was da los ist?
Viele Grüße aus Stuttgart
Matthias
Hallo
psycho0verload in der Versionierung 02.02.2025 schreibst du u.a. “Traefik-Version auf 3.3 angepasst” Ich sehe allerdings noch 3.1 im compose file, hast du dich da vertippt? Hast du die 3.3 getestet? Danke Gruss Marco
In meinem Setup habe ich einige Änderungen vorgenommen, die es einerseits für mich noch weiter vereinfachen und andererseits meinen persönlichen Vorstellungen und meinen anderen Projekten besser passen, was rein Geschmacksache ist.
Die Zeitzone mit der Variable
TZ
muss nicht in jeder.env
-Subdatei neu definiert werden. Wie man bei derABSOLUTE_PATH
-Variable sieht, ist dies nicht notwendig, sondern reicht einmal zentral. Das Gleiche gilt fürBOUNCER_KEY_TRAEFIK
. Die muss in der.env
-Datei für CrowdSec nicht neudefiniert werden.Beim Einfügen von Werten in Dateien wie bei
BOUNCER_KEY_TRAEFIK
in „7.3.6. API Key für den CrowdSec Bouncer für Traefik generieren“ bevorzuge ichsed
-Editor stattecho
mit Umleitung. Es vermeidet Duplikate in der Datei und vermeidet, wenn man dochsudo
verwendet, ein “Permission denied”.sed -i -e "/^BOUNCER_KEY_TRAEFIK=/c\BOUNCER_KEY_TRAEFIK=\"$BOUNCER_PASSWORD\"" \
-e "\$aBOUNCER_KEY_TRAEFIK=\"$BOUNCER_PASSWORD\"" \
/opt/containers/traefik-crowdsec-stack/.env
Ich habe auf Debian 12 Probleme mit
PWD
-Variable. PWD ist auf dem Host-System vorhanden und in der Bash nutzbar. Jedoch übergibt Docker die Variable nicht an den Container weiter und ist damit dort nicht anwendbar. Eine mögliche Lösung ist, den Pfad fest zu codieren. Eine andere Lösung besteht darin, wieder zu relativen Pfaden zurückzukehren, wie es bei älteren Anleitungen üblich war. Beispielhaft antraefik.yml
-Compose-Datei:volumes:
- /etc/localtime:/etc/localtime:ro
- ../data/traefik/traefik.yml:/etc/traefik/traefik.yml
- ../data/traefik/.htpasswd:/etc/traefik/.htpasswd
- ../data/traefik/certs/acme_letsencrypt.json:/etc/traefik/acme_letsencrypt.json
- ../data/traefik/certs/tls_letsencrypt.json:/etc/traefik/tls_letsencrypt.json
- ../data/traefik/dynamic_conf:/etc/traefik/dynamic_conf:ro
- /var/log/traefik/:/var/log/traefik/
Bei der oben genannten Variable
BOUNCER_KEY_TRAEFIK
und ggf. unten angegebeneSERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL
bevorzuge ich diese in der zentralen.env
-Datei zu speichern. Da sie neben den anderen Variablen in dieser Datei in den meisten Fällen die einzigen Variablen sind, die für jeden Host spezifiziert werden müssen. Bei derGIN_MODE
-Variable kommt es darauf an, ob man beim allerersten Mal diesen Wert aufdebug
setzen will, oder dass man jedes Mal mit diesem Wert starten möchte. Auch bevorzuge ich, persönlich die.env
Dateien neben den Compose-Dateien zu legen und sie entsprechend zu benennen, z. B.traefik.env
. Natürlich müssen dieenv_file
-Pfade infolge angepasst werden.Was ich gerne noch anpassen würde, aber bisher nicht hinbekommen habe, ist die E-Mail-Adresse über die Compose-Datei bereitzustellen. Weder mit Label noch mit Command hat es bisher funktioniert.
services:
traefik:
labels:
traefik.certificatesResolvers.http_resolver.acme.email: ${SERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL:-user@example.com}
traefik.certificatesResolvers.tls_resolver.acme.email: ${SERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL:-user@example.com}
# Alternatsyntax
- "traefik.certificatesResolvers.http_resolver.acme.email=${SERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL:-user@example.com}"
- "traefik.certificatesResolvers.tls_resolver.acme.email=${SERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL:-user@example.com}"
# oder mit command
command:
- "--certificatesresolvers.http_resolver.acme.email=${SERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL}"
- "--certificatesresolvers.tls_resolver.acme.email=${SERVICES_TRAEFIK_CERTIFICATESRESOLVERS_EMAIL}"
Danke erstmal für die detaillierte Anleitung, alles läuft super bis auf die Erreichbarkeit von home assistant über das web.
In der Vergangenheit musste man in HA einen trusted_proxy eintragen und Traefik einen extra Host geben
extra_hosts:
– host.docker.internal:172.17.0.1
oder ähnlich, danmit der Zugriff funktioniert hat, da HA im Host-Modus läuft. Allerdings funktioniert das bei mir nicht mehr. Weder meldet HA einen unbefugten Zugriff, wodurch ich dann die IP wüsste, noch klappen andere Ansätze, wie im Standard Network die Traefik domain raus suchen, da Traefik nur in seinen drei Netzwerken (crowdsec, proxy, socket_proxy) vertreten ist.
Eventuell weiß jemand nen guten Ansatz? Danke!
Hey mir ist bei einem Security Test aufgefallen das wir hier noch etwas verbessern sollten um das Sicherheitslevel hoch zu setzten, bei den Headern ist noch einiges zu tun :
Damit gibts ein A+ Rating bei https://securityheaders.com/
/opt/containers/traefik-crowdsec-stack/data/traefik/dynamic_conf/http.middlewares.default.yml
Bei den permissions könnt ihr anpassen wie ihr es braucht (Je nach App)
Blockiert wird mit =() , zugelassen wird es durch bsp.: permissionsPolicy: “camera=*, microphone=*”
Edit: für die meisten Anwendungen reicht auch als Standard:
contentSecurityPolicy: “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: blob: https:; font-src ‘self’ data:; connect-src ‘self’ wss: https:; frame-ancestors ‘self’; base-uri ‘self’; form-action ‘self'”
referrerPolicy: “strict-origin-when-cross-origin”
http:
middlewares:
default:
chain:
middlewares:
– default-security-headers
– gzip
default-security-headers:
headers:
browserXssFilter: true
contentTypeNosniff: true
forceSTSHeader: true
frameDeny: true
stsIncludeSubdomains: true
stsPreload: true
stsSeconds: 31536000
customFrameOptionsValue: “SAMEORIGIN”
# Sichere Content Security Policy ohne unsafe-inline/eval
contentSecurityPolicy: “default-src ‘self’; script-src ‘self’ ‘nonce-{RANDOM}’; style-src ‘self’; img-src ‘self’ data: https:; font-src ‘self’; frame-ancestors ‘self’; base-uri ‘self’; form-action ‘self'”
# Referrer Policy
referrerPolicy: “strict-origin-when-cross-origin”
# Permissions Policy
permissionsPolicy: “accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=(), interest-cohort=()”
gzip:
compress: {}
Läuft bei euch eigentlich der Socket Proxy? Bei mir hat er noch nie funktioniert. Ich habe gestern Abend nochmal rum probiert, aber kam nicht weiter. Im Log vom Socket Proxy kommt aktuell alle 10 Sekunden:
Ich werde nicht schlau draus. Habt ihr ne Idee?
Außerdem passt die Zeitzone nicht, aber dafür hätte ich ne Lösungsidee. Für das andere nicht.
Hat jemand bereits raus gefunden wie man es bewerkstelligen kann das wenn crowdsec eine IP Bannen tut das dort eine Custom Error pages angezeigt wird.
der Bouncer gibt normalerweise ein 403 zurück
Bin bis Schritt 8.1 ohne Fehler gekommen. Wenn ich jedoch auf das Dashboard zugreifen möchte, ist die Seite komplett leer bis auf “Account : w011d26a” das in der mitte steht. Hat Jemand eine Idee dazu? Danke
Danke für die ausführliche Anleitung + erweiterte Erklärungen. Sieht alles sehr durchdacht aus!
Bei der Implementation sind mir folgende Aspekte aufgefallen (EDIT: noch etwas aufgefallen):
In der traefik.yml im compose-Stack (/opt/containers/traefik-crowdsec-stack/compose/traefik.yml) (und möglicherweise an anderen Stellen ist ein Tippfehler – ohne Auswirkungen auf die Funktionalität – traefik-dashboad statt traefik.dashboaRdWarum wurde für die traefik-dashboard und pingweb router- und service-Definition auf docker labels zurückgegriffen statt diese auch in @ files Definitionen auszulagern? Der Rest des Stacks ist ja sehr gut strukturiert, aber genau hier wird es (aus meiner Sicht) uneinheitlich. Gibt es dafür einen Grund?In der compose von traefik unter /opt/containers/traefik-crowdsec-stack/compose/traefik.yml ist ein Tippfehler beim volumemapping: ${ABSOLUTE_PATH}/data/traefik/certs/acme_letsencrypt.json:/etc/traefik//acme_letsencrypt.json <- Hier ist ein “/” zu viel
Ansonsten eine kurze Anregung auf die Gesamtimplementation der Stacks:
Aktuell ist nur eine Anleitung für weitere Container angehängt. Wenn man mehrere Hosts betreibt, hat man vielleicht schon Services woanders laufen, die vielleicht nicht über den gleichen Docker Stack angesprochen werden. Dies kann man mit einer @ file einfach ergänzen (hier nur als Skelett):
http:
routers:
router-whoami:
rule: Host(
whoami.example.org
)service: service-whoami
tls:
certResolver: letsencrypt
services:
service-whoami:
loadBalancer:
servers:
– url: http://192.168.100.100:80
Dazu noch folgende Anfrage: ich meine, es gab mal hier auf GoNeuland eine sehr ausführliche Anleitung, wie man einen getrennten ReverseProxy auf einem öffentlichen VPS + lokalen Reverse Proxy verwenden kann (NICHT https://goneuland.de/wireguard-ui-vpn-nutzen-um-dienste-im-traefik-crowdsec-stack-extern-oder-intern-zu-nutzen/). Ich finde den Post allerdings nicht mehr.
Ich zum Beispiel implementiere die aktuelle Anleitung als DMZ Proxy zu Hause und will dann später über einen VPS per ProxyProtocol von außen noch aufschalten um keine Port Forwards zu haben. Vielleicht könnte man hierzu auch noch einen Post daraus machen?
In jedem Fall: vielen Dank und ein frohes neues Jahr!
In der neusten Traefik-Version (3.3.1) habe ich Probleme mit dem Dashboard bekommen. Unabhängig von meiner Authentik-Middleware hat die Seite nicht geladen.
Stattdessen wurde mir eine Datei vom Typ “application/octet-stream” zum Download angeboten. Dieser Fehler tritt scheinbar auf, wenn der Header fehlerhaft modifiziert wird. Ich konnte das Problem auf “contentTypeNosniff: true” zurückführen. Nachdem ich die Zeile in der Datei “/opt/containers/traefik-crowdsec-stack/data/traefik/dynamic_conf/http.middlewares.default.yml” auskommentiert habe, lief es wieder.
Ich weiß nicht, ob es sich um einen Bug der aktuellen Version handelt, der dieses Problem verursacht. Aber ich verstehe auch nicht ganz, warum contentTypeNosniff überhaupt benötigt wird. Soll der Browser doch raten, um welche Art von Inhalt es sich handelt 🤷🏻♂️
Hat schon jemand die Traefik-Versionen > 3.3 zum Laufen gekriegt? Hatte es gestern Abend mal probiert bei mir – ging leider nicht.
Ich möchte einfach nur ein ganz herzliches Dankeschön aussprechen für diese wirklich gute Anleitung. Die Installation selber habe ich mit dem Installationsscript gemacht und es hat alles funktioniert 😀 Ich habe es unter Proxmox in einem frischen Container mit Debian 12 installiert. Es gab keinerlei Probleme und auch andere Anleitungen von hier wie etwa Nextcloud oder Paperless NGX liefen einwandfrei 👍
Gibt es eine Möglichkeit den Crowdsec Firewall bunder welcher auf dem System läuft zu sagen er soll nur port 443 und 80 sperren und nicht das gesamte Spektrum da ich schon fail2ban hab laufen
ban_proto und ban_ports funktionieren irgendwie nicht :-/
Beim Update anderer Traefik Instanzen ist mir aufgefallen das per pull hier nicht die aktuellste Version des Images genommen wird sonder noch der 3.1.* Branch :
image:${SERVICES_TRAEFIK_IMAGE:traefik}:${SERVICES_TRAEFIK_IMAGE_VERSION:-3.1}
Nur als Hinweis für andere wenn man auf neuere 3er Versionen will sollte man ja eher :
image:${SERVICES_TRAEFIK_IMAGE:traefik}:${SERVICES_TRAEFIK_IMAGE_VERSION:-3} benutzen. und das Updaten wäre per Script auch gut machbar, hab das mit paar Infos mal bei mir so aktuell:
Hallo können wir bei 7.4.5. Passwort für Traefik-Dashboard festlegennoch dazu schreiben, dass Unterstriche für den Benutzername nicht funktionieren, sie hebeln die Traefik Authentifizierung direkt aus.
Besten Dank für die tolle Anleitung.
Beim anpassen der IP Adressen über DOTENV mittels der vorgegebenen Variabeln aus den Compose Dateien ist mir ein Fehler aufgefallen.
In der “crowdsec.yml” sind zwei Variabeln für IP Adressen identisch zur traefik.yml und sollten angepasst werden.
crowdsec.yml:
alt -> neu
SERVICES_TRAEFIK_NETWORKS_SOCKET_PROXY_IPV4 -> SERVICES_CROWDSEC_NETWORKS_SOCKET_PROXY_IPV4
SERVICES_TRAEFIK_NETWORKS_SOCKET_PROXY_IPV6 -> SERVICES_CROWDSEC_NETWORKS_SOCKET_PROXY_IPV6
Super wäre noch eine Variante mit Wildcard Option für die Domain(s). Ich habe versucht, die alte Anleitung von 2020 mit dieser zu verheiraten, keine Chance.
Herzlichen dank für die Tolle Anleitung.
Ich habe probiert bei einem Bestimmten Diest per Middleware einen Passwortschutz zu hinterlegen. leider ohne Erfolg.
ich komme da irgendwie nicht weiter.
was habe ich da falsch?
danke schon mal ganz Herzluch für euren Tipp.
Hat jemand mit Cloudflare und den origin Cert erfahrung.
wie kann man diese Einbinden ?
Hallo, erst mal vielen Dank für die super Anleitungen. Ich habe jedoch eine Frage zur Sicherheit des Proxies. In der alten Anleitung ist der entryPoint websecure wie folgt konfiguriert:
websecure:
address: ‘:443’
http:
middlewares:
– traefik-crowdsec-bouncer@file
proxyProtocol:
trustedIPs:
– 10.0.0.0/8
– 172.16.0.0/12
– 192.168.0.0/16
forwardedHeaders:
trustedIPs:
– 10.0.0.0/8
– 172.16.0.0/12
– 192.168.0.0/16
in der neuen nur noch:
websecure:
address: ‘:443’
http:
middlewares:
– default@file
Wäre es nicht sicherer die trustedIPs-Einstellungen in Traefik wieder zu konfigurieren, um sicherzustellen, dass nur vertrauenswürdige Proxies (z. B. aus dem Docker-Netzwerk) Forwarded-Header setzen dürfen?
ich verstehe es nicht, Bei der alten Anleitung bzw. bei meiner aktuellen Traefik installation werden im Dashboard nur die Port 88 (ping), 80 (Web) und 443(Websecure) angezeigt
bei der neuen installation ist allerdings noch 8080(api) dabei ? warum der port ist nicht offen und der Aufruf geht.
Hi,
ich habe seit heute einen neuen Fehler bei Traefik v3. Er ist der meinung, dass keine middleware-chain mehr möglich wäre (ab v3), was Quatsch ist, weil ich habe einige traefiks, die das haben.
Fehler:
1.:
ERR error=”cannot create middleware: multi-types middleware not supported, consider declaring two different pieces of middleware instead” entryPointName=websecure routerName=traefik@docker
Also was er will (dynamic_conf.yml) ist:
middlewares:
# default:
# chain:
# middlewares:
# – default-security-headers
# – gzip
und bei den labels (bspw. traefik dashboard)
traefik.http.routers.traefik.middlewares: default-security-headers@file, gzip@file
ACHTUNG: Da steht nicht default@file
2.:
Man kann seit v3 nicht mehr folgende Host-Notation machen: Host (
host1.euredomain.de
) || Host (host2.euredomain.de
)ACHTUNG: Ich meine nicht die alte Notation sondern die neue.
Jetzt werden alle sagen: “Bei mir geht das” – Ja geht auch
Drei Monate lang und dann erneuert der traefik das Zertifikat nicht mehr – so geschehen bei mir, bei einigen Diensten.
Ihr müsst für jeden Namen einen eigenen Router (Labelsatz) bauen.
Ich finde diese beiden “Neuerungen” einen extremen Rückschritt!
Falls jemand eine Idee hat – immer her damit.
Das automatische Skript für die Traefik-Installation ist einfach nur genial!
Hallo,
wenn ich unter Punkt: 7.5.1 den Befehl:
docker compose up crowdsec -d && docker compose down
ausführe, kommt diese Fehlermeldung:
yaml: unmarshal errors:
line 23: mapping key “socket-proxy” already defined at line 2
Ich führe den Befehl im Ordner: /opt/containers/traefik-crowdsec-stack aus.
Jemand n Tipp?
VG Hardy
Hallo
psycho0verload
Vielen Dank für die tolle Anleitung. Bei mir zeigt er keine IP-Addresse und Type bei Firewall an? Ist das OK?
Ich habe den neuen Stack jetzt am Laufen, und auch schon die alte Nextcloud-Instanz mit dem neuen Stack wieder erreichbar, vielen Dank für die hilfreiche Anleitung und vor allem für das Skript. Ich musste es etwas anpassen, weil ich nicht in /opt installiere, da ich die Container nicht auf dem USB-Stick haben will, der mein Boot-Medium ist (OpenMediaVault), aber danach hat es funktioniert.
Lediglich ein Problem tritt gelegentlich auf, und zwar dass ich selbst gebannt werde. Gibt es eine einfache Möglichkeit, Anfragen von der eigenen öffentlichen IP-Adresse (DynDNS) immer durchzulassen? Also dynamisch, ohne dass ich jetzt meine IP in der Whitelist eintrage, weil die sich ja jederzeit ändern kann? Wenn ich von Außerhalb zugreife ist das dann halt so, weil ja nicht klar sein kann, dass die Anfrage von mir ist, aber wenn ich zu Hause bin, dann ist das ja die gleiche IP unter der der Server auch zu erreichen ist, das ist doch bestimmt machbar.
Viele Grüße
Mir fällt jetzt gerade noch was auf..
daemon.json -> “base”: “172.25.0.0/14″ ist für v4 so glaube ich nicht richtig.
Es handelt sich dabei um eine Adresse aus dem 172.24.0.0/14 Netzwerk.
Auch wenn es funktioniert, (docker scheint es richtig zu interpretieren, jedenfalls gehen die Netze/Ips mit 172.24. los) würde ich hier wie folgt eintragen “172.24.0.0/14”
Dann passt auch bei einer Size 23 die 512(-2) Hosts bzw verfügbare IP Adressen pro Netzwerk.
Danke Gruss Marco
Hallo Christian, mal wieder eine super Anleitung! Ich habe die neue V3 Anleitung in einen separaten Ordner aufgebaut, meine spezifischen Änderungen wie IPWhitelist, Telegram Alerting, Collections usw. in die Config Files eingepflegt. Dann die alte Umgebung runtergefahren, die neue gestartet, lief auf Anhieb.
Frage: Hast du IPv6 getestet?
Danke Gruss Marco
Hallo und eine kurze Frage: ist es geplant, den Cloudflaretunnel mit in die Konfiguration zu übernehmen?
Authelia Integration in Traefik-Crowdsec-Stack (Traefik3)
Anlegen von Verzeichnissen.
Erstellen der Secrets
Das Secret authelia_notifier_smtp_password enthält euch Password zum Email Account wenn Ihr SMTP Notifications nutzen wollt.
Wenn ihr File Notifications nutzen wollte dann lasst dies bitte weg.
Ergänzen der docker-compose.yml
—
—
Erstellen der .env File in /opt/containers/traefik-crowdsec-stack/data/authelia/
Legt hier bitte eine .env File mit folgendem Inhalt an.
—
—
Erstellen authelia.yml im compose Verzeichnis.
nano /opt/containers/traefik-crowdsec-stack/compose/authelia.yml
—
…
Erzeugen Traefik Middelware Yml für Authelia.
Erzeugt im Verzeichnis /opt/containers/traefik-crowdsec-stack/data/traefik/dynamic_conf
eine Datei http.middlewares.middlewares-authelia.yml mit folgendem Inhalt.
—
—
Erzeugen der Authelia Configuration in /opt/containers/traefik-crowdsec-stack/data/authelia/config
mit nano /opt/containers/traefik-crowdsec-stack/data/authelia/config/configuration.yml die entsprechende Datei erstellen.
Inhalt:
—
—
Mit diesem Befehl erzeugt ihr den Hash für Euren User:
den angezeigten String tragt ihr dann in die users.yml ein als password:
Mit nano /opt/containers/traefik-crowdsec-stack/data/authelia/config/users.yml die entsprechende Datei erstellen.
Inhalt:
—
—
Nach dem ihr dann alle Container mit docker compose -up -d –force-recreate neugestartet habt, ruft ihr
eure Authelia domain auf auth.domain.tld und log euch mit den angelegten Zugangsdaten ein.
Durch den rest führt euch dann Authelia. Beachtet der 6 stellige Code der angefordert wird wird euch in der Notification.txt im config Verzeichnis angezeigt.
Nach dem erfolgreichen Anlegen des 2FA könnt ihr nun folgende Anpassungen vornehmen:
Manuelle Anpassungen an der traefik.yml im /compose
um Traefik hinter die Authelia Middleware zu bekommen muss folgende Zeile angeasst werden.
Original:
traefik.http.routers.traefik-dashboad.middlewares: default@file,traefik-dashboard-auth@file
Angepasst:
traefik.http.routers.traefik-dashboad.middlewares: default@file,middlewares-authelia@file
Macht das bitte erst wenn euer Authelia Container läuft und ihr euch bei Authelia mindestens einmal angemeldet habt.
alternativ kann man hier auch eine traefik.override.yml anlegen.
nach einem erneuten restart mit
docker compose up -d –force-recreate
und ein paar minuten Wartezeit sollte sich beim Aufruf eurer Traefik Domain nun erst Authelia melden.
Ich hoffe ich habe dies nun vollständig dokumentiert. Falls doch was schiefgehen sollte fragt einfach.
Ich habe dies auch gleichzeitig an Psycho0verload geschickt zur Prüfung und ggf einbau in den Stack.
Tag zusammen, habe gestern Abend die Anleitung genauestens ausgeführt. Aber ich bekomme außer Traefik-Dashboard keinen meiner Services von außen erreicht. Auch wenn ich zB meine Portainer Installation wie hier beschrieben einbinde, keine Chance. Das ganze hängt hinter CloudFlare und ich bekomme nen 525er also SSL Handshake, oder auch gar keine Response.
Im Traefik.log stehen bei den Certificates 403er Fehler.
Werd irre, hat jemand nen Tip was ich noch schauen kann?
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
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: