Skip to content
G. G. testé !
🌐rĂ©seau 🔒sĂ©curitĂ© 📖guide

SWAG, mon reverse proxy 🔒 CrowdSec cscli, Metabase, homepage widget... (10/XX)

Utiliser cscli pour gérer les décisions CrowdSec depuis la ligne de commande, déployer le dashboard Metabase, et ajouter le widget CrowdSec dans homepage.

2 min de lecture
SWAG, mon reverse proxy 🔒 CrowdSec cscli, Metabase, homepage widget... (10/XX)
Regarder la vidĂ©o — timecodes, vidĂ©os liĂ©es 42min 19s

En bref

Cette vidéo fait partie de ma série sur le reverse proxy SWAG. Elle couvre trois points progressifs autour de CrowdSec : accéder à cscli directement depuis la machine hÎte, déployer Metabase pour avoir un dashboard de supervision, et ajouter le widget CrowdSec dans homepage.


Le contexte : pourquoi chercher des alternatives à l’interface web CrowdSec

CrowdSec est une solution open source trĂšs puissante pour surveiller ce qui se passe sur vos services exposĂ©s sur internet — dĂ©tection de comportements suspects, bots, tentatives d’exploitation de failles. Mais son interface graphique officielle, disponible sur crowdsec.net, est trĂšs limitĂ©e dans sa version gratuite. La gestion des dĂ©cisions (dĂ©bannir une IP, par exemple), les blocklist premium, les interactions avancĂ©es — tout ça est derriĂšre un paywall.

Ce qui manque concrĂštement : une petite corbeille pour dĂ©bannir une adresse IP depuis l’interface web. Ce n’est pas grand-chose, mais sans elle, il faut obligatoirement passer par la ligne de commande Ă  l’intĂ©rieur du conteneur Docker. C’est pour ça que j’ai cherchĂ© trois solutions complĂ©mentaires, de la plus simple Ă  la plus avancĂ©e.


Étape 1 — cscli directement depuis la machine hîte

cscli, c’est la ligne de commande de CrowdSec. Pour l’utiliser, il faut normalement faire un docker exec dans le conteneur CrowdSec. Ce n’est pas trùs pratique au quotidien.

La solution : crĂ©er un alias dans le .bashrc de la machine hĂŽte. L’alias cscli devient une réécriture de docker exec -t crowdsec cscli — avec les arguments qui suivent propagĂ©s automatiquement. Il faut Ă©diter le .bashrc avec nano ou vi, ajouter l’alias, sauvegarder, puis se reconnecter ou sourcer le fichier pour que ça prenne effet.

alias cscli='docker exec -t crowdsec cscli'

Une fois l’alias en place, on peut par exemple lister les dĂ©cisions actives ou supprimer un ban directement depuis la machine hĂŽte :

cscli decisions list
cscli decisions delete -i <adresse_ip>

J’ai le mĂȘme principe pour OCC, la ligne de commande Nextcloud — bonus si vous l’utilisez :

alias occ='docker exec -t nextcloud occ'

Étape 2 — Dashboard Metabase pour superviser CrowdSec

Il n’existe pas d’interface graphique open source complĂšte pour CrowdSec en auto-hĂ©bergement. La solution quasi-officielle Ă©tait cscli dashboard — une commande qui gĂ©nĂ©rait automatiquement un conteneur Metabase prĂ©configurĂ©. Mais cette fonctionnalitĂ© est maintenant dĂ©prĂ©ciĂ©e et ne fonctionne plus (not supported).

Il faut donc le faire Ă  la main. Ce n’est pas trĂšs compliquĂ© mais il y a quelques piĂšges.

CrowdSec fournit un Dockerfile personnalisĂ© qui part de l’image officielle Metabase et y injecte automatiquement les assets prĂ©configurĂ©s pour CrowdSec — les dashboards, les requĂȘtes SQL, tout. Le rĂ©sultat : Metabase dĂ©marre dĂ©jĂ  avec les dashboards CrowdSec prĂȘts Ă  l’emploi. Le lien vers ce Dockerfile est dans la description de la vidĂ©o.

Ce nouveau service crowdsec-dashboard s’ajoute dans le docker-compose SWAG. Quelques points importants à comprendre :

Le volume de donnĂ©es est partagĂ© avec CrowdSec — Metabase lit directement la base de donnĂ©es CrowdSec. Il faut donc que les deux services pointent vers le mĂȘme rĂ©pertoire. Le PUID et PGID dĂ©pendent de votre machine — sur OpenMediaVault c’est 998 et 1000, mais Ă  vĂ©rifier sur votre installation. Si les droits ne sont pas bons, Metabase ne pourra pas lire la base.

