Table of Contents
- Benutzerverwaltung & Authentifizierung
- Rollenkonzept
- Ersteinrichtung (Setup-Wizard)
- Anmeldung
- Registrierung (OTP per E-Mail)
- Registrierung per Einladungslink
- Navbar & Sichtbarkeit
- Benutzerverwaltung (Admin)
- Tab: Benutzer
- Neuen Benutzer anlegen
- Tab: Ausstehend
- Ausstehende Accounts freischalten
- Tab: Einladungen
- Mein Profil
- Konfiguration (config.ini)
- Sicherheitshinweise
- Fehlerbehebung
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Benutzerverwaltung & Authentifizierung
Das MeshCore Dashboard ist durch ein dreistufiges Benutzerkonzept geschützt. Alle Seiten außer Dashboard, Mesh Graph und Contacts erfordern eine Anmeldung.
Rollenkonzept
| Rolle | Zugriff |
|---|---|
| Admin | Voller Zugriff – Einstellungen, Scheduler, Benutzerverwaltung, alle Schreiboperationen |
| Trusted | Lesen + Scheduler & Einstellungen bearbeiten (kein Zugriff auf Benutzerverwaltung) |
| Guest | Nur lesend – Dashboard, Contacts, Cache, Mesh Graph, Realtime, Radio, Services, Telemetry |
Öffentlich zugänglich (ohne Login): Dashboard, Mesh Graph, Contacts, Nachrichten-Analyse, Sicherheit & Zugriff
Ersteinrichtung (Setup-Wizard)
Beim ersten Start ohne angelegten Benutzer wird automatisch auf /setup weitergeleitet.
- Benutzernamen eingeben (min. 3 Zeichen)
- Passwort setzen (min. 8 Zeichen) und wiederholen
- Admin-Account erstellen klicken
Der erste Account erhält automatisch die Rolle Admin.
Anmeldung
Aufruf über /login oder automatische Weiterleitung bei geschützten Seiten.
Accounts mit Status pending (selbst registriert, noch nicht freigeschaltet) erhalten beim
Login-Versuch einen entsprechenden Hinweis.
Registrierung (OTP per E-Mail)
Neue Benutzer können sich selbst registrieren. Der Ablauf ist zweistufig:
Schritt 1 – Daten eingeben
Aufruf über /register (auch vom Login-Link erreichbar).
- Benutzername (min. 3 Zeichen)
- Gültige E-Mail-Adresse für den Bestätigungscode
Nach dem Absenden wird ein 6-stelliger OTP-Code per E-Mail zugestellt (gültig 15 Minuten).
Schritt 2 – Code bestätigen & Passwort setzen
- OTP-Code aus der E-Mail eingeben
- Passwort setzen und wiederholen
- Registrierung abschließen klicken
Bei abgelaufenem oder falschem Code: Erneut senden schickt einen neuen Code.
Status nach Registrierung
Ohne Einladungslink landet der neue Account im Status Pending und kann sich noch nicht anmelden:
Ein Admin muss den Account in der Benutzerverwaltung freischalten (siehe Ausstehende Accounts).
Registrierung per Einladungslink
Admins können Einladungslinks erstellen. Wer einen solchen Link öffnet, überspringt die Admin-Genehmigung und erhält die in der Einladung festgelegte Rolle direkt nach der Registrierung.
Einladung erstellen
In der Benutzerverwaltung (Einstellungen → Benutzerverwaltung) auf Einladung erstellen klicken:
| Feld | Beschreibung |
|---|---|
| Rolle | Rolle die der eingeladene Benutzer erhält (Guest / Trusted / Admin) |
| Gültigkeit | 24 Std / 3 Tage / 7 Tage / 30 Tage |
| Notiz | Optionaler interner Hinweis (z.B. Name oder Zweck) |
| E-Mail-Adresse des Eingeladenen (optional — löst automatischen E-Mail-Versand aus) | |
| Persönliche Nachricht | Freitext der in der Einladungsmail erscheint |
Wird eine E-Mail-Adresse angegeben, wird die Einladung automatisch versendet. Der erste Admin mit gesetzter E-Mail-Adresse erhält die E-Mail als CC.
Nach dem Erstellen wird der vollständige Einladungslink angezeigt und kann per Klick kopiert werden:
Der Link hat die Form:
https://dashboard.meshdresden.eu/register?invite=TOKEN
Einladungsregistrierung
Der eingeladene Benutzer öffnet den Link und sieht die voreingestellte Rolle:
Nach OTP-Verifizierung und Passwortsetzung ist der Account sofort aktiv und der Benutzer wird direkt eingeloggt.
Navbar & Sichtbarkeit
Die Navigationsleiste zeigt je nach Login-Status unterschiedliche Einträge:
Nicht eingeloggt:
Eingeloggt als Guest:
Eingeloggt als Trusted:
Eingeloggt als Admin:
Das User-Dropdown (Klick auf den Benutzernamen rechts) enthält:
- Mein Profil →
/settings/password— E-Mail, Notiz, Passwort ändern (alle Rollen) - Einladung erstellen →
/settings/users(nur Admin) - Abmelden
Benutzerverwaltung (Admin)
Erreichbar über Einstellungen → Benutzerverwaltung oder direkt /settings/users.
Tab: Benutzer
Zeigt alle aktiven Benutzer. Pro Zeile:
- Bearbeiten (Stift-Icon): Rolle, Passwort, E-Mail und Notizen ändern
- Löschen (Papierkorb-Icon): Account entfernen (eigener Account nicht löschbar)
Der eigene Account ist mit einem Du-Badge markiert.
Neuen Benutzer anlegen
Über den Button Neuer Benutzer oben rechts:
Tab: Ausstehend
Zeigt selbst registrierte Accounts mit Status pending. Pro Zeile:
- Freischalten: öffnet Modal zur Rollenzuweisung
- Ablehnen (×): löscht den Account
Ausstehende Accounts freischalten
Rolle auswählen und Freischalten klicken. Der Account wird sofort auf active gesetzt.
Tab: Einladungen
Übersicht aller erstellten Einladungen mit Status-Badges:
| Badge | Bedeutung |
|---|---|
| Aktiv | Noch nicht verwendet, nicht abgelaufen |
| Verwendet | Wurde bereits eingelöst |
| Abgelaufen | Gültigkeitsdauer überschritten |
Aktive Einladungen haben ein Kopieren-Icon für den Link. Einladungen können jederzeit gelöscht werden.
Mein Profil
Erreichbar über das User-Dropdown → Mein Profil oder direkt /settings/password.
Alle Rollen (Guest, Trusted, Admin) können folgendes selbst bearbeiten:
- E-Mail-Adresse — wird für OTP-Mails und CC-Einladungen verwendet
- Notiz — optionales Freitextfeld am Account
- Passwort — Eingabe des aktuellen Passworts erforderlich
Konfiguration (config.ini)
Alle Auth-Einstellungen befinden sich im Abschnitt [Web_Viewer]:
[Web_Viewer]
# Stabiler Flask Session-Key. Einmalig generieren:
# python3 -c "import secrets; print(secrets.token_hex(32))"
# Leer = neuer Zufallskey bei jedem Neustart (invalidiert alle Sessions)
secret_key =
# Name der Instanz (erscheint in OTP-E-Mails)
site_name = MeshCore Dashboard
# Standard-Rolle für selbst registrierte Benutzer (ohne Einladung)
# Erlaubte Werte: guest / trusted / admin
registration_default_role = guest
# ── SMTP-Einstellungen für OTP-E-Mails ───────────────────────────────────
smtp_host = localhost
smtp_port = 587
smtp_user =
smtp_password =
smtp_from = meshcore-bot@localhost
# smtp_tls: STARTTLS verwenden (Port 587, empfohlen für die meisten Anbieter)
smtp_tls = true
# smtp_ssl: Direktes SSL/TLS (Port 465). Wenn true, wird smtp_tls ignoriert.
smtp_ssl = false
Empfohlene SMTP-Konfigurationen
Lokaler MTA (z.B. Postfix/Exim auf dem selben Server):
smtp_host = localhost
smtp_port = 25
smtp_tls = false
smtp_ssl = false
Gmail (App-Passwort erforderlich):
smtp_host = smtp.gmail.com
smtp_port = 587
smtp_user = your@gmail.com
smtp_password = xxxx-xxxx-xxxx-xxxx
smtp_from = your@gmail.com
smtp_tls = true
Hetzner / Strato / ionos:
smtp_host = mail.IHR-DOMAIN.de
smtp_port = 587
smtp_user = meshcore@IHR-DOMAIN.de
smtp_password = IHR-PASSWORT
smtp_from = meshcore@IHR-DOMAIN.de
smtp_tls = true
Secret Key generieren
Damit Sessions nach einem Neustart des Bots gültig bleiben, sollte ein fester Secret Key gesetzt werden:
python3 -c "import secrets; print(secrets.token_hex(32))"
Den ausgegebenen Wert in die config.ini eintragen:
secret_key = a1b2c3d4e5f6... # (euer generierter Key)
Sicherheitshinweise
- Das Web Interface ist für den Einsatz im lokalen Netzwerk konzipiert
- Für öffentlich erreichbare Instanzen empfiehlt sich ein Reverse Proxy (nginx/Caddy) mit HTTPS
host = 127.0.0.1beschränkt den Zugriff auf localhost (sicherste Option)host = 0.0.0.0macht das Interface im gesamten Netzwerk erreichbar – nur mit aktivierter Auth verwenden- Der letzte Admin-Account kann nicht gelöscht oder degradiert werden
- OTP-Codes sind 15 Minuten gültig und werden nach Verwendung ungültig
Fehlerbehebung
„Internal Server Error" beim ersten Start
Sicherstellen dass die Datenbank schreibbar ist und der Bot mindestens einmal gestartet wurde. Der Setup-Wizard erscheint automatisch wenn keine Benutzer in der DB existieren.
OTP-E-Mail kommt nicht an
- SMTP-Einstellungen in
config.iniprüfen - Bot-Log auf SMTP-Fehler prüfen:
journalctl -u meshcore-bot -n 50 | grep -i smtp - SMTP-Verbindung manuell testen:
python3 -c " import smtplib s = smtplib.SMTP('IHR-SMTP-HOST', 587) s.starttls() s.login('USER', 'PASS') print('OK') s.quit() "
Session läuft nach Neustart ab
Einen festen secret_key in der config.ini setzen (siehe Konfiguration).
Benutzer kann sich trotz richtigem Passwort nicht anmelden
Status des Accounts prüfen – möglicherweise ist er noch pending.
In der Benutzerverwaltung unter Ausstehend nachsehen und freischalten.
Navigation
Einstieg
Konfiguration
Web Viewer
Bot-Befehle
Service Plugins
Weitere