Uni-Verein 1.10.1 – Ersteinrichtung, Hinweis bei neuem Gerät und Vorbereitung auf Mandanten 🛡️
Veröffentlicht am 3. November 2026
Uni-Verein 1.10.1 schafft das bekannte Standardpasswort ab: Eine neue Installation legt den ersten Administrator über eine geschützte Ersteinrichtung an. Außerdem schickt Uni-Verein jetzt eine Mail bei der Anmeldung auf einem neuen Gerät. Unter der Haube bereitet das Update die Datenbank auf mehrere Mandanten vor und bringt fast alle Abhängigkeiten auf den neuesten Stand.
Highlights
- 🔑 Ersteinrichtung (UV-72): Kein Benutzer
Adminmitadmin123mehr, der erste Administrator wird beim ersten Aufruf mit einem Einrichtungs-Token angelegt - 📧 Hinweis bei neuem Gerät (UV-69): Eine Mail informiert, wenn sich jemand auf einem unbekannten Gerät anmeldet
- 🏢 Vorbereitung auf Mandanten (UV-71): Alle Daten gehören jetzt zu einem Standard-Mandanten, eine einzelne Installation verhält sich unverändert
- ⬆️ Abhängigkeiten: ASP.NET Core 10.0.14, React 19, MUI 9, Vite 8 und weitere
Neue Funktionen
- 🔑 Ersteinrichtung (UV-72): Eine frische Installation hat keinen Benutzer. Beim ersten Aufruf zeigt das Frontend die Seite Ersteinrichtung (
GET /setup/status,POST /setup), auf der der erste Administrator mit Benutzername, E-Mail-Adresse und Passwort (10 bis 50 Zeichen) angelegt wird. Die Anfrage braucht denSETUP_TOKENaus der.env, dendocker-compose-ini.ymlerzeugt und alsSetup__Tokenan das Backend reicht. Ohne Token ist die Einrichtung gesperrt, so kann niemand einen frisch gestarteten Server übernehmen. Beide Endpunkte haben ein eigenes Rate-Limit (RateLimiting__Setup__PermitLimit,RateLimiting__SetupStatus__PermitLimit),POST /setupantwortet mit 409, sobald irgendein Benutzer existiert, auch ein gelöschter - 📧 Hinweis bei neuem Gerät (UV-69): Meldet sich jemand in einem Browser an, der das langlebige Cookie
uv_devicenoch nicht hat, bekommt der Benutzer eine Mail mit Browser, Betriebssystem, IP-Adresse und Zeitpunkt (auf Deutsch und Englisch). Gespeichert wird nur der Hash des Cookies in der neuen TabelleUserDevices. Mit Zwei-Faktor-Authentifizierung geht die Mail direkt nach dem richtigen Passwort raus. Für das erste Gerät eines Benutzers, für Benutzer ohne E-Mail-Adresse oder ohne hinterlegte Mail-Einstellungen wird nichts verschickt, und pro Benutzer höchstens alle 15 Minuten eine Mail. IP-Adresse und Browserkennung werden weder gespeichert noch protokolliert, eine Standortabfrage gibt es nicht
Änderungen
- 👤 Kein Standardadministrator mehr (UV-72): Der Benutzer
Adminmit dem Passwortadmin123wird nicht mehr angelegt. Bestehende Installationen behalten ihre Benutzer und werden nicht mehr zu einem Passwortwechsel gezwungen, ein noch gesetztes Standardpasswort musst du unter "Profileinstellungen" selbst ändern. Der Demo-Modus behält seine erzeugten Benutzer - 🏢 Vorbereitung auf mehrere Mandanten (UV-71): Eine neue Tabelle
Tenantsmit einem festen Standard-Mandanten, jede Tabelle außerFirmwareVersionsundFirmwareVersionNotificationsbekommt die Spaltetenant_id. Die Migration weist alle vorhandenen Daten dem Standard-Mandanten zu, ältere Backups lassen sich weiter einspielen. Abfragen werden nach dem aktuellen Mandanten gefiltert, neue Zeilen erhalten ihn, Belegnummern und Quittungen sind pro Mandant eindeutig, Hintergrundjobs laufen einmal pro Mandant und das Login-Token enthält den Claimtenant_id(Tokens ohne ihn bleiben gültig). Aktuell ist der Mandant immer der Standard-Mandant, das Auflösen und Verwalten von Mandanten sind nicht Teil dieser Änderung - 🗄️ Entity Framework Core 10 und Npgsql 10 (UV-71): Nötig für benannte Abfragefilter
- ⬆️ Abhängigkeiten: Backend und Frontend wurden aktualisiert, unter anderem ASP.NET Core / EF Core 10.0.14, MailKit 4.18.2, Markdig 1.5.1, React 19, MUI 9, MUI X 9, Vite 8,
vite-plugin-pwa2,pdfjs-dist6,tesseract.js7,uuid14 und TipTap 3.32.2. Die mitgelieferten Worker infrontend/public/pdfjsundfrontend/public/tesseractwurden ersetzt und müssen immer zur Bibliotheksversion passen. Bewusst nicht aktualisiert wurdenCsvHelper33.1.0,@fullcalendar/*6.1.22 undtypescript6.0.3 - 🧰 Datenbank-Migrator entfernt (UV-71):
UniVerein.DbMigrator(Kopierer von MariaDB nach PostgreSQL) wurde entfernt, weil der MySQL-Treiber keine Version für Entity Framework Core 10 hat. Das Imageghcr.io/uni-verein/univerein-db-migrator:1.4.0bleibt verfügbar, neue Versionen erscheinen nicht. Der Update-Weg von MariaDB (v1.3.1und älter) liegt jetzt inlegacy-update/mit eigenerdocker-compose-update.ymlund README. Diedocker-compose-update.ymlim Hauptordner kennt nur noch PostgreSQL und verweist auflegacy-update/README.md, wenn die Compose-Datei noch MariaDB nutzt
⚠️ Hinweise zum Update
- Immer mit
docker-compose-update.ymlaktualisieren, wie in der README beschrieben - Standardpasswort prüfen: Es gibt keinen Zwang zum Passwortwechsel mehr. Hat noch ein Konto das Passwort
admin123, ändere es unter "Profileinstellungen" - Neue Installationen brauchen den Einrichtungs-Token (
SETUP_TOKENin der.env), siehe Ersteinrichtung. Die Datei.env.exampleunddocker-compose-ini.ymlkennen die Variable - API-Clients und Tests, die sich als
Adminmitadmin123angemeldet haben, müssen den Administrator überPOST /setupanlegen. Die E2E-Tests nutzen dafürTEST_SETUP_TOKEN,TEST_ADMIN_PASSundTEST_ADMIN_EMAIL - Von MariaDB (
v1.3.1und älter) aktualisierst du über den Ordnerlegacy-update/
Warum diese Updates wichtig sind
Ein allgemein bekanntes Standardpasswort ist für jede neu installierte Instanz ein Risiko, bis jemand es ändert. Mit der geschützten Ersteinrichtung gibt es dieses Zeitfenster nicht mehr. Der Hinweis bei neuen Geräten macht gestohlene Passwörter sichtbar, bevor Schaden entsteht, und die Vorbereitung auf Mandanten legt das Fundament für künftige Funktionen, ohne dass sich für bestehende Installationen etwas ändert.
Wie geht es weiter?
Weiteres Feedback aus der Praxis ist wie immer herzlich willkommen, gerne über GitHub Issues. Schaut auch weiterhin gerne hier vorbei!