← Retour aux projets NetWatch — Dashboard réseau Raspberry Pi
Infrastructure En cours

NetWatch — Dashboard réseau Raspberry Pi

Dashboard de monitoring réseau pour Raspberry Pi : supervision OpenVPN, Pi-hole et sécurité réseau depuis une interface web locale.

2026
Infrastructure
En cours
Python, Flask, OpenVPN, Pi-hole, Raspberry Pi, Fail2ban, systemd

Contexte

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.

Fonctionnalités

OpenVPN

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.

Pi-hole v5/v6

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.

Sécurité réseau

Score de sécurité calculé, état des jails Fail2ban (actives + IPs bannies), tentatives SSH échouées sur les dernières 24h, ports en écoute.

Système

Température CPU, utilisation RAM et disque, uptime, IP publique.

Stack

  • Backend : Python 3 + Flask (paquet système Debian/Raspbian — pas de virtualenv)
  • Frontend : HTML/CSS/JS vanilla, aucune dépendance externe
  • Sources de données : journald, fichier status OpenVPN (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.

Installation

Le projet inclut un script install.sh qui :

  • Copie les fichiers vers /opt/network-dashboard/
  • Configure les permissions sudo nécessaires (via un fichier sudoers-dashboard)
  • Installe et démarre le service systemd
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.

Points techniques notables

Détection automatique du fichier status OpenVPN

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.

Sécurité d’accès

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.