1 Sicherheit Zugriffslevel
ppfeiffer edited this page 2026-04-19 18:32:44 +02:00

Sicherheit & Zugriffslevel

Das MeshCore Dashboard verwendet ein dreistufiges Benutzerkonzept mit öffentlichen, authentifizierten und rollenbasierten Zugriffsebenen.


Benutzerrollen

Rolle Beschreibung
Admin Voller Zugriff — Einstellungen, Benutzerverwaltung, alle Schreiboperationen, Setup-Wizard
Trusted Lesen + eingeschränkte Schreibrechte (Scheduler, Einstellungen). Kein Zugriff auf Benutzerverwaltung.
Guest Nur lesend — Dashboard, Contacts, Cache, Mesh Graph, Realtime, Radio, Services, Telemetry, Analyse

Seitenübersicht nach Zugriffslevel

Seite Öffentlich Guest Trusted Admin
/ Dashboard
/contacts Contacts
/mesh Mesh Graph
/stats Nachrichten-Analyse
/about Über
/security Sicherheit
/realtime Real-time Monitor
/radio Radio
/telemetry Telemetry
/cache Cache/DB-Info
/services Services
/settings/password Mein Profil
/feeds Feed Manager
/scheduler Scheduler
/settings/bot Bot-Konfiguration
/settings/companion Companion-Node
/settings/commands Bot-Befehle
/greeter Greeter
/settings/nina NINA-Warnungen
/settings/mqtt MQTT-Broker
/settings/users Benutzerverwaltung
/settings/admin Admin-Einstellungen
/api-docs API-Dokumentation

Öffentliche API-Endpunkte

Ohne Login erreichbar:

Endpunkt Beschreibung
GET /api/contacts Kontaktliste
GET /api/mesh/nodes Mesh-Nodes
GET /api/mesh/edges Mesh-Kanten
GET /api/mesh/stats Mesh-Statistiken
GET /api/dashboard Dashboard-Daten
GET /api/channels Kanalliste
GET /api/health Bot-Gesundheit
GET /api/message_stats/* Nachrichten-Analyse (alle Sub-Endpunkte)

Authentifizierung

  • Anmeldung über /login mit Benutzername und Passwort
  • Sitzung wird als verschlüsseltes Session-Cookie gespeichert
  • Registrierung erfordert E-Mail-Verifizierung (OTP, 15 Min. gültig)
  • Einladungen werden per E-Mail verschickt und sind zeitlich begrenzt (konfigurierbar)
  • Passwörter werden mit bcrypt gehasht
  • Der erste Benutzer (Setup-Wizard) erhält automatisch die Rolle Admin

Konfiguration

[Web_Viewer]
# Öffentliche URL der Instanz
site_url = https://dashboard.meshdresden.eu

# Standard-Rolle für selbst registrierte Benutzer
registration_default_role = guest

# Einladungs-Token-Gültigkeit in Stunden
invitation_ttl_hours = 48

# Flask-Secret-Key (auto-generiert bei leerem Wert)
secret_key =

Erreichbarkeit

  • Öffentliche URL: https://dashboard.meshdresden.eu
  • Standard-Port: 8080 (konfigurierbar in [Web_Viewer] port)
  • WebSocket: Socket.IO auf demselben Host/Port
  • API-Basis: /api/