Pourquoi des comptes vérifiés valent la peine
Si vous gérez Nextcloud pour une école, une ONG ou un organisme public en Roumanie, vous connaissez déjà le point faible de l'inscription en libre-service : toute personne disposant d'une adresse e-mail peut créer un compte. Désactiver l'inscription signifie créer les utilisateurs à la main toute la semaine. Pour beaucoup d'organisations, le compromis honnête est la vérification d'identité Nextcloud : le visiteur s'inscrit depuis son propre téléphone, prouve qui il est avec une carte d'identité ou un permis de conduire roumain, et le compte est créé sur-le-champ.
IDRegister est un plugin Nextcloud qui fait exactement cela. Le document est lu en direct avec RapidOCR, un selfie est comparé à la photo de la carte avec une petite rotation de la tête pour la preuve de vie, et le numéro personnel (CNP) n'est conservé que sous forme de haché salé afin qu'un document ne donne qu'un seul compte. L'image du document et le selfie ne sont jamais stockés. C'est ce dernier point qui rend la solution défendable au regard du RGPD : vous conservez le minimum nécessaire au service, pas une collection de scans d'identité.
Ce tutoriel déroule la configuration du point de vue d'un auto-hébergeur. Les détails complets se trouvent dans le guide utilisateur ; je me concentre ici sur les décisions qui comptent pour un déploiement dans le secteur public ou une ONG.
Prérequis
Avant de commencer, vérifiez que vous disposez de :
- Nextcloud 30 à 34 et PHP 8.1 ou plus récent, avec
imagick(GD fonctionne en secours). - HTTPS sur l'instance. Les navigateurs mobiles n'accordent l'accès à la caméra qu'en HTTPS ; ce n'est donc pas optionnel.
- Python 3.8 ou plus récent (
python3) sur le serveur. L'application construit son propre environnement et télécharge ses modèles de lecture et de reconnaissance faciale (RapidOCR, ONNX Runtime, OpenCV et le pack de modèlesbuffalo_ld'InsightFace, environ 450 Mo) dans le répertoire de données Nextcloud. Ce téléchargement nécessite un accès Internet une fois. - Facultativement
tesseract-ocravectesseract-ocr-roncomme lecteur de secours. Tesseract seul lit mal les cartes photographiées ; traitez-le comme une solution de repli, pas comme le chemin principal. - Un compte MediaLab Works avec une licence active, une licence à vie dans sa fenêtre de mise à jour, ou l'essai gratuit de 30 jours.
Un mot sur le RGPD avant toute collecte de données : déterminez qui est le responsable de traitement, écrivez pourquoi vous collectez le nom et l'e-mail, et liez vos propres conditions sur la page de réglages. IDRegister ne conserve le CNP que sous forme de haché salé et supprime les images, ce qui limite votre traitement, mais les formalités organisationnelles restent à votre charge.
Étape 1 : installer l'application et activer la licence
Téléchargez l'archive idregister-x.y.z.tar.gz depuis Licences dans votre compte MediaLab Works, puis extrayez-la dans apps/ (ou custom_apps/) pour obtenir apps/idregister/ appartenant à l'utilisateur du serveur 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
Ouvrez Paramètres d'administration → IDRegister → Licence, collez votre clé de licence et enregistrez. L'application lie la clé à cette instance et affiche la licence comme Active. La vérification s'exécute une fois par jour ; sans Internet, l'application continue de fonctionner 7 jours après la dernière vérification réussie. Les comptes déjà créés ne sont jamais affectés par une expiration de licence, ils continuent de se connecter avec leur mot de passe, et rien n'est supprimé.
Étape 2 : installer le lecteur
Sur la même page de réglages, appuyez sur Installer le lecteur. Une tâche en arrière-plan construit un environnement Python dans appdata_<id>/idregister/python et télécharge les modèles. Depuis un terminal, la même étape est :
sudo -u www-data php occ idregister:install-ocr
Si vous devez repartir de zéro, ajoutez --remove. Faites-le avant d'ouvrir l'inscription aux visiteurs, sinon ils verront un service incapable de lire quoi que ce soit.
Étape 3 : ouvrir l'inscription
L'interrupteur principal est désactivé par défaut. Activez-le. La page d'inscription est /index.php/apps/idregister/, et un lien est ajouté à la page de connexion. L'interface est disponible en roumain et en anglais, ce qui convient bien à un organisme public roumain.
Étape 4 : décider des contrôles
Tous les contrôles sont activés par défaut, et je les garderais ainsi pour un déploiement public :
- Mode express : le compte est créé immédiatement avec un nom d'utilisateur aléatoire et un mot de passe affiché une seule fois.
- Inscription uniquement depuis un téléphone ou une tablette : le téléphone est l'appareil qui a une caméra en main ; un ordinateur affiche un QR code et se connecte une fois le téléphone terminé.
- Selfie comparé au document et rotation de la tête pendant le selfie : le selfie est comparé à la photo à l'aide des modèles InsightFace sur ONNX Runtime, et la rotation de la tête prouve qu'il s'agit d'une personne réelle.
- Refuser les photocopies et les écrans : la couleur contre les copies noir et blanc, le moiré contre les écrans, et les reflets qui bougent quand la carte est inclinée. Quand le contrôle est incertain, la page demande une inclinaison puis envoie l'inscription à un administrateur.
- Refuser les documents expirés et un compte par carte d'identité.
Le lecteur reconnaît les anciennes cartes d'identité, la nouvelle carte électronique (CEI) et le permis de conduire. La zone de lecture automatique, les libellés imprimés et le CNP (validé par sa clé de contrôle) sont combinés.
Étape 5 : configurer les comptes et les limites liées au RGPD
Sous Comptes, vous contrôlez ce que l'organisation autorise :
- Un administrateur doit approuver chaque nouveau compte (désactivé par défaut). Pour une école, c'est souvent le bon réglage.
- Documents acceptés : carte d'identité, permis de conduire, ou les deux.
- Âge minimum, groupes par défaut, quota pour les nouveaux utilisateurs, nombre maximal de comptes (0 = pas de limite).
- Domaines e-mail autorisés et bloqués : utile pour garder les inscriptions dans le domaine de votre organisation.
- Lien vers vos conditions, et Un numéro de téléphone est requis (activé par défaut ; désactivez-le pour rendre le téléphone facultatif). Les numéros de tout pays sont acceptés.
Réglez Supprimer les inscriptions non confirmées après (heures, 48 par défaut). Les inscriptions dont l'e-mail n'est jamais confirmé sont supprimées automatiquement, avec le compte désactivé. C'est un argument propre de minimisation des données à inscrire dans vos registres.
Étape 6 : ce que vit le visiteur
Le visiteur ouvre la page sur le téléphone, place le document dans le cadre et suit les invites (plus près, ne bougez pas, inclinez), puis prend un selfie avec une petite rotation de la tête. Le compte est créé et le visiteur est connecté. Le nom figurant sur le document devient le nom affiché et est verrouillé ; l'e-mail (vérifié par un code à six chiffres et un lien) et le téléphone sont ajoutés au profil et figés une fois confirmés.
Sur un ordinateur, la page affiche un QR code ; le visiteur le scanne, termine le parcours sur le téléphone, et l'ordinateur se connecte.
Étape 7 : options complémentaires
- Connexion avec Google : créez un client OAuth de type Web application dans la console Google Cloud, ajoutez l'URI de redirection affichée sur la page de réglages (
https://<votre serveur>/index.php/apps/idregister/google/callback), puis collez l'ID client et le secret. Seuls les scopesopenid,emailetprofilesont nécessaires. Google ne crée jamais de compte : il relie seulement un compte existant avec la même adresse vérifiée. - Connexion avec votre téléphone : des téléphones Android appairés approuvent une connexion sur n'importe quel ordinateur après une empreinte, avec une clé qui ne quitte jamais le téléphone.
- Inscription payante avec Cashier (version 2.1 ou plus récente d'IDRegister) : lorsque Cashier est installé, sous licence et propose des plans visibles, la page propose « Payer un plan au lieu de scanner une pièce d'identité ». Le visiteur confirme un e-mail, paie avec Stripe et obtient un compte marqué vérifié par paiement, sans document ni selfie. Deux interrupteurs le contrôlent : proposer le parcours payant, et exiger le contrôle d'identité uniquement pour le parcours gratuit (activé par défaut).
- Application Android compagnon : l'APK signé se trouve sous Compte → Licences, nécessite Android 8.0 ou plus récent, et c'est l'application utilisée pour la connexion par téléphone. Elle est facultative ; la page web fonctionne dans n'importe quel navigateur mobile.
Astuces et dépannage
- « Aucune reconnaissance de texte n'est installée » dans Paramètres d'administration → Vue d'ensemble : appuyez sur Installer le lecteur ou exécutez
occ idregister:install-ocr. Un avertissement indiquant que les documents sont lus avec Tesseract signifie la même chose. - La caméra ne démarre pas : vérifiez HTTPS et l'autorisation de la caméra dans le navigateur. L'application Android est la solution de secours.
- Les selfies ne correspondent jamais : les modèles faciaux manquent ; réinstallez le lecteur. Si un selfie ne convient pas à votre cas d'usage, le contrôle par selfie peut être désactivé.
- « Les numéros de téléphone de ce pays ne peuvent pas être utilisés ici » : les règles livrées avec votre licence peuvent comporter une liste facultative d'indicatifs autorisés. Elle est vide par défaut et n'est définie que par MediaLab Works sur demande ; écrivez-nous si vous avez besoin de la définir ou de la vider. Les mêmes règles ajoutent une courte liste de services d'e-mail jetables à vos domaines bloqués.
- Le parcours payant n'apparaît pas : Cashier est absent, sans licence, n'a pas de plan visible, Stripe n'est pas connecté, ou l'interrupteur est désactivé.
- Tester le lecteur :
occ idregister:scan <picture>essaie le lecteur sur une image et ne stocke rien.occ idregister:cleanupsupprime les inscriptions qui n'ont jamais été confirmées.
Conclusion
Pour une école, une ONG ou un organisme public roumain, IDRegister offre l'inscription en libre-service sans renoncer à l'identité. Le visiteur n'a besoin que d'un téléphone et d'un document qu'il porte déjà, vous obtenez un compte par personne, et les données conservées sont délibérément réduites : un nom, un e-mail et un téléphone vérifiés, et un haché salé du CNP. Les images sont lues en mémoire puis supprimées, un design que vous pouvez expliquer à un DPO sans grimacer. Commencez par la page produit, suivez le guide pour les réglages, et consultez le journal des modifications avant les mises à jour. Si quelque chose n'est pas clair, la base de connaissances et la FAQ sont de bonnes étapes suivantes, et vous pouvez toujours nous contacter.