All apps · 0 apps
CrowdSec-Threat-Map
Docker app from kabelsalatundklartext's Repository
Overview
Readme
View on GitHub🛡️ CrowdSec Threat Map
Echtzeit-Angriffskarte — direkt aus eurer lokalen CrowdSec-Datenbank
📸 Preview
Interaktive Weltkarte · Animierte Angriffspfeile · Live-Feed · Mobile-ready

✨ Features
- 🌍 Interaktive Weltkarte mit animierten Angriffspfeilen (D3.js)
- 🎯 Auto-Fit Zoom — alle Angriffspunkte automatisch sichtbar
- 🔍 Echtzeit-Suche nach IP, Land, Stadt, Szenario, ASN
- 🚫📋 Ban-Status-Anzeige — 🚫 aktiver Ban / 📋 nur Alert/Historie
- 🔓 IP-Unban direkt aus dem Dashboard — löscht Decision UND Alert
- 📊 Sparkline — Angriffe/Stunde auf einen Blick
- 🎨 4 Farbthemen — Cyan, Alarm-Rot, Matrix-Grün, Amber
- 📥 CSV-Export — direkt neben den Feed-Seitenzahlen
- 📱 Vollständig responsive — Desktop und Mobile
- 〰️ Linien-Toggle — Angriffspfeile & Radar-Ringe ein-/ausblenden
- 🛡️ Dynamische IP-Whitelist — eigene IP automatisch alle 15 Min whitelisten
- 🟢 Whitelist-Badge — zeigt aktuelle IP + Status live im Dashboard
- 🌐 Sprache per Variable —
LANGUAGE=deoderLANGUAGE=enin docker-compose - 🏙️ Lokalisierte Stadtnamen — Nürnberg statt Nuremberg, München statt Munich etc.
- 📍 Korrigierte GeoIP — Vogtland/Plauen korrekt statt falscher Grenzregion
🚀 Installation — Unraid (App Store)
1. App Store öffnen
Unraid → Apps → Suchfeld: crowdsec-threat-map → Installieren
2. Pflichtfelder ausfüllen
| Unraid | Beispiel | Beschreibung |
|---|---|---|
| Server Breitengrad | 52.5200 |
⚠️ Pflicht — euer Breitengrad |
| Server Längengrad | 13.4050 |
⚠️ Pflicht — euer Längengrad |
Pfad /crowdsec/data |
/mnt/user/Docker/crowdsec/data |
⚠️ Pflicht — Pfad zu euren CrowdSec-Daten |
Pfad /crowdsec/postoverflows |
/mnt/user/Docker/crowdsec/postoverflows |
Für dynamische Whitelist |
Port 8080 |
8080 |
Port für das Dashboard (frei wählbar) |
Koordinaten finden: Rechtsklick auf Google Maps → „Was ist hier?"
CrowdSec-Pfad finden:
docker inspect crowdsec | grep -A5 "Mounts" # → "Source": "/mnt/user/Docker/crowdsec/data"
3. Optionale Einstellungen
| Feld | Standard | Beschreibung |
|---|---|---|
Variable SERVER_NAME |
MeinServer |
Anzeigename auf der Karte |
Variable CROWDSEC_CONTAINER |
crowdsec |
Name des CrowdSec-Containers |
Variable WHITELIST_ENABLED |
true |
Schützt vor Selbst-Ban bei IP-Wechsel |
Variable LANGUAGE |
de |
Sprache: de oder en |
Variable UNBAN_API_TOKEN |
(leer) | Empfohlen: Geheimer Token für Unban |
4. Starten
Auf Anwenden klicken → Container startet automatisch.
Dashboard: http://EURE-UNRAID-IP:8080
🚀 Installation — Docker
docker run -d \
--name crowdsec-monitor \
--restart unless-stopped \
-p 8080:8080 \
-v /pfad/zu/crowdsec/data:/crowdsec/data:ro \
-v /pfad/zu/crowdsec/postoverflows:/crowdsec/postoverflows \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--group-add 999 \
-e SERVER_LAT=52.5200 \
-e SERVER_LON=13.4050 \
-e SERVER_NAME=Berlin \
-e LANGUAGE=de \
ghcr.io/kabelsalatundklartext/crowdsec-threat-map-docker:latest
Oder mit docker-compose.yml — die aktuelle Version findet ihr im Repository unter docker/docker-compose.yml.
⚙️ Alle Variablen
| Variable | Standard | Beschreibung |
|---|---|---|
SERVER_LAT |
0.0 |
⚠️ Breitengrad des Servers |
SERVER_LON |
0.0 |
⚠️ Längengrad des Servers |
SERVER_NAME |
MeinServer |
Anzeigename auf der Karte |
LANGUAGE |
de |
Sprache der Oberfläche: de oder en |
CROWDSEC_CONTAINER |
crowdsec |
Name des CrowdSec-Docker-Containers |
CROWDSEC_DB_PATH |
/crowdsec/data/crowdsec.db |
Pfad zur CrowdSec SQLite-DB |
CROWDSEC_MMDB_PATH |
/crowdsec/data/GeoLite2-City.mmdb |
Pfad zur GeoIP-Datenbank |
CACHE_TTL |
60 |
Cache-Zeit in Sekunden |
DAYS_BACK |
365 |
Anzahl Tage für die Anzeige |
WHITELIST_ENABLED |
true |
Dynamische Whitelist aktivieren |
WHITELIST_FILE |
/crowdsec/postoverflows/s01-whitelist/my-whitelist.yaml |
Pfad zur Whitelist-YAML |
WHITELIST_INTERVAL |
900 |
Prüfintervall in Sekunden (15 min) |
CROWDSEC_RESTART_WAIT |
15 |
Wartezeit nach CrowdSec-Neustart (Sek.) |
CROWDSEC_RESTART_COOLDOWN |
300 |
Mindestabstand zwischen automatischen CrowdSec-Neustarts |
UNBAN_API_TOKEN |
(leer) | Empfohlen: Geheimer Token für den Unban-Endpunkt |
🔒 Sicherheit
Das Dashboard kann über den eingebundenen Docker-Socket CrowdSec-Bans aufheben (cscli). Behandelt Port 8080 daher wie eine Admin-Oberfläche:
| Empfehlung | Warum |
|---|---|
| Nicht ins Internet port-forwarden | Jeder Erreichbare kann sonst Bans löschen |
UNBAN_API_TOKEN setzen |
Schützt /unban vor fremden Aufrufen und CSRF (Header X-API-Token) |
| Nur im LAN / hinter VPN nutzen | Typisches Homelab-Setup |
| Zufälliges Token | z. B. openssl rand -hex 32 in docker-compose oder Unraid-Variable |
Token setzen (Beispiel):
- UNBAN_API_TOKEN=a1b2c3d4e5f6... # lang und zufällig
Ohne Token bleibt Unban wie bisher möglich — beim Start erscheint im Container-Log ein Hinweis.
Technische Absicherungen (ab v1.4.3):
- IP-Validierung (IPv4/IPv6) vor jedem Unban und bei der dynamischen Whitelist
- Kein offenes CORS mehr auf
/unban - Cooldown für automatische CrowdSec-Neustarts (
CROWDSEC_RESTART_COOLDOWN)
📦 Volumes
| Host-Pfad | Container-Pfad | Beschreibung | Pflicht? |
|---|---|---|---|
/pfad/zu/crowdsec/data |
/crowdsec/data:ro |
CrowdSec DB + GeoIP-MMDB | ✅ Ja |
/pfad/zu/crowdsec/postoverflows |
/crowdsec/postoverflows |
Für dynamische Whitelist | Nur wenn WHITELIST_ENABLED=true |
/var/run/docker.sock |
/var/run/docker.sock:ro |
Für IP-Unban + Whitelist-Neustart | Nur für Unban-Button |
Unraid-Beispielpfade:
/mnt/user/Docker/crowdsec/data/mnt/user/Docker/crowdsec/postoverflows
🛡️ Dynamische IP-Whitelist
Heimanschlüsse bekommen meist täglich eine neue IP. Ohne Whitelist kann CrowdSec euch selbst bannen. Der eingebaute Hintergrund-Thread prüft alle 15 Minuten eure aktuelle öffentliche IP und aktualisiert die Whitelist-YAML automatisch.
Voraussetzungen:
WHITELIST_ENABLED=true(Standard)- Volume
/crowdsec/postoverflowseingebunden /var/run/docker.sockeingebunden- Docker-GID korrekt gesetzt (
--group-add 999bzw. in Unraid übergroup_add)
Wie es funktioniert:
- Exporter ermittelt eure aktuelle öffentliche IP
- Vergleich mit der aktuellen Whitelist-YAML
- Bei Änderung: YAML wird aktualisiert, CrowdSec wird neu gestartet
- Wartezeit nach Neustart konfigurierbar via
CROWDSEC_RESTART_WAIT
Dashboard-Badge:
| Farbe | Bedeutung |
|---|---|
| 🟢 Grün | IP gewhitelistet, alles ok |
| 🔵 Cyan | IP wurde gerade aktualisiert |
| 🔴 Rot | Fehler beim Update |
🔓 IP-Unban
Mit
UNBAN_API_TOKENist der Unban-Endpunkt geschützt; das Dashboard sendet den Token automatisch mit.
Jeder Feed-Eintrag zeigt den Ban-Status direkt an:
| Icon | Bedeutung | Klick |
|---|---|---|
| 🚫 (leuchtend) | Aktiver Ban vorhanden | Decision + Alert löschen |
| 📋 (leuchtend) | Nur Alert/Historie | Nur Alert löschen |
🗺️ GeoIP & Stadtanzeige
Ohne GeoIP-Datenbank werden keine Städte angezeigt, nur Länderpunkte.
GeoLite2-City.mmdb einrichten:
- Kostenlos registrieren: MaxMind GeoLite2
GeoLite2-City.mmdbherunterladen- In euren CrowdSec-Datenordner legen (gleicher Ordner wie
crowdsec.db) - Container neu starten
🛠️ Fehlerbehebung
Dashboard leer / keine Daten:
docker logs crowdsec-monitor
curl http://EURE-IP:8080/metrics | head -10
Falscher CrowdSec-Pfad:
docker inspect crowdsec | grep -A5 "Mounts"
Unban funktioniert nicht:
# Docker-GID prüfen
getent group docker | cut -d: -f3
# → In Unraid unter "Extra Parameters" als --group-add eintragen
# Bei gesetztem UNBAN_API_TOKEN: 401 = Token fehlt oder falsch
curl -X POST http://EURE-IP:8080/unban \
-H "Content-Type: application/json" \
-H "X-API-Token: DEIN-TOKEN" \
-d '{"ip":"1.2.3.4"}'
Whitelist-Fehler:
curl http://EURE-IP:8080/whitelist-status
Dashboard zeigt Verbindungsfehler:
# Prüfen ob entrypoint.sh die URL korrekt gesetzt hat
docker exec crowdsec-monitor grep "EXPORTER_URL" /var/www/html/index.html
# → Sollte '/metrics' zeigen
📋 Changelog
Vollständige Versionshistorie → CHANGELOG.md
🔗 Links
- MaxMind GeoLite2 — kostenlose GeoIP-Datenbank
- CrowdSec Docker Hub
- CrowdSec Docs
📄 Lizenz
GNU General Public License v3.0 (GPL-3.0)
| ✅ Privat & Homelab nutzen | ✅ Verändern & anpassen |
| ✅ Weitergeben & teilen | ✅ Eigene Versionen veröffentlichen |
| ✅ Kommerzieller Einsatz erlaubt | ❌ Closed-Source-Abwandlungen verboten |
| ✅ Forks müssen GPL-3.0 bleiben | ✅ Quellcode muss immer offen bleiben |
Bei Weitergabe oder Veröffentlichung: Namensnennung + GPL-3.0-Lizenz beibehalten.
"CrowdSec Threat Map" von kabelsalatundklartext — GitHub
Install CrowdSec-Threat-Map on Unraid in a few clicks.
Find CrowdSec-Threat-Map in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/kabelsalatundklartext/crowdsec-threat-map-docker:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--group-add 999
Template configuration
Port für das Web-Dashboard — frei wählbar, z.B. 8080, 5757, etc.
- Target
- 8080
Pfad zum CrowdSec data-Verzeichnis (enthält crowdsec.db und optional GeoLite2-City.mmdb). Tipp: docker inspect crowdsec | grep -A5 Mounts
- Target
- /crowdsec/data
Pfad zum postoverflows-Verzeichnis. Wird für die dynamische IP-Whitelist benötigt (WHITELIST_ENABLED=true). Kann leer gelassen werden wenn Whitelist deaktiviert.
- Target
- /crowdsec/postoverflows
Docker Socket — wird für IP-Unban und dynamische Whitelist (CrowdSec-Neustart) benötigt.
- Target
- /var/run/docker.sock
- Default
- /var/run/docker.sock
- Value
- /var/run/docker.sock
Breitengrad eures Servers — erscheint als Zielpunkt auf der Karte. Tipp: Rechtsklick auf Google Maps → Was ist hier?
- Target
- SERVER_LAT
- Default
- 0.0
- Value
- 0.0
Längengrad eures Servers — erscheint als Zielpunkt auf der Karte. Tipp: Rechtsklick auf Google Maps → Was ist hier?
- Target
- SERVER_LON
- Default
- 0.0
- Value
- 0.0
Anzeigename eures Servers im Dashboard (z.B. Hamburg, Berlin, Homelab).
- Target
- SERVER_NAME
- Default
- MeinServer
- Value
- MeinServer
Oberflächensprache des Dashboards: de (Deutsch) oder en (Englisch).
- Target
- LANGUAGE
- Default
- de
- Value
- de
Name des CrowdSec Docker-Containers. Prüfen mit: docker ps | grep crowdsec
- Target
- CROWDSEC_CONTAINER
- Default
- crowdsec
- Value
- crowdsec
Verhindert Selbst-Ban bei wechselnder IP (typisch bei deutschen Heimanschlüssen). Eigene IP wird automatisch alle 15 Minuten in CrowdSec gewhitelistet.
- Target
- WHITELIST_ENABLED
- Default
- true
- Value
- true
Pfad zur Whitelist-YAML innerhalb des Containers. Nur ändern wenn ihr einen anderen Postoverflows-Pfad nutzt.
- Target
- WHITELIST_FILE
- Default
- /crowdsec/postoverflows/s01-whitelist/my-whitelist.yaml
- Value
- /crowdsec/postoverflows/s01-whitelist/my-whitelist.yaml
Wie oft die eigene IP geprüft und ggf. gewhitelistet wird. Standard: 900 Sekunden (15 Minuten).
- Target
- WHITELIST_INTERVAL
- Default
- 900
- Value
- 900
Wie lange die Metrik-Daten gecacht werden bevor sie neu aus der DB geladen werden. Standard: 60 Sekunden.
- Target
- CACHE_TTL
- Default
- 60
- Value
- 60
Wie viele Tage Angriffs-Historie angezeigt wird. Standard: 365 Tage.
- Target
- DAYS_BACK
- Default
- 365
- Value
- 365
Wartezeit nach CrowdSec-Neustart (bei Whitelist-Update). Erhöhen wenn Timeout-Fehler im Log erscheinen. Standard: 15 Sekunden.
- Target
- CROWDSEC_RESTART_WAIT
- Default
- 15
- Value
- 15
Empfohlen: Zufälliges Token (z.B. openssl rand -hex 32). Schützt den Unban-Endpunkt vor unbefugten Aufrufen. Leer lassen nur im isolierten LAN.
- Target
- UNBAN_API_TOKEN
Mindestabstand zwischen automatischen CrowdSec-Neustarts bei Whitelist-Updates. Standard: 300 Sekunden.
- Target
- CROWDSEC_RESTART_COOLDOWN
- Default
- 300
- Value
- 300