Développement et amélioration de CKAN

Askem a entrepris depuis 2023 une refonte complète de son socle CKAN pour en faire une plateforme de gestion de données moderne, modulaire et interopérable. Basé sur CKAN 2.11 et étroitement intégré à l’écosystème DataBFC, ce socle enrichi combine des modules personnalisés, des processus de chargement avancés (XLoader, DataPusher+, Harvest), et une intégration complète avec Keycloak pour la gestion des identités.


Architecture et dockerisation

L’environnement CKAN développé par Askem est entièrement containerisé avec Docker. Chaque service est potentiellement isolé dans son propre conteneur : CKAN, PostgreSQL, Solr, Redis, XLoader, DataPusher, PyGeoAPI… L’architecture est orchestrée via un docker-compose.yml maintenu dans les dépôts git, facilitant la montée en environnement local, qualification et production.

services:
  ckan:
    build: ./ckan-app/ckan
    environment:
      - CKAN_SITE_URL=https://askem.eu
      - CKAN__PLUGINS=envvars ogc xloader harvest datapusher_plus
    depends_on:
      - db
      - solr
      - redis
      - datapusher
      - xloader
    volumes:
      - ./ckan_storage:/var/lib/ckan
  xloader:
    image: ckan/xloader
  datapusher:
    image: askem/datapusher-plus
  db:
    image: postgres:15
  solr:
    image: solr:9
  redis:
    image: redis:7
    

Cette approche garantit une reproductibilité parfaite entre les environnements et permet aux équipes de développement de travailler localement avec les mêmes conditions que la production.


Développement de modules et extensions

Askem a conçu ou fait évoluer plusieurs modules CKAN sur mesure pour répondre aux besoins spécifiques des collectivités et des partenaires open data :

  • ckanext-dataload-router — un module qui automatise la normalisation, la conversion et le chargement des données (CSV, JSON, GeoJSON, XLSX…).
  • ckanext-ogc — une intégration complète de pygeoapi pour exposer les ressources CKAN via les standards OGC (WFS, WMS, API Features).
  • ckanext-auth-keycloak — module d’intégration à Keycloak (OpenID Connect / SSO) pour une gestion unifiée des utilisateurs et des organisations.

Ces modules sont maintenus dans des dépôts publics GitLab conformément à la philosophie open source d’Askem.


XLoader, DataPusher+ et Harvest

Les processus de chargement des données ont été profondément modernisés pour garantir robustesse et traçabilité. Askem peut les implémenter pour vous sur vos projets de données.

  • XLoader : service de chargement asynchrone capable de traiter de gros fichiers Excel, JSON ou GeoJSON. Les conversions sont gérées via des workers séparés et supervisés.
  • DataPusher+ : version améliorée du DataPusher standard, prenant en charge plus de formats et gérant la reprise automatique en cas d’erreur.
  • Harvest : module de moissonnage configuré pour synchroniser automatiquement les portails open data externes (par ex. data.gouv.fr, INSPIRE, ou d’autres CKAN régionaux).

Ces composants sont orchestrés à travers le plugin interne dataload_router qui redirige intelligemment les ressources vers le service approprié selon le type et la taille du fichier.


Connexion et authentification Keycloak

L’intégration avec Keycloak permet :

  • Une authentification unifiée entre CKAN, Drupal, Superset et les autres applications du socle DataBFC / Dataizen.
  • Une gestion centralisée des rôles et permissions (admins, éditeurs, contributeurs, visiteurs).
  • Une compatibilité complète avec les identités fédérées (SAML2, OpenID Connect, LDAP).

CKAN consomme les jetons JWT de Keycloak via une configuration simplifiée et sécurisée. Un script d’initialisation gère automatiquement les synchronisations d’utilisateurs.


Scripts et automatisation

Plusieurs scripts d’automatisation ont été développés pour simplifier le travail des équipes :

ScriptRôle
init-ckan.shInitialise la base de données, les permissions et le compte admin.
fix-site-url.shMet à jour la configuration CKAN_SITE_URL après déploiement.
init-harvest.shCrée la base Harvest et lance les consommateurs.
restart-pygeoapi.shRecharge pygeoapi sans redémarrer CKAN.
reindex-datastore.shReindexe le DataStore pour les recherches (et pygeoapi).

Intégration DataBFC /Dataizen

Le CKAN développé par Askem constitue le cœur du socle DataBFC, interfacé avec Drupal pour la publication et la gestion des jeux de données, Superset pour la visualisation et VMAP pour la cartographie.
Les flux OGC et API sont exposés via PyGeoAPI et reliés au système d’authentification commun.

Cette approche modulaire permet de réutiliser le socle CKAN dans d’autres contextes (régionaux, européens, ou territoriaux), en respectant les standards de la donnée publique.


Ressources et code source - en cours

➜ Ces développements seront publiés sous licence AGPLv3 et font partie intégrante de la stratégie open source d’Askem et de l’ARNIa.