Installation OpenEMR · 14 min read · Sep 24, 2025

Comment installer OpenEMR sur Ubuntu 22.04

OpenEMR est un outil de gestion des dossiers de santé électroniques et de gestion des pratiques médicales open-source. Il est certifié par le Bureau du Coordinateur national pour la technologie de l’information en santé (ONC) et il propose des dossiers de santé intégrés, la gestion des pratiques, la planification, la facturation électronique, l’internationalisation, un support gratuit, et bien plus encore. Il peut suivre les données démographiques des patients, planifier des rendez-vous, maintenir des dossiers de santé extrêmement détaillés avec des rapports de laboratoire, des médicaments et des procédures, suivre leurs prescriptions, aider à la facturation médicale, générer des rapports détaillés, et offrir un support multilingue.

Dans ce tutoriel, vous apprendrez à installer le logiciel OpenEMR sur un serveur exécutant Ubuntu 22.04.

Prérequis

  • Un serveur exécutant Ubuntu 20.04.
  • Un utilisateur sudo non-root.
  • Un nom de domaine entièrement qualifié (FQDN) comme openemr.example.com.
  • Assurez-vous que tout est à jour. $ sudo apt update $ sudo apt upgrade
  • Quelques paquets dont votre système a besoin. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Certains de ces paquets peuvent déjà être installés sur votre système.

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Ubuntu est livré avec ufw (Uncomplicated Firewall) par défaut.

Vérifiez si le pare-feu est en cours d’exécution.

$ sudo ufw status

Vous obtiendrez la sortie suivante.

Status: inactive

Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.

$ sudo ufw allow OpenSSH

Autorisez également les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Activez le pare-feu

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vérifiez à nouveau l’état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie similaire.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Étape 2 - Installer Nginx

Ubuntu est livré avec une version plus ancienne de Nginx. Pour installer la dernière version, vous devez télécharger le dépôt officiel de Nginx.

Importez la clé de signature de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ajoutez le dépôt pour la version stable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Mettez à jour les dépôts du système.

$ sudo apt update

Installez Nginx.

$ sudo apt install nginx

Vérifiez l’installation.

$ nginx -v
nginx version: nginx/1.24.0

Démarrez le serveur Nginx.

$ sudo systemctl start nginx

Étape 3 - Installer MySQL

Ubuntu 22.04 est livré avec la dernière version de MySQL. Vous pouvez l’installer avec une seule commande.

$ sudo apt install mysql-server

Vérifiez la version de MySQL.

$ mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Cette étape est nécessaire pour les versions de MySQL 8.0.28 et supérieures. Entrez dans le shell MySQL.

$ sudo mysql

Exécutez la commande suivante pour définir le mot de passe de votre utilisateur root. Assurez-vous qu’il contient un mélange de chiffres, de majuscules, de minuscules et de caractères spéciaux.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Quittez le shell.

mysql> exit

Exécutez le script d’installation sécurisée de MySQL.

$ sudo mysql_secure_installation

Tout d’abord, vous serez invité à entrer votre mot de passe root. Entrez-le. Ensuite, vous serez invité à installer le composant de validation des mots de passe. Il vérifie la force des mots de passe utilisés dans MySQL. Appuyez sur Y pour l’installer. Ensuite, vous serez invité à définir le niveau de la politique de validation des mots de passe. Choisissez 2 car c’est le plus fort.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

Ensuite, entrez N pour refuser de changer votre mot de passe root. Entrez également Y pour supprimer les utilisateurs anonymes, interdire les connexions root à distance, supprimer la base de données de test et recharger les tables de privilèges.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Étape 4 - Configurer MySQL

Connectez-vous au shell MySQL. Entrez votre mot de passe root lorsque vous y êtes invité.

$ sudo mysql -u root -p

Créez une base de données d’exemple.

mysql> CREATE DATABASE openemr;

Créez un compte utilisateur SQL.

mysql> CREATE USER 'openemruser'@'localhost' IDENTIFIED BY 'Your_password2';

Accordez tous les privilèges sur la base de données à l’utilisateur.

mysql> GRANT ALL PRIVILEGES ON openemr.* TO 'openemruser'@'localhost';

Rafraîchissez les privilèges des utilisateurs.

mysql> FLUSH PRIVILEGES;

Quittez le shell.

mysql> exit

Étape 5 - Installer PHP et ses extensions

