De ce merită conturile cu identitate verificată
Dacă administrezi Nextcloud pentru o școală, un ONG sau o instituție publică din România, cunoști deja punctul slab al înregistrării libere: oricine are o adresă de e-mail își poate face cont. Dacă închizi înregistrarea, petreci săptămâna creând utilizatori manual. Pentru multe organizații, soluția de mijloc onestă este nextcloud identity verification: vizitatorul se înregistrează de pe propriul telefon, își dovedește identitatea cu cartea de identitate română sau permisul de conducere, iar contul este creat pe loc.
IDRegister este un plugin pentru Nextcloud care face exact acest lucru. Documentul este citit pe loc cu RapidOCR, un selfie este comparat cu poza de pe act, cu o întoarcere scurtă a capului pentru verificarea prezenței reale, iar numărul personal (CNP) este păstrat doar ca hash cu sare, astfel încât un document să însemne un cont. Poza documentului și selfie-ul nu sunt niciodată salvate. Ultima parte este cea care îl face justificabil sub GDPR: păstrezi minimul necesar pentru a presta serviciul, nu o colecție de scanări de acte.
Acest tutorial parcurge configurarea din perspectiva unui self-hoster. Detaliile complete se află în ghidul de utilizare; aici mă concentrez asupra deciziilor care contează pentru un deployment în sectorul public sau într-un ONG.
Cerințe preliminare
Înainte de a începe, asigură-te că ai:
- Nextcloud 30 până la 34 și PHP 8.1 sau mai nou, cu
imagick(GD funcționează ca soluție de rezervă). - HTTPS pe instanță. Browserele de pe telefon oferă acces la cameră doar prin HTTPS, deci acest lucru nu este opțional.
- Python 3.8 sau mai nou (
python3) pe server. Aplicația își construiește propriul mediu și descarcă cititorul și modelele faciale (RapidOCR, ONNX Runtime, OpenCV și pachetul de modele InsightFacebuffalo_l, aproximativ 450 MB) în directorul de date Nextcloud. Acea descărcare are nevoie de acces la internet o singură dată. - Opțional
tesseract-ocrcutesseract-ocr-ronca cititor de rezervă. Tesseract singur citește prost actele fotografiate, așa că tratează-l ca pe o soluție de rezervă, nu ca pe calea principală. - Un cont MediaLab Works cu o licență activă, o licență pe viață în fereastra de actualizare sau perioada de probă gratuită de 30 de zile.
Un cuvânt despre GDPR înainte de a colecta orice dată: decide cine este operatorul, notează de ce colectezi numele și e-mailul și afișează propriile termeni pe pagina de setări. IDRegister păstrează CNP-ul doar ca hash cu sare și elimină imaginile, ceea ce menține prelucrarea minimă, dar documentația organizațională rămâne responsabilitatea ta.
Pasul 1: Instalează aplicația și activează licența
Descarcă arhiva idregister-x.y.z.tar.gz din Licenses din contul tău MediaLab Works, apoi extrage-o în apps/ (sau custom_apps/) astfel încât să obții apps/idregister/, deținut de utilizatorul serverului web:
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
Deschide Administration settings → IDRegister → License, lipește cheia de licență și salvează. Aplicația leagă cheia de această instanță și afișează licența ca Active. Verificarea rulează o dată pe zi; fără internet, aplicația continuă să funcționeze 7 zile după ultima verificare reușită. Conturile deja create nu sunt niciodată afectate de expirarea licenței, acestea continuă să se autentifice cu parola, iar nimic nu este șters.
Pasul 2: Instalează cititorul
Pe aceeași pagină de setări, apasă Install the reader. Un job de fundal construiește un mediu Python în appdata_<id>/idregister/python și descarcă modelele. Din terminal, același pas este:
sudo -u www-data php occ idregister:install-ocr
Dacă vreodată trebuie să o iei de la capăt, adaugă --remove. Fă acest lucru înainte de a deschide înregistrarea pentru vizitatori, altfel vor vedea un serviciu care nu poate citi nimic.
Pasul 3: Deschide înregistrarea
Comutatorul principal este oprit implicit. Pornește-l. Pagina de înregistrare este /index.php/apps/idregister/, iar un link este adăugat pe pagina de autentificare. Interfața este disponibilă în română și engleză, ceea ce se potrivește bine unei instituții publice din România.
Pasul 4: Decide verificările
Toate verificările sunt active implicit și aș păstra această configurație pentru un deployment public:
- Express mode: contul este creat imediat, cu un nume de utilizator aleatoriu și o parolă afișată o singură dată.
- Înregistrare doar de pe un telefon sau o tabletă: telefonul este dispozitivul cu cameră la îndemână; un computer afișează un cod QR și se autentifică după ce telefonul termină.
- Selfie comparat cu documentul și întoarcerea capului în timpul selfie-ului: selfie-ul este comparat cu fotografia folosind modelele InsightFace pe ONNX Runtime, iar întoarcerea capului dovedește o persoană reală.
- Refuză copiile și ecranele: culoare față de copii alb-negru, moiré față de ecrane și reflexe care se mișcă la înclinarea cardului. Când verificarea este nesigură, pagina cere o înclinare și apoi trimite înregistrarea la un administrator.
- Refuză documentele expirate și un singur cont per carte de identitate.
Cititorul recunoaște cărțile de identitate vechi, noua carte electronică (CEI) și permisul de conducere. Zona de citire automată, etichetele tipărite și CNP-ul (validat prin cifra de control) sunt combinate.
Pasul 5: Configurează conturile și limitele relevante pentru GDPR
La Accounts controlezi ce permite organizația:
- Un administrator trebuie să aprobe fiecare cont nou (oprit implicit). Pentru o școală, aceasta este adesea setarea potrivită.
- Documente acceptate: carte de identitate, permis de conducere sau ambele.
- Vârsta minimă, grupurile implicite, cota pentru utilizatorii noi, numărul maxim de conturi (0 = fără limită).
- Domenii de e-mail permise și blocate: util pentru a menține înregistrările în domeniul organizației tale.
- Link către termenii tăi și Un număr de telefon este obligatoriu (activ implicit; dezactivează-l pentru a face telefonul opțional). Sunt acceptate numere de telefon din orice țară.
Setează Delete unconfirmed registrations after (ore, implicit 48). Înregistrările al căror e-mail nu este niciodată confirmat sunt eliminate automat împreună cu contul dezactivat. Este o poveste curată de minimizare a datelor pe care o poți trece în evidențele tale.
Pasul 6: Ce trăiește vizitatorul
Vizitatorul deschide pagina pe telefon, ține documentul în cadru și urmează indicațiile (mai aproape, stai nemișcat, înclină), apoi face un selfie cu o mică întoarcere a capului. Contul este creat și vizitatorul este autentificat. Numele din document devine numele afișat și este blocat; e-mailul (verificat cu un cod din șase cifre și un link) și telefonul sunt adăugate în profil și fixate după confirmare.
Pe un computer, pagina afișează un cod QR; vizitatorul îl scanează, finalizează fluxul pe telefon, iar computerul se autentifică.
Pasul 7: Extra opționale
- Sign in with Google: creează un client OAuth de tip Web application în consola Google Cloud, adaugă URI-ul de redirecționare afișat pe pagina de setări (
https://<your server>/index.php/apps/idregister/google/callback) și lipește client ID-ul și secretul. Sunt necesare doar scope-urileopenid,emailșiprofile. Google nu creează niciodată conturi: doar leagă un cont existent cu aceeași adresă verificată. - Sign in with your phone: telefoanele Android asociate aprobă o autentificare pe orice computer după o amprentă, cu o cheie care nu părăsește niciodată telefonul.
- Înregistrare plătită cu Cashier (versiunea 2.1 sau mai nouă a IDRegister): când Cashier este instalat, licențiat și are planuri vizibile, pagina oferă "Pay a plan instead of scanning an ID". Vizitatorul confirmă un e-mail, plătește cu Stripe și primește un cont marcat verified by payment, fără document sau selfie. Două comutatoare controlează acest lucru: oferă calea plătită și cere verificarea identității doar pentru calea gratuită (activ implicit).
- Aplicația Android companion: APK-ul semnat se află la Account → Licenses, necesită Android 8.0 sau mai nou și este aplicația folosită pentru autentificarea prin telefon. Este opțională; pagina web funcționează în orice browser de telefon.
Sfaturi și depanare
- "No text recognition is installed" în Administration settings → Overview: apasă Install the reader sau rulează
occ idregister:install-ocr. Un avertisment că documentele sunt citite cu Tesseract înseamnă același lucru. - Camera nu pornește: verifică HTTPS și permisiunea pentru cameră în browser. Aplicația Android este soluția de rezervă.
- Selfie-urile nu se potrivesc niciodată: lipsesc modelele faciale; reinstalează cititorul. Dacă un selfie nu se potrivește cazului tău de utilizare, verificarea selfie-ului poate fi dezactivată.
- "Phone numbers from this country cannot be used here": regulile livrate cu licența ta pot include o listă opțională de prefixe telefonice permise. Este goală implicit și este setată doar de MediaLab Works la cerere, așa că scrie-ne dacă ai nevoie să fie setată sau golită. Aceleași reguli adaugă o listă scurtă de servicii de e-mail temporare la domeniile tale blocate.
- Calea plătită nu apare: Cashier lipsește, nu este licențiat, nu are un plan vizibil, Stripe nu este conectat sau comutatorul este oprit.
- Testarea cititorului:
occ idregister:scan <picture>încearcă cititorul pe o imagine și nu stochează nimic.occ idregister:cleanupelimină înregistrările care nu au fost niciodată confirmate.
Concluzie
Pentru o școală, un ONG sau o instituție publică din România, IDRegister îți oferă înregistrare liberă fără a renunța la identitate. Vizitatorul are nevoie doar de un telefon și de un document pe care îl are deja, tu obții un cont per persoană, iar datele pe care le păstrezi sunt în mod deliberat puține: un nume, un e-mail și un telefon verificate și un hash cu sare al CNP-ului. Imaginile sunt citite în memorie și eliminate, ceea ce este genul de design pe care îl poți explica unui DPO fără să te crispezi. Începe cu pagina produsului, urmează ghidul pentru setări și verifică changelog-ul înainte de actualizări. Dacă ceva este neclar, Bază de cunoștințe și FAQ sunt următoarele opriri bune și ne poți contacta oricând.