ProjetsÀ propos
APPARENCE

Guide Complet : Déploiement de DHIS2 sur Ubuntu 22.04.5 LTS

Mubarak Mohamed
Mubarak Mohamed
Développeur | Data analyst
Mis à jour le 17 mars 2026Publié le 17 mars 2026
Glossaire :ACTIVÉ
11 vues
30 min de lecture

Dans l'écosystème moderne de la Data, DHIS2 (District Health Information System 2) s'impose comme la solution de référence pour la collecte, la structuration et la centralisation des données de santé publique. Utilisé dans plus de 100 pays, cet outil open-source permet aux Data Analysts, Managers IT et professionnels de la santé de :

  • Centraliser les données provenant de multiples sources (terrain, laboratoires, registres)
  • Structurer l'information selon des standards internationaux (WHO, PEPFAR, etc.)
  • Analyser en temps réel les indicateurs de santé publique
  • Visualiser les tendances via des dashboards interactifs

Ce guide vous accompagne pas à pas dans le déploiement d'une instance DHIS2 fonctionnelle sur Ubuntu 22.04.5 LTS, en respectant les bonnes pratiques d'architecture et de sécurité.

🎯 Prérequis

Spécifications Serveur Recommandées

ComposantMinimumRecommandéProduction
CPU2 cores4 cores8+ cores
RAM4 GB8 GB16+ GB
Stockage50 GB100 GB500+ GB (SSD)
OSUbuntu 22.04.5 LTSUbuntu 22.04.5 LTSUbuntu 22.04.5 LTS

Accès Requis

✅ Accès SSH avec privilèges sudo
✅ Connexion Internet stable
✅ Ports ouverts : 8080 (Tomcat), 5432 (PostgreSQL - optionnel si local)
✅ Nom de domaine ou IP publique (pour accès distant)

💡 Note de l'expert : Pour un environnement de production, privilégiez un serveur dédié avec au moins 16 GB de RAM. DHIS2 peut gérer des millions d'enregistrements, mais les performances dépendent fortement de la configuration matérielle.

🏗️ Architecture de la Stack

Comprendre l'architecture technique est essentiel pour diagnostiquer les problèmes et optimiser les performances.

┌─────────────────────────────────────────┐
│         Navigateur Web (Client)         │
└──────────────┬──────────────────────────┘
               │ HTTP(S) - Port 8080/443
┌──────────────▼──────────────────────────┐
│     Apache Tomcat 9 (Serveur Web)       │
│   - Héberge l'application DHIS2.war     │
│   - Gère les requêtes utilisateurs      │
└──────────────┬──────────────────────────┘
               │ JDBC
┌──────────────▼──────────────────────────┐
│   PostgreSQL 14 + PostGIS               │
│   - Stockage relationnel des données    │
│   - Extensions géospatiales             │
│   - Indexation optimisée (pg_trgm)      │
└─────────────────────────────────────────┘

Rôle des Composants

ComposantRôlePourquoi ce choix
Java 11 (OpenJDK)Machine virtuelle pour exécuter DHIS2Compatibilité officielle DHIS2 (versions 2.38-2.40)
PostgreSQL 14+Base de données relationnellePerformance, robustesse, support des extensions
PostGISExtension géospatialeGestion des coordonnées GPS, cartes choroplèthes
Apache Tomcat 9Serveur d'applications JavaStandard pour déployer des fichiers .war
pg_trgm & btree_ginExtensions d'indexationAccélération des recherches textuelles

🛠️ Déploiement Pas-à-Pas

Étape 1️⃣ : Préparation du Système

Connectez-vous à votre serveur via SSH et mettez à jour le système :

bash
sudo apt update && sudo apt upgrade -y

Installez les utilitaires de base :

bash
sudo apt install -y vim software-properties-common curl wget

⚠️ Warning : Le redémarrage peut être nécessaire si le kernel a été mis à jour. Vérifiez avec ls /var/run/reboot-required.


Étape 2️⃣ : Installation de Java 11

DHIS2 2.38 à 2.40 nécessite Java 11 (pas Java 17 ou 21).

bash
sudo apt install -y openjdk-11-jdk-headless

Vérifiez l'installation :

bash
java -version

Sortie attendue :

openjdk version "11.0.x" 2023-xx-xx
OpenJDK Runtime Environment (build 11.0.x+x-Ubuntu-...)

