Warum Konten mit geprüfter Identität die Mühe wert sind
Wenn du Nextcloud für eine Schule, eine NGO oder eine Behörde in Rumänien betreibst, kennst du die Schwachstelle der Selbstregistrierung: Jeder mit einer E-Mail-Adresse kann ein Konto anlegen. Schaltest du die Registrierung ab, verbringst du deine Woche damit, Benutzer von Hand anzulegen. Für viele Organisationen ist der ehrliche Mittelweg die nextcloud registrierung mit Identitätsprüfung: Der Besucher registriert sich vom eigenen Handy, weist seine Identität mit einem rumänischen Personalausweis oder Führerschein nach, und das Konto wird sofort angelegt.
IDRegister ist ein Nextcloud-Plugin, das genau das tut. Das Dokument wird live mit RapidOCR ausgelesen, ein Selfie wird mit dem Foto auf der Karte abgeglichen, mit einer kleinen Kopfdrehung zur Lebenderkennung, und die persönliche Nummer (CNP) wird nur als gesalzener Hash gespeichert, sodass ein Dokument genau ein Konto ergibt. Das Bild des Dokuments und das Selfie werden nie gespeichert. Genau dieser letzte Punkt macht die Sache unter der DSGVO vertretbar: Du behältst das Minimum, das du zum Betrieb des Dienstes brauchst, und keine Sammlung von Ausweis-Scans.
Dieses Tutorial führt dich aus Sicht eines Self-Hosters durch die Einrichtung. Die vollständigen Details stehen im Benutzerhandbuch; hier konzentriere ich mich auf die Entscheidungen, die für einen Einsatz im öffentlichen Sektor oder bei einer NGO zählen.
Voraussetzungen
Bevor du loslegst, stelle sicher, dass du Folgendes hast:
- Nextcloud 30 bis 34 und PHP 8.1 oder neuer, mit
imagick(GD funktioniert als Fallback). - HTTPS auf der Instanz. Handy-Browser geben den Kamerazugriff nur über HTTPS frei, das ist also keine Option.
- Python 3.8 oder neuer (
python3) auf dem Server. Die App baut ihre eigene Umgebung auf und lädt ihre Reader- und Gesichtsmodelle (RapidOCR, ONNX Runtime, OpenCV und das InsightFace-Modellpaketbuffalo_l, etwa 450 MB) in das Nextcloud-Datenverzeichnis herunter. Dieser Download braucht einmalig Internetzugang. - Optional
tesseract-ocrmittesseract-ocr-ronals Fallback-Reader. Tesseract allein liest fotografierte Karten schlecht, behandle es also als Backup, nicht als Hauptweg. - Ein MediaLab Works-Konto mit aktiver Lizenz, eine Lifetime-Lizenz innerhalb ihres Update-Fensters oder die 30-tägige kostenlose Testphase.
Ein Wort zur DSGVO, bevor irgendwelche Daten erhoben werden: Lege fest, wer der Verantwortliche ist, schreibe auf, warum du Name und E-Mail erhebst, und verlinke deine eigenen Bedingungen auf der Einstellungsseite. IDRegister speichert die CNP nur als gesalzenen Hash und verwirft die Bilder, was deine Verarbeitung minimal hält, aber den organisatorischen Papierkram hast weiterhin du.
Schritt 1: App installieren und Lizenz aktivieren
Lade das Archiv idregister-x.y.z.tar.gz unter Licenses in deinem MediaLab Works-Konto herunter und entpacke es nach apps/ (oder custom_apps/), sodass du apps/idregister/ erhältst, das dem Web-Server-Benutzer gehört:
cd /var/www/nextcloud/apps
sudo tar -xzf ~/idregister-x.y.z.tar.gz
sudo chown -R www-data:www-data idregister
sudo -u www-data php occ app:enable idregister
Öffne Administration settings → IDRegister → License, füge deinen Lizenzschlüssel ein und speichere. Die App bindet den Schlüssel an diese Instanz und zeigt die Lizenz als Active an. Die Prüfung läuft einmal täglich; ohne Internet arbeitet die App nach der letzten erfolgreichen Prüfung noch 7 Tage weiter. Bereits angelegte Konten sind von einem Lizenzablauf nie betroffen, sie melden sich weiterhin mit ihrem Passwort an, und es wird nichts gelöscht.
Schritt 2: Den Reader installieren
Drücke auf derselben Einstellungsseite auf Install the reader. Ein Hintergrundjob baut eine Python-Umgebung in appdata_<id>/idregister/python auf und lädt die Modelle herunter. Im Terminal ist derselbe Schritt:
sudo -u www-data php occ idregister:install-ocr
Falls du einmal neu anfangen musst, füge --remove hinzu. Mach das, bevor du die Registrierung für Besucher öffnest, sonst sehen sie einen Dienst, der nichts lesen kann.
Schritt 3: Registrierung öffnen
Der Hauptschalter ist standardmäßig aus. Schalte ihn ein. Die Registrierungsseite ist /index.php/apps/idregister/, und auf der Anmeldeseite wird ein Link ergänzt. Die Oberfläche ist auf Rumänisch und Englisch verfügbar, was gut zu einer rumänischen Behörde passt.
Schritt 4: Die Prüfungen festlegen
Alle Prüfungen sind standardmäßig an, und ich würde sie für einen öffentlichen Einsatz so lassen:
- Express-Modus: Das Konto wird sofort mit einem zufälligen Benutzernamen und einem einmal angezeigten Passwort angelegt.
- Registrierung nur von einem Handy oder Tablet: Das Handy ist das Gerät mit der Kamera in der Hand; ein Computer zeigt einen QR-Code und meldet sich an, nachdem das Handy fertig ist.
- Selfie mit dem Dokument vergleichen und Kopfdrehung während des Selfies: Das Selfie wird mit den InsightFace-Modellen auf ONNX Runtime mit dem Foto verglichen, und die Kopfdrehung beweist eine lebende Person.
- Kopien und Bildschirme ablehnen: Farbe gegen Schwarz-Weiß-Kopien, Moiré gegen Bildschirme und Blendung, die sich beim Kippen der Karte bewegt. Ist sich die Prüfung unsicher, fordert die Seite zum Kippen auf und leitet die Registrierung dann an einen Administrator weiter.
- Abgelaufene Dokumente ablehnen und ein Konto pro Personalausweis.
Der Reader erkennt alte Personalausweise, die neue elektronische Karte (CEI) und den Führerschein. Die maschinenlesbare Zone, die aufgedruckten Beschriftungen und die CNP (validiert über ihre Prüfziffer) werden kombiniert.
Schritt 5: Konten und die DSGVO-relevanten Grenzen konfigurieren
Unter Accounts steuerst du, was die Organisation erlaubt:
- Ein Administrator muss jedes neue Konto freigeben (standardmäßig aus). Für eine Schule ist das oft die richtige Einstellung.
- Akzeptierte Dokumente: Personalausweis, Führerschein oder beides.
- Mindestalter, Standardgruppen, Quota für neue Benutzer, maximale Anzahl an Konten (0 = kein Limit).
- Erlaubte und blockierte E-Mail-Domains: nützlich, um Registrierungen innerhalb der Domain deiner Organisation zu halten.
- Link zu deinen Bedingungen und Eine Telefonnummer ist erforderlich (standardmäßig an; schalte es aus, um die Telefonnummer optional zu machen). Telefonnummern aus jedem Land werden akzeptiert.
Stelle Nicht bestätigte Registrierungen löschen nach ein (Stunden, Standard 48). Registrierungen, deren E-Mail nie bestätigt wird, werden automatisch zusammen mit dem deaktivierten Konto entfernt. Das ist eine saubere Geschichte zur Datenminimierung für deine Aufzeichnungen.
Schritt 6: Was der Besucher erlebt
Der Besucher öffnet die Seite auf dem Handy, hält das Dokument in den Rahmen und folgt den Hinweisen (näher, stillhalten, kippen), dann macht er ein Selfie mit einer kleinen Kopfdrehung. Das Konto wird angelegt und der Besucher ist angemeldet. Der Name aus dem Dokument wird zum Anzeigenamen und ist gesperrt; die E-Mail (verifiziert mit einem sechsstelligen Code und einem Link) und die Telefonnummer werden im Profil ergänzt und nach der Bestätigung festgeschrieben.
Auf einem Computer zeigt die Seite einen QR-Code; der Besucher scannt ihn, schließt den Ablauf auf dem Handy ab, und der Computer meldet sich an.
Schritt 7: Optionale Extras
- Anmeldung mit Google: Lege in der Google Cloud Console einen OAuth-Client vom Typ Web application an, füge die auf der Einstellungsseite angezeigte Redirect-URI hinzu (
https://<your server>/index.php/apps/idregister/google/callback) und füge Client-ID und Secret ein. Es werden nur die Scopesopenid,emailundprofilebenötigt. Google legt nie Konten an: Es verbindet nur ein bestehendes Konto mit derselben verifizierten Adresse. - Anmeldung mit deinem Handy: Gekoppelte Android-Handys bestätigen nach einem Fingerabdruck eine Anmeldung an jedem Computer, mit einem Schlüssel, der das Handy nie verlässt.
- Bezahlte Registrierung mit Cashier (Version 2.1 oder neuer von IDRegister): Wenn Cashier installiert und lizenziert ist und sichtbare Pläne hat, bietet die Seite "Pay a plan instead of scanning an ID" an. Der Besucher bestätigt eine E-Mail, zahlt mit Stripe und erhält ein Konto, das als verified by payment markiert ist, ohne Dokument oder Selfie. Zwei Schalter steuern das: den bezahlten Weg anbieten und die Identitätsprüfung nur für den kostenlosen Weg verlangen (standardmäßig an).
- Begleitende Android-App: Das signierte APK findest du unter Account → Licenses, es erfordert Android 8.0 oder neuer und ist die App für die Handy-Anmeldung. Sie ist optional; die Webseite funktioniert in jedem Handy-Browser.
Tipps und Fehlerbehebung
- "No text recognition is installed" unter Administration settings → Overview: Drücke auf Install the reader oder führe
occ idregister:install-ocraus. Eine Warnung, dass Dokumente mit Tesseract gelesen werden, bedeutet dasselbe. - Die Kamera startet nicht: Prüfe HTTPS und die Kameraberechtigung im Browser. Die Android-App ist der Fallback.
- Selfies passen nie: Die Gesichtsmodelle fehlen; installiere den Reader neu. Wenn ein Selfie nicht zu deinem Anwendungsfall passt, kann die Selfie-Prüfung ausgeschaltet werden.
- "Phone numbers from this country cannot be used here": Die mit deiner Lizenz gelieferten Regeln können eine optionale Liste erlaubter Ländervorwahlen enthalten. Sie ist standardmäßig leer und wird nur von MediaLab Works auf Anfrage gesetzt, schreib uns also, wenn du sie setzen oder leeren lassen möchtest. Dieselben Regeln ergänzen eine kurze Liste von Wegwerf-E-Mail-Diensten zu deinen blockierten Domains.
- Der bezahlte Weg erscheint nicht: Cashier fehlt, ist nicht lizenziert, hat keinen sichtbaren Plan, Stripe ist nicht verbunden oder der Schalter ist aus.
- Den Reader testen:
occ idregister:scan <picture>probiert den Reader an einem Bild aus und speichert nichts.occ idregister:cleanupentfernt Registrierungen, die nie bestätigt wurden.
Fazit
Für eine rumänische Schule, NGO oder Behörde gibt dir IDRegister Selbstregistrierung, ohne die Identität aufzugeben. Der Besucher braucht nur ein Handy und ein Dokument, das er ohnehin mitführt, du bekommst ein Konto pro Person, und die Daten, die du behältst, sind bewusst klein: ein Name, eine verifizierte E-Mail und Telefonnummer und ein gesalzener Hash der CNP. Die Bilder werden im Speicher gelesen und verworfen, das ist die Art von Design, die du einem Datenschutzbeauftragten ohne zusammenzuzucken erklären kannst. Beginne mit der Produktseite, folge dem Handbuch für die Einstellungen und prüfe das Changelog vor Upgrades. Wenn etwas unklar ist, sind die Wissensdatenbank und die FAQ gute nächste Anlaufstellen, und du kannst uns jederzeit kontaktieren.