Network Dashboard

Zentrale Erfassung, Beschriftung und Steuerung aller Netzwerkgeräte im Heimnetz über ein Web-Dashboard. Läuft komplett lokal mit Node.js-Standardmodulen, keine Cloud-Abhängigkeiten.

Architektur

Das System folgt einem Agent-Modell: Ein lokaler Scanner erfasst das LAN per nmap, prüft Web-Oberflächen und sendet die Inventardaten per HTTP an einen zentralen Server. Der Server speichert alles als JSON und liefert das Dashboard über Port 3000.

Agent (agent.js)

  • Scannt Subnetz per nmap (Ping-Scan mit XML-Ausgabe)
  • Erfasst je Gerät: IP, MAC, Hostname (Reverse-DNS)
  • Hersteller-Lookup über api.macvendors.com (gedrosselt, gecacht)
  • Web-Oberflächen-Check auf Port 443/80
  • Sendet Inventar per POST an Server (Token-geschützt)
  • Dauerbetrieb: Alle 10 Minuten, robust gegen Fehler

Server & Dashboard (server.js)

  • Authentifizierung: Login mit Zugangs-Code, Auto-Logout nach 15 Min Inaktivität
  • Inventar-Ansicht: Tabelle gruppiert nach Standort, inline-Bearbeitung, Suche, sortierbar
  • Status-Markierung: Grün = geprüft, Rot = zu kontrollieren
  • iPhone-Ansicht: Kompakte 2-zeilige Kacheln, Detailseite zum Abhaken
  • Auto-Refresh: Alle 20 Sekunden, neue Geräte erscheinen von selbst
  • Shelly-Integration: An/Aus pro Gerät, Live-Status, Firmware-Updates (5-Min Abstand)

Automatische Zuordnungen

  • Shelly-Erkennung: Geräte aus shelly_devices.json bekommen Typ „Shelly" und Namen
  • Hostnamen: MAC-basiert aus NETGEAR-APs und TP-Link-Repeater
  • Standort-Regeln: IP-Bereich-basiert (z.B. 10.0.0.100–110 = HOLZ WKST)

Einrichtung (Windows)

  1. Node.js und nmap installieren
  2. Fester IP für den PC (10.0.0.59)
  3. Firewall_3000_freigeben.bat als Admin ausführen
  4. Autostart_einrichten.bat als Admin ausführen (Agent startet automatisch beim Anmelden)
  5. Zugriff: http://localhost:3000 (PC) oder http://10.0.0.59:3000 (Handy)
  6. Anmelden mit Code: ******

Konfiguration

Datei Zweck
agent/config.json Subnetz, nmap-Pfad, API-Token, VPS-Endpoint
server/config.json Port (3000), Zugangs-Code (6696), Session-TTL
server/shelly_devices.json Shelly-Geräte (Name, IP, Gen, Channel, Auth)
server/hostnames.json MAC → Gerätename (manuell erweiterbar)
server/standort_regeln.json IP-Bereich → Standort-Zuordnung

Ausblick Juli 26

Geplant ist ein Umzug auf Raspberry Pi 4 2GB Ram für 24/7-Dauerbetrieb ohne PC. Server und Agent als systemd-Dienste mit Autostart und Neustart bei Absturz.
DATENSICHERUNG: die Daten werden in eine data_backup.json geschrieben.