Nettoyage : Supprimer les Versions Concurrentes

Si vous avez Java 17 ou d'autres versions installées :

bash
# Lister les versions JDK installées dpkg --list | grep -i jdk

Exemple pour supprimer Java 17 :

bash
sudo apt purge openjdk-17-* -y sudo apt autoremove -y

💡 Note de l'expert : DHIS2 2.41+ supportera Java 17. Vérifiez toujours la matrice de compatibilité officielle avant d'installer.

Étape 3️⃣ : Installation de PostgreSQL et PostGIS

bash
sudo apt install -y postgresql postgresql-contrib postgis

Vérifiez que PostgreSQL est actif :

bash
sudo systemctl status postgresql

Étape 4️⃣ : Configuration de la Base de Données

Création de l'utilisateur et de la base DHIS2

bash
# Créer l'utilisateur 'dhis' (sans privilèges SUPERUSER, CREATEDB, CREATEROLE) sudo -u postgres createuser -S -D -R dhis # Créer la base de données 'dhis2' appartenant à 'dhis' sudo -u postgres createdb -O dhis dhis2 # Définir un mot de passe sécurisé sudo -u postgres psql -c "ALTER USER dhis WITH PASSWORD 'votre_mot_de_passe_securise';"

🔐 Warning : Remplacez votre_mot_de_passe_securise par un mot de passe fort (min. 16 caractères, alphanumérique + symboles). Stockez-le dans un gestionnaire de mots de passe.

Activation des Extensions PostgreSQL

bash
# Extension géospatiale sudo -u postgres psql -d dhis2 -c "CREATE EXTENSION postgis;" # Extensions d'indexation pour les performances sudo -u postgres psql -d dhis2 CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS btree_gin;

Vérification :

bash
sudo -u postgres psql -d dhis2 -c "\dx"

💡 Note : pg_trgm améliore considérablement les performances des recherches de type "LIKE '%texte%'", essentielles dans les formulaires DHIS2.

Étape 5️⃣ : Installation et Configuration de Tomcat 9

Téléchargement et Installation

bash
# Créer le répertoire d'installation sudo mkdir /opt/tomcat # Télécharger Tomcat 9.0.80 (version stable) sudo wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz # Extraire l'archive sudo tar xzvf apache-tomcat-9.0.80.tar.gz -C /opt/tomcat --strip-components=1 # Installer les dépendances graphiques (nécessaires pour certains modules DHIS2) sudo apt-get install -y libfontconfig1

Configuration du Mode Headless

Tomcat doit fonctionner en mode "headless" (sans interface graphique) :

bash
sudo nano /opt/tomcat/bin/setenv.sh

Ajoutez cette ligne :

bash
export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"

Sauvegardez : Ctrl+O, Entrée, Ctrl+X

Étape 6️⃣ : Configuration des Variables d'Environnement

Définir les Variables Système

Éditez le fichier de profil de votre utilisateur (ou créez /etc/profile.d/dhis2.sh pour un scope global) :

bash
sudo nano ~/.bashrc

Ajoutez à la fin du fichier :

bash
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export JAVA_OPTS="-Duser.timezone=UTC -Xms2048m -Xmx4096m" export DHIS2_HOME=/home/dhis/config

Rechargez la configuration :

bash
source ~/.bashrc

Explication des Paramètres JVM

ParamètreValeurSignification
-Duser.timezone=UTCUTCTimezone universelle (évite les décalages horaires)
-Xms2048m2 GBMémoire JVM initiale (heap minimum)
-Xmx4096m4 GBMémoire JVM maximale (heap maximum)

⚙️ Note de l'expert : Pour un serveur avec 16 GB RAM, configurez -Xms4096m -Xmx8192m. Laissez ~4-6 GB pour PostgreSQL et l'OS.


Étape 7️⃣ : Configuration DHIS2

Créer le Répertoire de Configuration

bash
sudo mkdir -p /home/dhis/config sudo nano /home/dhis/config/dhis.conf

Ajoutez la configuration suivante :

properties
# Configuration de la connexion à PostgreSQL connection.dialect = org.hibernate.dialect.PostgreSQLDialect connection.driver_class = org.postgresql.Driver connection.url = jdbc:postgresql:dhis2 connection.username = dhis connection.password = votre_mot_de_passe_securise # Configuration de l'encryption (optionnel mais recommandé) # encryption.password = VotreClefEncryption32Caracteres! # Configuration du serveur server.base.url = http://votre-ip-ou-domaine:8080 server.https = off

