Files
Fail2banMqttActionBanishment/.env.example
T
2026-07-20 11:05:07 +02:00

130 lines
6.2 KiB
Bash

# Variables d'environnement de l'émetteur Django et des scripts associés.
#
# Copié une seule fois vers .env par install.sh (jamais committé, cf.
# .gitignore) — jamais régénéré automatiquement ensuite pour ne pas écraser
# des valeurs déjà personnalisées ; DJANGO_SECRET_KEY est généré aléatoirement
# à la création, FAIL2BAN_CLIENT_PATH est résolu et mis à jour à chaque
# exécution de install.sh.
#
# Lu par systemd (EnvironmentFile=.env dans generic/emitter/*.service) ET
# directement par Django via python-dotenv (config/settings/base.py), pour
# que `manage.py ...` en dev/CLI lise les mêmes valeurs sans avoir à les
# exporter manuellement.
DJANGO_SECRET_KEY=changeme
# Domaine public du tableau de bord derrière nginx (reverse proxy TLS) —
# laisser vide si le dashboard n'est accessible qu'en local/VPN, sans nginx
# devant. "sudo make install-nginx" lit cette valeur pour déployer le
# vhost, obtenir le certificat Let's Encrypt, et met à jour
# DJANGO_ALLOWED_HOSTS/DJANGO_CSRF_TRUSTED_ORIGINS/DJANGO_SECURE_SSL
# ci-dessous automatiquement — ne pas les éditer à la main si vous
# utilisez cette commande, elle les écrase à chaque exécution.
DASHBOARD_DOMAIN=
# Page publique /communaute/ (master uniquement, désactivée par défaut) :
# formulaire de demande d'inscription à la communauté, jamais de jeton
# émis sans validation manuelle dans /admin/. Nécessite DEFAULT_FROM_EMAIL
# ci-dessous pour que l'email de validation puisse partir.
COMMUNITY_ENROLLMENT_ENABLED=false
DEFAULT_FROM_EMAIL=
# Optionnel : reçoit une notification (mail_admins) à chaque nouvelle
# demande d'inscription, en plus de sa visibilité dans /admin/. Vide =
# pas de notification envoyée (la demande reste quand même visible).
ADMIN_EMAIL=
DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost
# Domaines complets (avec schéma) à autoriser en CSRF derrière un reverse
# proxy TLS (ex. nginx, voir generic/nginx/) — ex. https://dashboard.example.org
DJANGO_CSRF_TRUSTED_ORIGINS=
# Base de données : "sqlite" (défaut), "mariadb" (voir "sudo ./install.sh
# install-mariadb") ou "postgresql" (provisionnement manuel du serveur/de
# la base pour l'instant, pas de sous-commande install.sh dédiée — driver
# emitter/requirements-postgresql.txt à installer à la main dans le venv).
# DB_* n'a d'effet qu'avec DB_ENGINE=mariadb ou postgresql. DB_PORT par
# défaut ci-dessous (3306) est celui de mariadb : à changer en 5432 pour
# postgresql (ou laisser vide, config/settings/production.py retombe déjà
# sur 5432 si DB_PORT est absent).
DB_ENGINE=sqlite
DB_NAME=fail2ban_emitter
DB_USER=fail2ban_emitter
DB_PASSWORD=banishing
DB_HOST=127.0.0.1
DB_PORT=3306
MQTT_BROKER_HOST=127.0.0.1
MQTT_BROKER_PORT=1883
MQTT_BROKER_USERNAME=emitter
MQTT_BROKER_PASSWORD=banishing
# IP du second listener mosquitto local (en plus de 127.0.0.1), sur le
# réseau VPN de confiance de CE VPS — permet le développement/test de
# l'émetteur depuis un poste distant connecté au même VPN. Propre à chaque
# noeud (chaque VPS a sa propre IP VPN, ex. tun0) : jamais une valeur
# partagée entre noeuds. Laisser vide si ce VPS n'a pas de VPN ou si l'accès
# distant au broker local n'est pas souhaité : install.sh (deploy_mosquitto)
# désactive alors ce second listener (loopback seul) au lieu de deviner une
# IP ou de planter au démarrage de mosquitto.
MQTT_VPN_LISTENER_IP=
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
# À passer à "true" une fois le reverse proxy TLS en place (voir
# generic/nginx/fail2ban-emitter.example.conf) — le forcer sans proxy TLS
# devant l'émetteur casserait tout (boucle de redirection, cookies rejetés).
DJANGO_SECURE_SSL=false
# Résolu automatiquement par install.sh (command -v fail2ban-client) ; doit
# rester cohérent avec le chemin réel de fail2ban-client sur ce système.
FAIL2BAN_CLIENT_PATH=/usr/bin/fail2ban-client
# Interface réseau WAN de CE noeud (generic/firewall/firewall-launcher.sh,
# lu par firewall.service via EnvironmentFile=) — ajouté une seule fois par
# install.sh (détection : interface de la route par défaut), jamais
# réécrit ensuite. Corriger ici si erroné (ip -o link show), en particulier
# sur une interface au nommage prévisible (enp1s0, ens18...) plutôt que
# l'ancien défaut historique "eth0".
ETH_IF=eth0
# À définir UNIQUEMENT si ce noeud est directement sur un réseau local
# (ex. derrière une box résidentielle, ETH_IF = aussi l'interface LAN) —
# exempte ce sous-réseau du filtre anti-spoof de firewall-launcher.sh,
# qui sinon droppe silencieusement le trafic local légitime (NAT
# loopback/hairpin de la box, autre appareil du LAN) en le confondant
# avec une IP source usurpée. Laisser vide sur un VPS à IP publique
# dédiée (comportement inchangé).
LAN_NET=
# AbuseIPDB (REPORT_ABUSE, Phase 4, manage.py publish_command REPORT_ABUSE
# <ip>, master uniquement) — laisser ABUSEIPDB_ENABLED=false (défaut) ou
# ABUSEIPDB_API_KEY vide tant que vous ne voulez pas soumettre de vrais
# rapports publics : la commande tombe alors en dry-run, journalise ce
# qu'elle aurait envoyé sans rien transmettre. Clé obtenue sur
# https://www.abuseipdb.com/account/api.
ABUSEIPDB_ENABLED=false
ABUSEIPDB_API_KEY=
# Relais vers le broker master (Phase 2.b/4, mTLS) — voir
# scripts/generate-node-cert.sh. MQTT_MASTER_CLIENT_CERT/KEY et
# MQTT_MASTER_LISTENER_CERT/KEY ont des valeurs par défaut dans
# config/settings/base.py (emitter/master-tls/*.{crt,key}) ; les redéfinir
# ici seulement si les certificats vivent ailleurs.
MQTT_MASTER_HOST=mqtt.domain.net
MQTT_MASTER_PORT=8883
MQTT_MASTER_NODE_NAME=
# Lien vers le dashboard du master, affiché dans la sidebar de CE noeud
# (ex. https://banishing.domain.net, sans slash final) — laisser vide sur
# le master lui-même. Un seul lien hiérarchique (client -> master), pas de
# liens croisés entre noeuds (essayé puis abandonné, ne passe pas à
# l'échelle avec beaucoup de clients abonnés).
MASTER_DASHBOARD_URL=
# Largeur de la sidebar du dashboard (CSS, ex. "220px" ou "16rem") — à
# élargir si le roster (Phase 3) fait grandir le bloc "Noeuds" au point
# que les libellés/alias soient tronqués. Laisser vide pour garder la
# valeur par défaut du CSS (--sidebar-w, main.css).
DASHBOARD_SIDEBAR_WIDTH=