Ubuntu 22.04 est livré avec la version PHP 8.1.2 qui est un peu obsolète. Nous allons installer la dernière version PHP 8.2 en utilisant le dépôt PHP d’Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Ensuite, installez PHP et ses extensions requises par OpenEMR.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap imagemagick libtiff-tools php8.2-ldap

Vérifiez l’installation.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Étape 6 - Installer SSL

Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot en utilisant le dépôt d’Ubuntu, soit obtenir la dernière version en utilisant l’outil Snapd. Nous allons utiliser la version Snapd.

Ubuntu 22.04 est livré avec Snapd installé par défaut. Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.

$ sudo snap install core && sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Exécutez la commande suivante pour générer un certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d openemr.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/openemr.example.com sur votre serveur.

Générez un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Vérifiez le service de planification de renouvellement de Certbot.

$ sudo systemctl list-timers

Vous trouverez snap.certbot.renew.service comme l’un des services programmés pour s’exécuter.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-02-26 06:32:00 UTC 9h left       Sat 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-02-26 06:43:20 UTC 9h left       Sat 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-02-26 09:00:06 UTC 11h left      Sat 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Effectuez un essai à blanc du processus pour vérifier si le renouvellement SSL fonctionne correctement.

$ sudo certbot renew --dry-run

Si vous ne voyez aucune erreur, vous êtes prêt. Votre certificat se renouvellera automatiquement.

Étape 7 - Télécharger OpenEMR

Visitez la page de téléchargement d’OpenEMR et récupérez le lien pour la dernière version d’OpenEMR. Téléchargez OpenEMR sur le serveur.

$ wget https://sourceforge.net/projects/openemr/files/OpenEMR%20Current/7.0.1/openemr-7.0.1.tar.gz

Extrayez les fichiers.

$ tar -pxzf openemr-7.0.1.tar.gz

Créez le répertoire /var/www/html.

$ sudo mkdir /var/wwww/html -p

Déplacez les fichiers extraits vers le répertoire web.

$ sudo mv openemr-7.0.1 /var/www/html/openemr

Donnez des permissions à l’utilisateur Nginx sur le répertoire racine web.

$ sudo chown -R nginx:nginx /var/www/html/openemr

Étape 8 - Configurer PHP-FPM

Ouvrez le fichier /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Nous devons définir l’utilisateur/groupe Unix des processus PHP sur nginx. Trouvez les lignes user=www-data et group=www-data dans le fichier et changez-les en nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Trouvez les lignes listen.owner = www-data et listen.group = www-data dans le fichier et changez-les en nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Augmentez le temps d’exécution pour PHP-FPM et PHP-CLI à 60 secondes.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 60/' /etc/php/8.2/fpm/php.ini

Définissez la valeur de la variable max_input_time à 1.

$ sudo sed -i 's/max_input_time = 60/max_input_time = -1/' /etc/php/8.2/fpm/php.ini

Augmentez la limite de mémoire pour PHP-FPM de 128 Mo à 512 Mo.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

Augmentez la taille de téléchargement de fichiers à 30 Mo.

$ sudo sed -i 's/post_max_size = 8M/post_max_size = 30M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 30M/' /etc/php/8.2/fpm/php.ini

Augmentez le nombre maximum de variables d’entrée à 3000.

$ sudo sed -i 's/;max_input_vars = 1000/max_input_vars = 3000/g' /etc/php/8.2/fpm/php.ini

Autorisez l’accès, du point de vue de PHP, aux fichiers locaux avec des instructions LOAD DATA.

$ sudo sed -i 's/;mysqli.allow_local_infile = On/mysqli.allow_local_infile = On/g' /etc/php/8.2/fpm/php.ini

Redémarrez le service PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Changez le groupe du répertoire des sessions PHP en Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Étape 9 - Configurer Nginx

Créez et ouvrez le fichier /etc/nginx/conf.d/openemr.conf pour l’édition.

$ sudo nano /etc/nginx/conf.d/openemr.conf

Collez le code suivant dedans.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  openemr.example.com;

    access_log  /var/log/nginx/openemr.access.log;
    error_log   /var/log/nginx/openemr.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/openemr.example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/openemr.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/openemr.example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/openemr;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # deny access to writable files/directories
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # deny access to certain directories
    location ~* ^/(contrib|tests) {
        deny all;
        return 404;
    }

    # Alternatively all access to these files can be denied
    location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
        deny all;
        return 404;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt  {
        log_not_found off;
        access_log off;
    }

    location ~ \. {
        deny all;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  openemr.example.com;
    return 301   https://$host$request_uri;
}

