Una precisazione prima di iniziare: VedettaVip non è interamente “farina del mio sacco”. Ho ideato e sviluppato il progetto appoggiandomi in modo sostanziale a Claude Code, che mi ha affiancato nella progettazione e nell’implementazione. Il risultato nasce quindi dalla mia esperienza e dalle mie esigenze di rete, ma anche da un importante lavoro svolto con l’assistenza dell’intelligenza artificiale.
VedettaVip è il mio ultimo progetto: un sistema open source di monitoraggio di rete costruito intorno a una mappa topologica aggiornata in tempo reale. L’idea nasce dalla nostalgia per la semplicità visiva di MikroTik The Dude e dal desiderio di avere uno strumento moderno, gradevole su uno schermo NOC e rapido da configurare.

Che cos’è VedettaVip
VedettaVip controlla apparati e collegamenti tramite ICMP, SNMP e API RouterOS, rappresentandoli su una mappa SVG interattiva. Non vuole sostituire piattaforme generaliste come Zabbix o LibreNMS: il suo punto centrale è la topologia, con informazioni immediatamente leggibili e una configurazione visuale basata sul drag & drop.
I nodi assumono un colore in base allo stato — verde per Up, arancione per Partial, rosso per Down e grigio per Unknown — mentre i collegamenti mostrano separatamente traffico trasmesso e ricevuto, variando colore e spessore in funzione dell’utilizzo.
Funzionalità principali
- Mappa topologica live: pan, zoom, snap alla griglia, etichette personalizzabili e modalità di sola visualizzazione per gli schermi NOC.
- Sottomappe: stato aggregato calcolato sullo stato peggiore dei dispositivi discendenti, aggiornato in tempo reale.
- Polling: ICMP con isteresi, SNMP v1/v2c, inventario delle interfacce e traffico ricavato dai contatori a 64 bit, con fallback a 32 bit.
- Integrazione MikroTik RouterOS: CPU, memoria, temperatura, tensione, uptime, versione, interfacce sorvegliate e peer WireGuard.
- Discovery: vicini RouterOS, LLDP e CDP, tabelle ARP e lease DHCP, scansioni di subnet, DNS, SNMP, porte TCP e riconoscimento del produttore dal MAC address.
- Metriche storiche: traffico, latenza, perdita e dati RouterOS conservati e aggregati tramite TimescaleDB.
- Notifiche: email e Telegram, dipendenze padre/figlio, soppressione dei flap, finestre di manutenzione, promemoria e presa in carico.
- Gestione: utenti con ruoli Admin, Operatore e Lettura, oltre a importazione ed esportazione CSV dei dispositivi.
Un agente di polling separato
Il polling è eseguito da un processo indipendente che non accede direttamente al database. L’agente comunica esclusivamente con l’API tramite HTTPS e una chiave dedicata. Questa scelta semplifica la sicurezza e prepara il terreno per l’uso futuro di agenti remoti installati nelle reti dei clienti.
Architettura del progetto
Browser (Blazor WebAssembly)
│ SignalR / REST
▼
VedettaVip.Api ─────────► PostgreSQL + TimescaleDB
▲
│ HTTPS / X-Agent-Key
│ SignalR
VedettaVip.Worker
(ICMP, SNMP, RouterOS, discovery)
Lo stack utilizza .NET 10, ASP.NET Core, Blazor, SignalR, Entity Framework Core, PostgreSQL 17 con TimescaleDB, SharpSnmpLib, MailKit, ApexCharts e Caddy. Nell’installazione Docker il Worker richiede soltanto la capability NET_RAW, necessaria per ICMP.
Avvio rapido con Docker Compose
Per una prova è sufficiente un host Linux con Docker Engine e il plugin Compose:
git clone https://github.com/dummy1969/vedettavip.git
cd vedettavip
cp deploy/.env.example deploy/.env
chmod 600 deploy/.env
Nel file deploy/.env vanno impostati almeno l’indirizzo o il nome DNS del server, la password PostgreSQL e una chiave sicura per l’agente. Successivamente si può avviare lo stack:
docker compose -f deploy/docker-compose.yml up -d --build
docker compose -f deploy/docker-compose.yml logs api | grep "Codice di setup"
Il codice riportato nei log consente di creare il primo amministratore. La mappa iniziale contiene dispositivi dimostrativi con indirizzi fittizi, che possono essere sostituiti dalla pagina Dispositivi.
Configurazione e sicurezza
I valori specifici dell’installazione restano fuori dal repository: variabili d’ambiente, override di Docker Compose e file locali di configurazione .NET sono ignorati sia da Git sia dal contesto di build. Le credenziali inserite dall’interfaccia — community SNMP, password RouterOS e SMTP, token Telegram — vengono cifrate con ASP.NET Core Data Protection.
Poiché le chiavi di cifratura risiedono nel database, i backup devono essere protetti e trattati come dati sensibili.
Roadmap
Tra gli sviluppi previsti ci sono agenti remoti e accesso multi-tenant per scenari MSP, autenticazione TOTP e OIDC, sfondi per planimetrie o mappe geografiche, auto-layout dei nodi scoperti, propagazione live delle modifiche, SNMPv3 e nuove integrazioni RouterOS.
Codice sorgente e licenza
VedettaVip è pubblicato con licenza GNU AGPL v3 o successiva, accompagnata da un termine di attribuzione. Il repository contiene il codice sorgente, la documentazione italiana e inglese, le istruzioni per il deploy e le informazioni sulle licenze dei componenti di terze parti.
Repository GitHub di VedettaVip →
Il progetto è ancora giovane e la versione attuale rappresenta soprattutto il punto di partenza di uno strumento costruito sulle mie esigenze reali di monitoraggio. Suggerimenti, segnalazioni e contributi sono naturalmente benvenuti.
