{"id":47356711,"url":"https://github.com/psycho0verload/traefik-crowdsec-stack","last_synced_at":"2026-04-01T07:01:00.585Z","repository":{"id":265661144,"uuid":"664960691","full_name":"psycho0verload/traefik-crowdsec-stack","owner":"psycho0verload","description":"Anleitung zu einem vollständigem Traefik-CrowdSec-Stack.","archived":false,"fork":false,"pushed_at":"2025-04-12T14:29:24.000Z","size":55,"stargazers_count":69,"open_issues_count":3,"forks_count":22,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-10-10T04:01:10.652Z","etag":null,"topics":["bouncer","crowdsec","crowdsec-bouncer","docker","docker-compose","stack","traefik","traefik-crowdsec-stack","traefik-docker"],"latest_commit_sha":null,"homepage":"https://goneuland.de/traefik-v3-installation-konfiguration-und-crowdsec-security/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/psycho0verload.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-11T06:15:42.000Z","updated_at":"2025-09-15T16:14:11.000Z","dependencies_parsed_at":"2024-11-30T11:34:40.349Z","dependency_job_id":"7f48aa6d-9f58-41b7-8b4c-72539709279e","html_url":"https://github.com/psycho0verload/traefik-crowdsec-stack","commit_stats":null,"previous_names":["psycho0verload/traefik-crowdsec-stack"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/psycho0verload/traefik-crowdsec-stack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psycho0verload%2Ftraefik-crowdsec-stack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psycho0verload%2Ftraefik-crowdsec-stack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psycho0verload%2Ftraefik-crowdsec-stack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psycho0verload%2Ftraefik-crowdsec-stack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/psycho0verload","download_url":"https://codeload.github.com/psycho0verload/traefik-crowdsec-stack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/psycho0verload%2Ftraefik-crowdsec-stack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31269194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T06:57:45.811Z","status":"ssl_error","status_checked_at":"2026-04-01T06:57:42.389Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bouncer","crowdsec","crowdsec-bouncer","docker","docker-compose","stack","traefik","traefik-crowdsec-stack","traefik-docker"],"created_at":"2026-03-18T03:00:19.120Z","updated_at":"2026-04-01T07:01:00.578Z","avatar_url":"https://github.com/psycho0verload.png","language":"Shell","funding_links":[],"categories":["Docker Stacks \u0026 Examples"],"sub_categories":["Other Bouncers"],"readme":"# Traefik-CrowdSec-Stacks\n\nDiese Anleitung beschreibt die manuelle Installation und Konfiguration des Traefik-CrowdSec-Stacks, ohne Verwendung des automatischen Installationsskripts. Bitte folgen Sie den Schritten sorgfältig.\n\n## Voraussetzungen\n\n- Root-Zugriff auf den Server\n- Docker und Docker Compose müssen installiert sein\n- Apache2 Utils (htpasswd) und OpenSSL müssen installiert sein\n\n## Script\n![Ubuntu 20.04 - Testing](https://img.shields.io/badge/Ubuntu_20.04-07--10--2024-orange?logo=ubuntu)\n![Ubuntu 22.04 - Testing](https://img.shields.io/badge/Ubuntu_22.04-07--10--2024-orange?logo=ubuntu)\n![Ubuntu 24.04 - Testing](https://img.shields.io/badge/Ubuntu_24.04-07--10--2024-orange?logo=ubuntu)\n![Debian 11 - Testing](https://img.shields.io/badge/Debian_11_(Bullseye)-07--10--2024-A81D33?logo=debian\u0026logoColor=white)\n![Debian 12 - Testing](https://img.shields.io/badge/Debian_12_(Bookworm)-07--10--2024-A81D33?logo=debian\u0026logoColor=white)\n### 1. Repository klonen\n\nAls erstes müssen Sie das Repository auf Ihren Server klonen:\n\n```bash\nmkdir -p /opt/containers/\ngit clone https://github.com/psycho0verload/traefik-crowdsec-stack /opt/containers/traefik-crowdsec-stack\ncd /opt/containers/traefik-crowdsec-stack\nsudo chmod +x first_install.sh\nsudo ./first_install.sh\n```\n\n## Manuelle Anleitung\n![Ubuntu 20.04 - Testing](https://img.shields.io/badge/Ubuntu_20.04-07--10--2024-orange?logo=ubuntu)\n![Ubuntu 22.04 - Testing](https://img.shields.io/badge/Ubuntu_22.04-07--10--2024-orange?logo=ubuntu)\n![Ubuntu 24.04 - Testing](https://img.shields.io/badge/Ubuntu_24.04-07--10--2024-orange?logo=ubuntu)\n![Debian 11 - Testing](https://img.shields.io/badge/Debian_11_(Bullseye)-07--10--2024-A81D33?logo=debian\u0026logoColor=white)\n![Debian 12 - Testing](https://img.shields.io/badge/Debian_12_(Bookworm)-07--10--2024-A81D33?logo=debian\u0026logoColor=white)\n\nDie gesamte Anleitung wird als `root`-User durchgeführt!\n### 1. Repository klonen\nAls erstes müssen Sie das Repository auf Ihren Server klonen:\n\n```bash\nsudo su\nmkdir -p /opt/containers/\ngit clone https://github.com/psycho0verload/traefik-crowdsec-stack /opt/containers/traefik-crowdsec-stack\ncd /opt/containers/traefik-crowdsec-stack\n```\n\n### 2. Docker und Docker Compose installieren\n\nFalls Docker und Docker Compose noch nicht installiert sind, folgen Sie der offiziellen Anleitung:\n\n- [Docker Installation](https://docs.docker.com/engine/install)\n- [Docker Compose Installation](https://docs.docker.com/engine/install)\n\nVerifizieren Sie die Installation mit den folgenden Befehlen:\n\n```bash\ndocker --version\ndocker compose version\n```\n\n### 3. Apache2 Utils und OpenSSL installieren\n\nUm einen Benutzer für die HTTP-Basic-Authentifizierung zu erstellen, benötigen Sie htpasswd, das in apache2-utils enthalten ist. Sie können es mit folgendem Befehl installieren:\n\n```bash\napt update\napt install -y apache2-utils openssl\n```\n\n### 4. Konfigurationsdateien kopieren\n\nKopieren Sie die erforderlichen Konfigurationsdateien aus den .sample-Vorlagen. Stellen Sie sicher, dass Sie im Arbeitsverzeichnis des Projekts sind:\n\n```bash\ncp .env.sample .env\ncp data/crowdsec/.env.sample data/crowdsec/.env\ncp data/socket-proxy/.env.sample data/socket-proxy/.env\ncp data/traefik/.env.sample data/traefik/.env\ncp data/traefik/traefik.yml.sample data/traefik/traefik.yml\ncp data/traefik/certs/acme_letsencrypt.json.sample data/traefik/certs/acme_letsencrypt.json\nchmod 600 data/traefik/certs/acme_letsencrypt.json\ncp data/traefik/certs/tls_letsencrypt.json.sample data/traefik/certs/tls_letsencrypt.json\nchmod 600 data/traefik/certs/tls_letsencrypt.json\ncp data/traefik/dynamic_conf/http.middlewares.default.yml.sample data/traefik/dynamic_conf/http.middlewares.default.yml\ncp data/traefik/dynamic_conf/http.middlewares.default-security-headers.yml.sample data/traefik/dynamic_conf/http.middlewares.default-security-headers.yml\ncp data/traefik/dynamic_conf/http.middlewares.gzip.yml.sample data/traefik/dynamic_conf/http.middlewares.gzip.yml\ncp data/traefik/dynamic_conf/http.middlewares.traefik-bouncer.yml.sample data/traefik/dynamic_conf/http.middlewares.traefik-bouncer.yml\ncp data/traefik/dynamic_conf/http.middlewares.traefik-dashboard-auth.yml.sample data/traefik/dynamic_conf/http.middlewares.traefik-dashboard-auth.yml\ncp data/traefik/dynamic_conf/tls.yml.sample data/traefik/dynamic_conf/tls.yml\ncp data/traefik-crowdsec-bouncer/.env.sample data/traefik-crowdsec-bouncer/.env\n```\n\n### 5. SSL-Zertifikate und Domain konfigurieren\n\nFügen Sie Ihre SSL-Zertifikats-E-Mail-Adresse und die gewünschte Domain für das Traefik-Dashboard in die entsprechenden Konfigurationsdateien ein:\n\n1.\tBearbeiten Sie die `data/traefik/traefik.yml` und ersetzen Sie die E-Mail-Adressen (die Adressen **müssen** identisch sein):\n    ```yaml\n    certificatesResolvers:\n      http_resolver:\n        acme:\n          email: \"deine@email.de\"\n          storage: \"/etc/traefik/acme_letsencrypt.json\"\n          httpChallenge:\n            entryPoint: web\n      tls_resolver:\n        acme:\n          email: \"deine@email.de\"\n          storage: \"/etc/traefik/tls_letsencrypt.json\"\n          tlsChallenge: {}\n    ```\n\n2.\tIn der Datei `.env` setzen Sie die gewünschte Domain für das Traefik-Dashboard:\n\n    ```bash\n    SERVICES_TRAEFIK_LABELS_TRAEFIK_HOST=HOST(`traefik.yourdomain.com`)\n    ```\n\n### 6. CrowdSec konfigurieren\n1. CrowdSec Konfigurationsdatein erstellen\n    ```bash\n    cd /opt/containers/traefik-crowdsec-stack/\n    docker compose up -d crowdsec \u0026\u0026 docker compose down\n    ```\n\n2.\tAcquis.yaml anpassen: Bearbeiten Sie die `/opt/containers/traefik-crowdsec-stack/data/crowdsec/config/acquis.yaml`, löschen Sie alle Zeilen und fügen Sie die folgenden Zeilen hinzu:\n    ```yaml\n    filenames:\n     - /var/log/auth.log\n     - /var/log/syslog\n    labels:\n      type: syslog\n    ---\n    filenames:\n     - /var/log/traefik/access.log\n    labels:\n      type: traefik\n    ---\n    ```\n\n3. Token generieren für den CrowdSec Bouncer für Trafik\n    ```bash\n    BOUNCER_KEY_TRAEFIK=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9!@#$%^\u0026*()-_=+[]{}\u003c\u003e?|')\n    BOUNCER_KEY_FIREWALL=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9!@#$%^\u0026*()-_=+[]{}\u003c\u003e?|')\n    echo \"BOUNCER_KEY_TRAEFIK=\\\"$BOUNCER_KEY_TRAEFIK\\\"\" \u003e\u003e /opt/containers/traefik-crowdsec-stack/.env\n    echo \"BOUNCER_KEY_FIREWALL=\\\"$BOUNCER_KEY_FIREWALL\\\"\" \u003e\u003e /opt/containers/traefik-crowdsec-stack/.env\n    echo \"Generated BOUNCER_KEY_FIREWALL: $BOUNCER_KEY_FIREWALL\"\n    ```\n4. Speichern Sie sich den Token für BOUNCER_KEY_FIREWALL! Diesen benötigen Sie später nochmal!\n\n### 7. Benutzer und Passwort für das Dashboard erstellen\n\nErstellen Sie einen Benutzer und ein Passwort für die HTTP-Basic-Authentifizierung im Traefik-Dashboard:\n\n```bash\nhtpasswd -c /opt/containers/traefik-crowdsec-stack/data/traefik/.htpasswd \u003cdeinBenutzername\u003e\n```\n\n### 8. Firewall Bouncer\n1. Installieren Sie die Repositories von CrowdSec\n    ```bash\n    curl -s https://install.crowdsec.net | sudo sh\n    ```\n2. Installieren Sie den Service für Ihre Firewall\n\n    **IPTables und UFW**\n    ```bash\n    sudo apt install crowdsec-firewall-bouncer-iptables\n    ```\n    **NFTables**\n    ```bash\n    sudo apt install crowdsec-firewall-bouncer-nftables\n    ```\n\n3.\tFirewall-Konfiguration anpassen: Bearbeiten Sie die Datei `/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml`:\n    ```\n    api_url: http://172.31.127.254:8080/\n    api_key: \u003cBOUNCER_KEY_FIREWALL\u003e\n    ```\nDer `BOUNCER_KEY_FIREWALL` sollte der Wert sein, den Sie generiert haben (in Schritt 6.3.).\n\n4. Firewall neustarten\n    ```\n    systemctl enable crowdsec-firewall-bouncer\n    systemctl restart crowdsec-firewall-bouncer\n    ```\n\n\n### 9. Firewall-Ports überprüfen\n\nStellen Sie sicher, dass die Firewall die Ports 80 (HTTP) und 443 (HTTPS) freigibt.\n\n### 10. Domain überprüfen\n\nVergewissern Sie sich, dass die von Ihnen gewählte Domain korrekt auf die IP-Adresse des Servers verweist.\n\n### 11. Stack starten\n\nSobald alle Konfigurationen abgeschlossen sind, können Sie den Stack starten:\n\n```bash\ndocker compose up -d\n```\n\n### 12. Zugriff auf das Traefik-Dashboard\n\nDas Traefik-Dashboard sollte nun über die von Ihnen konfigurierte Domain erreichbar sein. Sie werden zur Eingabe des HTTP-Basic-Auth-Benutzernamens und Passworts aufgefordert.\n\nhttps://traefik.yourdomain.com","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsycho0verload%2Ftraefik-crowdsec-stack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpsycho0verload%2Ftraefik-crowdsec-stack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsycho0verload%2Ftraefik-crowdsec-stack/lists"}