Remarquez que le répertoire racine à utiliser dans la configuration Nginx est /var/www/html/wallabag/public/.

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité une fois terminé.

Ouvrez le fichier /etc/nginx/nginx.conf pour l’édition.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Vérifiez la syntaxe du fichier de configuration Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le service Nginx.

$ sudo systemctl restart nginx

Étape 10 - Installer OpenEMR

Ouvrez l’URL https://openemr.example.com dans votre navigateur et vous verrez l’écran de configuration suivant.

Vérification de l'installation d'OpenEMR

Ici, il vérifie les permissions des fichiers et confirme si vous pouvez passer à l’étape 1 ou non. Si vous voyez le mot prêt en vert, cela signifie que vous pouvez continuer. Cliquez sur le bouton bleu pour passer à l’étape 1.

Assistant de configuration de la base de données OpenEMR

À la page suivante, on vous demandera si vous souhaitez que l’installateur crée la base de données ou utilise une base de données préexistante. Sélectionnez l’option J’ai déjà créé la base de données et cliquez sur le bouton pour passer à l’étape 2.

Détails de la base de données et du compte OpenEMR

À la page suivante, remplissez les informations d’identification de la base de données que vous avez configurées à l’étape 4 précédemment. Entrez également les informations d’identification de votre compte administrateur. Assurez-vous que votre nom d’utilisateur fait 12 caractères ou plus, sinon vous obtiendrez une erreur. Vous pouvez activer l’authentification à deux facteurs (2FA) ici, mais il est recommandé de la configurer plus tard après l’installation. Cliquez sur le bouton pour créer la base de données et le compte utilisateur.

Créer une base de données et un utilisateur OpenEMR

La page suivante affichera l’état de l’installation et vous montrera le nom d’utilisateur et le mot de passe. Cliquez sur le bouton pour passer à l’étape 4.

Configurer PHP OpenEMR

La page suivante listera les valeurs recommandées et actuelles de votre fichier php.ini. Assurez-vous que les valeurs actuelles satisfont les exigences. L’installateur affiche les mauvaises valeurs pour les variables max_input_time et max_execution_time pour une raison quelconque, même si vous les avez définies correctement. Vous pouvez les ignorer. Vous pouvez vérifier les valeurs actuelles en utilisant les commandes suivantes.

Une fois que vous êtes satisfait, cliquez sur le bouton pour passer à l’étape 5.

Paramètres Apache OpenEMR

L’étape suivante liste les paramètres du serveur Apache que nous allons ignorer puisque nous utilisons le serveur Nginx. Cliquez sur le bouton pour passer à la page suivante.

Sélectionner un thème OpenEMR

Ici, on vous demandera de sélectionner un thème pour le panneau d’administration. Sélectionnez l’option Conserver actuel et cliquez sur le bouton pour continuer. Vous pouvez changer le thème depuis le panneau d’administration plus tard, cependant, vous ne pourrez pas voir à quoi ils ressemblent. Si vous choisissez depuis la page de l’installateur, vous pouvez également vérifier à quoi ils ressemblent avant de sélectionner. Nous allons rester avec le thème par défaut.

Dernière étape d'installation OpenEMR

La dernière page liste quelques notes finales sur le logiciel et les informations d’identification du compte. Cliquez sur le bouton Démarrer pour ouvrir la page de connexion.

Page de connexion OpenEMR

Vous recevrez une popup d’enregistrement OpenEMR pour recevoir des annonces de leur site. Vous pouvez l’ignorer et entrer vos informations d’identification et cliquer sur le bouton Connexion pour accéder au tableau de bord.

Tableau de bord OpenEMR

Si vous n’avez pas configuré l’authentification à deux facteurs lors de l’installation, faites-le en cliquant sur l’icône de l’avatar en haut à droite et en sélectionnant l’option Gestion MFA.

Menu 2FA OpenEMR

À la page suivante, sélectionnez la méthode d’authentification dans le menu déroulant et commencez à configurer.

Page de type 2FA OpenEMR

Vous pouvez commencer à utiliser OpenEMR pour gérer votre entreprise de santé à partir de maintenant.

Conclusion

Cela conclut notre tutoriel sur l’installation d’OpenEMR sur un serveur Ubuntu 22.04. Si vous avez des questions, postez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.