Verkko
Scanner de réseau pour homelab : il découvre en continu les appareils de chaque réseau, les compare à mon inventaire, modifiable depuis l'interface, et signale les anomalies. Il tourne sur le NAS, derrière un mot de passe.
- Année
- 2026
- Cadre
- Outil personnel pour mon homelab
- Technologies
- Python
- POO
- Réseau
- SQLite
- Prometheus
- Sphinx

01 · Contexte
Le défi
Besoin concret : dans un homelab qui grandit (un NAS, un hyperviseur Proxmox, une dizaine de VM, des objets connectés), j'oubliais quelle IP fixe j'avais donnée à quel appareil, et la page « appareils connectés » du routeur ne connaît ni les IP fixes ni les VM. La v1 répondait à trois questions : qu'est-ce qui est en ligne, est-ce conforme à mon inventaire, et quelle IP est encore libre. Toutes les deux minutes, elle découvre les appareils de chaque réseau (en ARP sur un segment local, en ICMP et sonde TCP au-delà d'un routeur), les enrichit, puis signale les anomalies. À l'usage, la v2 a levé ses limites : ajouter un appareil inconnu ne demande plus d'éditer un fichier sur le NAS ni de redémarrer, un portable en DHCP se déclare par sa MAC, une nouvelle VM Proxmox entre seule dans l'inventaire, et Verkko a rejoint la supervision du homelab.
02 · Architecture
Comment c'est construit
Les points clés
- Architecture orientée objet en couches : chaque couche ne dépend que de celles du dessous
- Méthode de découverte choisie automatiquement par réseau : ARP, ou ICMP et sonde TCP
- Inventaire en base, modifiable depuis l'interface ; appareils reconnus par leur MAC, y compris en DHCP
- Détection du type d'appareil par règles, avec un niveau de confiance, et ajout automatique des VM Proxmox
- Métriques Prometheus protégées par jeton, tableau de bord Grafana et alertes ; disponibilité par appareil qui exclut les heures où le NAS est éteint
- Mot de passe unique haché en argon2, réveil des machines par Wake-on-LAN, documentation Sphinx et 17 fiches de décision
03 · En images
Galerie

La carte d'un /24 en mode démo : une case par adresse, les zones du plan d'adressage, la plage DHCP et les anomalies repérées 
Ce que Verkko voit sur un segment local et sur un réseau routé 
Le déroulé d'un scan, de la découverte à l'interface web 
Les couches du code et le sens des dépendances
Cliquer sur une image l'ouvre en plein écran, avec navigation entre les captures.
04 · Bilan
Ce que j'en retire
J'ai appris à structurer un vrai projet en orienté objet : des couches qui ne dépendent que de celles du dessous, des stratégies interchangeables pour la découverte et l'enrichissement, et une racine de composition qui assemble le tout et permet de remplacer n'importe quel objet dans les tests et le mode démo. J'ai aussi appris à documenter avec Sphinx : des pages en Markdown, des fiches de décision qui expliquent les choix, un glossaire, et des schémas générés par le code plutôt que dessinés à la main. Avec la v2, j'ai appris à faire évoluer un projet qui tourne déjà : revenir sur mes propres choix, comme l'inventaire en YAML remplacé par une base, et l'écrire dans une nouvelle fiche de décision plutôt que d'effacer l'ancienne.