🔐 Warning : Remplacez votre_mot_de_passe_securise par le mot de passe défini à l'étape 4. En production, activez HTTPS (server.https = on).

Ajuster les Permissions

bash
sudo chown -R $USER:$USER /home/dhis/config sudo chmod 600 /home/dhis/config/dhis.conf # Lecture/écriture pour le propriétaire uniquement

Étape 8️⃣ : Déploiement de l'Application DHIS2

Supprimer les Applications Tomcat par Défaut

bash
rm -rf /opt/tomcat/webapps/*

💡 Note de l'expert : Les applications exemples de Tomcat (manager, host-manager) représentent un risque de sécurité. Supprimez-les systématiquement.

Télécharger DHIS2 (Version Stable 2.40)

bash
sudo wget https://releases.dhis2.org/2.40/dhis2-stable-latest.war -O /opt/tomcat/webapps/ROOT.war

Pourquoi ROOT.war ?
Cela déploie DHIS2 à la racine (http://votre-ip:8080/) plutôt que sur un sous-chemin (/dhis2).


Étape 9️⃣ : Démarrage de Tomcat

bash
/opt/tomcat/bin/startup.sh

Sortie attendue :

Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
...
Tomcat started.

Surveiller les Logs en Temps Réel

bash
sudo tail -f /opt/tomcat/logs/catalina.out

Recherchez ces lignes clés :

INFO: Starting ProtocolHandler ["http-nio-8080"]
INFO: Server startup in [xxxxx] milliseconds
* INFO  DHIS2 instance '2.40.x' initialized successfully

⏱️ Note : Le premier démarrage prend 2-5 minutes (création des tables, indexation). Soyez patient !

✅ Vérification de l'Installation

Test 1 : Accès Web

Ouvrez votre navigateur et accédez à :

http://localhost:8080

Ou depuis une machine distante :

http://VOTRE_IP_PUBLIQUE:8080

Page attendue :
Écran de connexion DHIS2 avec le logo et les champs Username / Password. Écran de connexion DHIS2

Identifiants par défaut :

  • Username : admin
  • Password : district Dashboard DHIS2

🔐 Warning : Changez immédiatement le mot de passe admin après la première connexion (Menu > Utilisateurs > Modifier l'utilisateur admin).

Test 2 : Vérification des Logs

Aucune Erreur Critique

bash
sudo tail -f /opt/tomcat/logs/catalina.out

Sortie normale : Aucune ligne ou erreurs mineures non bloquantes.

Connexion PostgreSQL Réussie

bash
grep -i "connection.*established" /opt/tomcat/logs/catalina.out

Test 3 : Vérification PostgreSQL

bash
sudo -u postgres psql -d dhis2 -c "SELECT COUNT(*) FROM datavalue;"

Après connexion initiale : La table datavalue doit exister (même vide).


Erreurs Courantes et Solutions

SymptômeCause ProbableSolution
Erreur 404 après démarrageDHIS2 non déployéVérifiez que /opt/tomcat/webapps/ROOT.war existe
OutOfMemoryErrorHeap JVM insuffisantAugmentez -Xmx dans JAVA_OPTS
Connection refused (PostgreSQL)Service arrêtésudo systemctl start postgresql
Extension PostGIS introuvablePostGIS non installésudo apt install postgis
Java version incompatibleJava 17+ installéUtilisez Java 11 (voir Étape 2)

Félicitations ! Vous avez déployé une instance DHIS2 fonctionnelle sur Ubuntu 22.04.5 LTS.

Prochaines Étapes

  1. Configuration Métier :

    • Créer votre hiérarchie organisationnelle (pays > régions > districts)
    • Définir les Data Elements et Indicators
    • Concevoir vos formulaires de collecte
  2. Sécurisation Avancée :

    • Implémenter HTTPS avec Nginx
    • Configurer des backups incrémentaux
    • Mettre en place une stratégie de monitoring (Prometheus + Grafana)
  3. Intégration Data Pipeline :

    • Connecter DHIS2 à votre Data Warehouse
    • Automatiser l'extraction via l'API REST
    • Construire des dashboards Power BI / Tableau