Skip to content

magicx78/openwrt

Repository files navigation

🛜 OpenWrt Provisioning Server v0.6.2

Automatisierte Massenbereitstellung (Mass Provisioning) für OpenWrt Router-Netzwerke

Ein produktionsreifer FastAPI-Server für schnelle und zuverlässige Bereitstellung identischer WLAN/Firewall-Konfigurationen auf mehreren OpenWrt-Routern – ohne USB-Stick-Jongliererei oder manuelle SSH-Befehle.

Hauptrouter (Config pullen)
         ↓
  Bearbeiten im Browser
         ↓
  Auf 10+ Client-Router pushen ← AUTOMATISCH ✅
         ↓
   SSH ohne Passwort ← SSH-Key auto-generiert + installiert

⚡ Features v0.6.2

🆕 Neu in v0.6.2 — Datenqualität & Interface-Klassifizierung

  • WiFi Interface Discovery: Dynamische iw dev-Erkennung statt hardcoded wlan0 — unterstützt phy0-ap0, phy1-ap0 etc.
  • Interface-Typ-Klassifizierung: Jedes UCI-Interface bekommt interface_type (uplink, lan, lan_port, wifi, vpn, unknown)
  • RX/TX-Validierung: Zentrale _validate_rx_tx() — markiert inactive (0/0), invalid_negative (<0), oder active
  • Signal/Bitrate als null: Keine Phantomwerte mehr — fehlende Werte sind null, nicht -60 dBm
  • Interface-Activity-Status: wifi_iface_status im Topology-API — per Interface {rx_bytes, tx_bytes, status, warning}
  • GET /api/topology?include_wifi=1: Liefert jetzt wifi_iface_status neben wifi_clients

🆕 Neu in v0.6.1 — Live WiFi Client Tracking

  • SSH WiFi Polling: Hintergrund-Daemon liest Clients von AP1-Geräten (iwinfo/iw)
  • Topology API: include_wifi=1 fügt Live-Clients der Topologie-Antwort hinzu
  • Stale-Data-Logik: Bei SSH-Fehler: letzte bekannte Daten behalten, kein Crash

🎯 Kernsystem

  • Bootstrap-Skript: Vollständig deterministisch, fail-fast, 100% lokal auf Router
  • Template-System: {{HOSTNAME}}, {{SSID}}, {{SWITCH_BLOCK}} etc.
  • Multi-WLAN: N WLANs pro Projekt (2.4 GHz + 5 GHz, 802.11r Roaming)
  • VLAN/Switch-Config: Automatische Generation (1x WAN-Trunk + N LAN-Ports)

🔐 Sicherheit & SSH

  • SSH-Key-Generator: RSA 4096-bit on-the-fly generieren
  • Auto-Installer: Public-Key automatisch auf 1 oder N Routern installieren
  • SSH ohne Passwort: Einmalig Setup → Token-Auth nur optional
  • Paramiko-basiert: Windows/Linux/Mac kompatibel

📥📤 Deployment

  • Config-Pull: SSH-Pull Hauptrouter Config (WLAN, Network, System)
  • Config-Push: Direkt auf Router oder als Template/Projekt speichern
  • Batch-Push: Auf Projekt-Geräte mit 1 Click
  • Direct-Push: Einzelner Router via IP + Passwort

🎛️ Management

  • Gerät-Vorregistrierung: MAC + Hostname vorab anlegen
  • Projekt-System: Geräte-Gruppen mit eigener SSID, IP-Bereich, Template
  • Export/Import: Komplette Backup-Dateien (Templates + Projekte)

🔍 Observability

  • Live-Debug-Dashboard: Geräte-Stats, Jobs, Activity-Log
  • Auto-Refresh: Alle 2 Sekunden aktualisiert
  • Activity-Logging: Claim-Events, SSH-Installationen, Fehler mit Timestamps

🚀 Quick Start

# 1. Dependencies
pip install fastapi uvicorn paramiko python-multipart

# 2. Server starten
cd filesV3 && uvicorn server:app --host 0.0.0.0 --port 8000

# 3. Browser: http://localhost:8000/ui/ (admin / changeme)

# 4. SSH-Key generieren
curl -X POST http://admin:changeme@localhost:8000/api/ssh/generate-keypair

# 5. Projekt erstellen + Bootstrap starten
# → /ui/setup oder /ui/config-pull

📊 Architektur

  • server.py (~6950 Zeilen): FastAPI + SQLite
  • bootstrap-script (99-provision.sh): Router-seitig, 100% lokal
  • Template-Engine: UCI-Batch mit {{VAR}}-Ersetzung
  • SSH-Deployment: Paramiko-basiert, Windows-compatible
  • Web-UIs: Config-Pull/Push, SSH-Generator, Debug-Dashboard, Setup

🎯 Use-Cases

Mesh-Netzwerk (10 APs): Pull Config → Template → Projekt → Batch-Push Kunden-Roll-Out: Template-Pro-Kunde → 50+ Geräte provisionen → Activity-Log Migrations-Update: Pull → Edit → Test-Push → Produktion-Push


📈 Performance

  • SQLite: 100+ Geräte kein Problem
  • Config-Pull: 5-10s (SSH)
  • Batch-Push 50x: ~25 Minuten
  • Async FastAPI: Mehrere Requests parallel

🐛 Known Limitations

Issue Workaround
Doppelte Routes (dead code) FastAPI first-match, kein Funktionsproblem
save-template nur WLAN Templates manuell ergänzen
Keine Token-Rotation OK für LAN, env var ändern
HTTP only Reverse-Proxy mit HTTPS

🔐 Sicherheit

  • HTTP Basic Auth für Server
  • Token-Auth für Router-Claim
  • SSH mit Paramiko (Key oder Passwort)
  • Best Practice: .env für Secrets, provision.db im .gitignore

📞 Support

# Debug-Dashboard
http://localhost:8000/ui/debug

# Activity-Log
curl http://admin:changeme@localhost:8000/api/debug/status | jq .activity

# Database
sqlite3 provision.db "SELECT * FROM devices;"

📝 Mehr Info

  • README_Provisioning.md: Bedienungsanleitung
  • CHANGELOG.md: Version-History
  • TODO.md: Geplante Features

Siehe GitHub: magicx78/openwrt (privat)

About

OpenWrt Provisioning Server — FastAPI/SQLite, SSH mass-deploy, WiFi topology, interface classification (v0.6.2)

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors