Introduction à ODK

Open Data Kit (ODK) permet de créer des formulaires pour collecter de la donnée depuis le terrain.

Ce kit est composé:

  • d’un standard XLSForm pour réaliser des formulaires avec un tableur comme LibreOffice, Excel ou Google Spreadsheet,
  • de l’application mobile ODK Collect pour collecter les données sur le terrain à partir du formulaire créé,
  • et d’un serveur pour agréger les soumissions de formulaires comme ODK Central ou KoboToolBox.

Les avantages sont la facilité de mise en œuvre et d’adapatation à une problématique. Il n’y a pas de base de données à installer et tout le paramétrage du formulaire se fait à l’aide d’un tableur. Le serveur ne sert qu’à agréger et télécharger les données. Rien ne reste sur le serveur une fois l’enquête terminée.

Autre avantage: la saisie sur le terrain en mode déconnecté lorsque la couverture réseau est incertaine. De plus, comme il n’y a pas de grosse base de données, le serveur n’a pas besoin d’être un monstre. Les données collectées avec une composante spatiale (réponses à la question “où?”) peuvent servir à alimenter un Système d’Information Géographique (SIG).

Pour toute information complémentaire, vous pouvez consulter le site getodk, la documentation ou le dépot de code github

Auto-héberger le serveur ODK Central

Vous pouvez choisir d’auto-héberger le serveur ODK Central pour avoir la main sur tout le workflow. Pour ceux qui ne veulent pas s’embêter, vous pouvez utiliser un serveur hébergé par un fournisseur de service, payant ou pas, mais là n’est pas l’objet de mon post. Enfin, à la fin du post je détaille l’utilisation de KoboToolBox quand même.

Installer ODK Central sur un serveur

Ce n’est pas bien compliqué un fois qu’on a son domaine et son serveur VPS. J’ai suivi ce tuto et notamment cette section pour une installation avec Docker sur un VPS OVH.

Louer un VPS

J’ai pris un VPS de base avec 2Go de RAM chez OVH. Les option de snapshot et de backup automatique font grimper la facture. A voir car les données soumises sont téléchargées au fur et à mesure. Le snapshot reste intéressant pour une sauvegarde de l’installation à un instant T. Il est possible de s’en sortir pour 10 à 12€ TTC /mois avec snapshot et backup automatique, et pour 5€ sans les sauvegardes mais c’est sans filet.

J’ai choisi un serveur avec OS (debian 12) et Docker préinstallé mais vous pouvez choisir un serveur Debian nu et faire votre installation de Docker à la mano. Un fois fait, vous recevrez un lien par mail pour définir un mot de passe pour le compte root. La connexion au serveur se fera par SSH. Pour un minimum de sécurité, pensez à changer le port par défaut du SSH, voire mettre en place un fail2ban. Cette doc OVH peut vous aider. Pas besoin d’être parano car le serveur debian est une “coquille vide”, tout se passe dans les containers Docker.

Vous aurez accès à tous les paramètres dans le manager OVH dans la section Bare Metal Cloud correspondant aux VPS. Pour l’exemple, l’IP du serveur sera 137.24.255.255.

Configurer son domaine

Prendre un domaine chez un Registrar

Vous avez besoin de prendre un nom de domaine chez un Registrar. Il y en a pour tous les gouts faites vous plaisir. Attention le coût peut varier en fonction de l’extension de premier niveau et de la promo la première année. Un .fr coute environ 7-8€ /an. Cela va permettre de faire pointer un sous domaine vers votre serveur VPS. Dans l’exemple le domaine sera toto.fr.

Configurer un sous-domaine

Pourquoi configurer un sous-domaine et pas le domaine entier? Parce que votre domaine toto.fr peut servir à plein d’autres choses. Il suffit de créer un sous domaine odkcentralet de l’affecter à votre VPS sur lequel sera installé ODK Central.

Pour cela, dans votre manager OVH, allez dans l’onglet Web Cloud, puis sur votre domaine et dans la section Zone DNS.

Cliquez sur le bouton “Ajouter un entrée”, choisissez un type de champ DNS “A”, remplissez votre sous domaine comme odkcentral, laissez la TTL par défaut, et définissez la cible vers l’adresse IP de votre serveur VPS 137.24.255.255 et validez.