Je ne publie pas de port direct sur la machine hĂŽte — le service sera accessible uniquement via le reverse proxy SWAG. Je le configure en restart: unless-stopped : il redĂ©marre sur crash mais pas sur arrĂȘt explicite.

Les identifiants par défaut pour se connecter à Metabase sont précisés dans la description de la vidéo. Une fois connecté, vous retrouvez les dashboards préconfigurés : cartes géographiques des attaquants, tableaux des alertes, décisions actives.

Mettre le dashboard derriĂšre SWAG

SWAG fournit un fichier de configuration exemple pour CrowdSec dashboard. Il suffit de le copier et de le renommer en crowdsec-dashboard.subdomain.conf. Deux conditions pour que ça fonctionne sans modification : le conteneur doit s’appeler crowdsec-dashboard et le sous-domaine aussi.

Je configure ce service en accùs interne uniquement — aucune raison d’exposer ce dashboard sur internet. Une fois le fichier de config en place, SWAG avec auto-reload le prend en compte automatiquement. Authelia s’applique dessus comme pour les autres services.

Dernier point : une fois le dashboard accessible via le reverse proxy, je supprime le port direct exposĂ© sur la machine hĂŽte. Le dashboard n’est plus accessible directement — uniquement via le reverse proxy sĂ©curisĂ©.


Étape 3 — Widget CrowdSec dans homepage

Homepage peut afficher un widget CrowdSec qui montre en temps rĂ©el les alertes actives et les bans. C’est le niveau le plus dĂ©licat — pas forcĂ©ment complexe, mais si on n’a pas une bonne maĂźtrise des rĂ©seaux Docker et des API, on peut y perdre beaucoup de temps.

Pour que homepage puisse joindre le conteneur CrowdSec sur son port 8080 (l’API locale), plusieurs conditions doivent ĂȘtre rĂ©unies.

Le rĂ©seau Docker : homepage doit ĂȘtre sur le mĂȘme rĂ©seau que CrowdSec. Il faut ajouter le rĂ©seau homepage aux rĂ©seaux du conteneur CrowdSec dans le docker-compose.

L’adresse de l’API locale : vĂ©rifier avec cscli lapi status que l’API locale Ă©coute bien sur 0.0.0.0:8080 et non 127.0.0.1:8080. En 127.0.0.1, elle n’est accessible que localement dans le conteneur — homepage ne pourra pas la joindre depuis un autre conteneur.

Les trusted IPs : CrowdSec refuse par dĂ©faut les appels depuis des machines non autorisĂ©es. Il faut ajouter les plages IP Docker dans la configuration trusted_ips de CrowdSec. Vous pouvez mettre toutes les plages Docker, c’est un peu large mais ça reste dans les rĂ©seaux internes Docker. Sinon, fixer une IP statique pour le conteneur homepage — mais attention, Docker peut changer les IPs entre les redĂ©marrages si elles ne sont pas fixĂ©es.

La clĂ© d’API locale : se trouve dans le fichier local_api_credentials.yaml du rĂ©pertoire CrowdSec. Je l’externalise dans une variable d’environnement dans le docker-compose.

La configuration du widget se fait via des labels sur le service CrowdSec dans le docker-compose — le type du widget, les champs Ă  afficher (alerts et bans), l’URL de l’API locale, et la clĂ© d’API. La documentation homepage couvre ça en dĂ©tail.

Déboguer quand ça ne marche pas

Les logs homepage sont trĂšs utiles. Un 401 signature invalide indique que la clĂ© API est incorrecte. Un timeout ou une erreur rĂ©seau indique que le rĂ©seau Docker n’est pas correctement configurĂ© entre homepage et CrowdSec. RedĂ©marrer les deux conteneurs aprĂšs chaque modification de configuration.


En résumé

Trois niveaux de supervision pour CrowdSec, du plus simple au plus avancé :

  1. Alias cscli — 2 minutes, immĂ©diatement utile pour gĂ©rer les bans depuis la machine hĂŽte sans rentrer dans le conteneur
  2. Dashboard Metabase — quelques dizaines de minutes, supervision visuelle complùte, accessible via le reverse proxy
  3. Widget homepage — plus dĂ©licat Ă  configurer, mais rĂ©sultat immĂ©diat : un coup d’Ɠil sur la page d’accueil suffit pour voir l’état de CrowdSec

CrowdSec reste un outil puissant mĂȘme sans payer. Ces trois solutions permettent de compenser les limitations de l’interface gratuite et d’avoir une supervision correcte de son installation.

Signaler une erreur

Pour les questions techniques

Passe par les commentaires YouTube ou le Discord — ta question profite à tout le monde.

Ce formulaire est uniquement pour signaler une erreur dans le contenu.

Retour aux articles
Partager :

Suivre la chaĂźne

Une vidĂ©o chaque jeudi Ă  17h30 — abonnez-vous pour ne rien rater.