Dashboard de monitoring réseau pour Raspberry Pi : supervision OpenVPN, Pi-hole et sécurité réseau depuis une interface web locale.
En gérant une Raspberry Pi dédiée hébergeant Pi-hole et PiVPN, j’avais besoin d’un moyen rapide de vérifier l’état du VPN, les statistiques DNS et la sécurité du système sans passer par des commandes SSH. NetWatch est un dashboard web local qui centralise toutes ces informations en une seule page, auto-rafraîchie toutes les 30 secondes.
Statut du service, clients actuellement connectés (nom, IP, trafic, heure de connexion), historique des connexions et déconnexions, tentatives de connexion non autorisées.
Statistiques DNS en temps réel, taux de blocage, top domaines bloqués. L’authentification auprès de l’API Pi-hole v6 se fait automatiquement via le fichier /etc/pihole/cli_pw, sans configuration manuelle.
Score de sécurité calculé, état des jails Fail2ban (actives + IPs bannies), tentatives SSH échouées sur les dernières 24h, ports en écoute.
Température CPU, utilisation RAM et disque, uptime, IP publique.
status-version 3), API Pi-hole, outils système (ss, fail2ban-client, vcgencmd)Le choix du Flask système plutôt qu’un virtualenv est intentionnel : cela évite toute gestion de dépendances supplémentaire sur une machine dont la configuration est déjà bien chargée.
Le projet inclut un script install.sh qui :
/opt/network-dashboard/sudoers-dashboard)git clone https://github.com/hauserpierre/netwatch.git
cd netwatch
sed -i 's/pi/TON_USER/g' network-dashboard.service sudoers-dashboard
sudo bash install.sh
Le dashboard est ensuite accessible sur http://<IP_DE_TA_PI>:5000 — uniquement depuis le réseau local ou via VPN.
Le backend cherche le fichier status OpenVPN dans plusieurs emplacements courants (/var/log/openvpn-status.log, /etc/openvpn/server/openvpn-status.log, etc.) pour s’adapter aux différentes configurations sans paramétrage manuel. Le format status-version 3 (lignes CLIENT_LIST tabulées) est parsé nativement.
Le port 5000 est ouvert uniquement pour le sous-réseau local et le subnet VPN via iptables, persisté avec netfilter-persistent. Le dashboard n’est jamais exposé sur internet.