Lorsque quelqu’un remplira l’url https://odkcentral.toto.fr dans son navigateur, il sera redirigé sur le VPS hébergeant ODK Central.

Installer ODK Central

Installation avec Docker

Avec un terminal, connecté en SSH au VPS avec un compte ayant des droits root lancer les commandes indiquées.
Adapté d’après ce tuto.

S’assurer d’avoir les bonnes versions de Docker Engine > v23x et de Docker Compose > v2.16.x

$ docker --version && docker compose version

Télécharger le logiciel à partir de github

$ git clone https://github.com/getodk/central

Aller dans le nouveau dossier central

$ cd central

Obtenir la dernière version du client et du serveur avec git

$ git submodule update -i

Mettre à jour les paramètres en copiant le modèle de fichier des paramètres pour les éditer

$ cp .env.template .env

Editer le fichier .env avec l’éditeur de texte nano

$ nano .env

Naviger avec les flèches directionnelles à l’intérieur de nano
Changer la ligne DOMAIN=MyOdkCentralServer.com pour DOMAIN=odkcentral.toto.fr
Changer la ligne SYSADMIN_EMAIL=administrator@email.com pour SYSADMIN_EMAIL=votre@email.com. Cette adresse mail est utilisée par le service de certicats let’s encrypt Enregistrer avec les touches CTRL + x et Entrée

On veut la denière version de la base de donnée postgres (comme quoi il y a quand même une base de données)

$ touch ./files/allow-postgres14-upgrade

Lancer la construction des containers avec Docker compose

$ docker compose build

Attendre. Surveillez le “Successfully built”. Super, ODK Central est installé.

Démarrer le serveur Central

$ docker compose up -d

Regardez si ODK a fini de charger

$ docker compose ps

Sous la colonne status attendre que central-nginx-1 soit Up ou Up (healthy)

Vérifier que le site répond en allant sur https://odkcentral.toto.fr

Créez un compte administrateur de ODK Central

Aller dans le dossier central sur le VPS

$ cd central

Créer un nouveau compte avec une adresse email

$ docker compose exec service odk-cmd --email YOUREMAIL@ADDRESSHERE.com user-create

Rentrer un mot de passe

Rendre ce compte administrateur

$ docker compose exec service odk-cmd --email YOUREMAIL@ADDRESSHERE.com user-promote

Si vous perdez votre mot de passe réinitialisez le

$ docker compose exec service odk-cmd --email YOUREMAIL@ADDRESSHERE.com user-set-password

Retournez sur le site https://odkcentral.toto.fr et connectez vous avec le compte administrateur créé.

Modéliser son formulaire XLSForm

Le modèle fourni par ODK Central lors de la création du premier formulaire comprends 3 feuilles qu’il faut remplir.

  1. Survey: le formulaire à proprement parler
  2. Choices: les listes de choix et leurs valeurs servant au formulaire
  3. Settings: les paramètres généraux comme le nom du formulaire et les champs servant à identifier chaque soumission (ex: concaténation d’un champ date et d’un champ nom d’observateur).

Les autres feuilles indicatives contiennent des informations commes la bibliothèque des différents types de données possibles.

Consultez la doc ou le forum d’ODK Central pour cela.

Une fois modélisé, uploadez le fichier Excel pour créer une ébauche de formulaire et testez-le.

Une fois testé, vous pouvez le publier et définir les droits d’accès au formulaire:

  • ouvert à tous,
  • aux seuls détenteurs du lien,
  • aux utilisateurs définis,
  • aux collecteurs à partir d’application mobile)

Installer le client mobile Android ODK Collect

L’application mobile ODK Collect permet de saisir les formulaires créés. Elle est disponibles sur les stores

Android: ODK Collect

Apple: pas de version Apple d’ODK Collect mais d’autres applications compatibles non testées.

Le paramétrage du formulaire se fait automatiquement avec le QR Code généré dans le serveur ODK Central et fournit par l’administrateur au collecteur des données. De même, les droits sont définis par l’administrateur dans ODK Central. On peut aussi saisir l’url du serveur, l’identifiant et le mot de passe.

Pour plus de détails sur l’utilisation d’ODK Collect vous pouvez consulter ce guide du CEN de l’Ariège qui est très bien fait.

Utiliser le formulaire web Enketo

ODK Central permet de saisir directement le formulaire web avec Enketo.

Télécharger les soumissions de formulaires avec ODK Central

Dans ODK Central, vous pouvez valider les soumissions, les agréger et les télécharger au format CSV. Le traitement des informations géolocalisées peut poser problème. En effet les champs geopoint, geotrace et geoshape contiennent les coordonnées des points qui composent les points, lignes et polygones mais ne sont pas dans un format facilement utilisable avec les SIG pour une visualisation cartographique.

Résoudre les problèmes d’envoi de mails

ODK Central envoi des mails lors de la création des comptes utilisateurs web pour la saisie avec Enketo. Des mails sont aussi générés lorsque les utilisateurs réinitialisent leurs mots de passe. L’envoi de mails par le serveur ODK Central peut être difficile s’il est configuré sur un sous-domaine mal authentifié (politiques DKIM et DMARC). Dans mon exemple les mails proviennent de no-reply@odkcentral.toto.fr ce qui devient compliqué si @toto.fr est déjà paramétré comme serveur mail avec une politique stricte en matière de délivrabilité mail. Il faut donc penser à bien authentifier aussi le sous domaine pour l’envoi mail.

Mais le plus simple est d’utiliser un serveur SMTP alternatif dédié.

Dans le terminal aller dans le dossier central et éditer le ficher .env avec le serveur hôte, le port et les détails d’authentification.

$ cd central
$ nano .env

Décommenter et remplir les lignes suivantes:

EMAIL_FROM=my-no-reply-email-address
EMAIL_HOST=my-email-host
EMAIL_PORT=my-email-port
EMAIL_IGNORE_TLS=true-or-false
EMAIL_SECURE=true-or-false
EMAIL_USER=my-email-user
EMAIL_PASSWORD=my-email-password
  • EMAIL_FROM l’adresse mail de l’expéditeur (sender address) pour les réponses.
  • EMAIL_HOST le serveur de mail hôte pour le SMTP.
  • EMAIL_IGNORE_TLS réglé sur false.
  • EMAIL_SECURE réglé sur true si vous utilisez le port 465 et sur false pour les autres ports.
  • EMAIL_USER et EMAIL_PASSWORD sont tous deux requis.

Lancer le build et redémarrer le container:

$ docker compose build service && docker compose stop service && docker compose up -d service

Utiliser les données dans un SIG avec QGis

Pour visualiser et télécharger les soumissions des formulaires vous pouvez aussi utiliser le logiciel libre QGis.

Des plugins ou extensions permettent de télécharger depuis ODK Central et de traiter les données géolocalisées (geopoint, geotrace, geoshape) pour les afficher dans QGis. J’en ai testé 2.

ODKTraceToWKT

ODKTraceToWKT

Après téléchargement des soumissions ODK Central en CSV, permet de convertir des geotraces en tableur CSV avec colonne géographique en WKT pour visualiser sur QGis.

QuODK

QuODK

Permet la connexion directe au serveur ODK Central. Paramétrer le plugin en spécifiant l’url du serveur ODK Central (ne pas mettre le /final à la fin de l’url du serveur ODK), l’identifiant de l’utilisateur et le mot de passe. Ensuite spécifier le projet, le formulaire et le type de geolocalisation à afficher.

QRealTime

Permet la synchronisation directe d’une couche SIG QGis au serveur ODK Central ou à KoboToolBox.

KoboToolBox

La plateforme commerciale KoboToolbox regroupe un agrégateur compatible ODK et les outils de gestion, visualisation, de traitement et d’export des soumissions. Les mêmes formulaires Excel peuvent être utilisés comme modèles. La version gratuite permet de traiter jusqu’à 5000 soumissions par mois. Ce peut être une alternative à ODK Central pour ceux qui ne veulent pas faire d’auto-hébergement.

Ressources, tutoriels, vidéos

Vidéos:

  • Cette vidéo montre bien l’installation d’ODK Central et la configuration du sous-domaine sur un serveur Linux.
  • Celle-ci vous guide pour réaliser votre premier formulaire.
  • Celle-là vous explique comment utiliser KoboToolBox pour télécharger les données.

Articles:

Forum:

Docs: