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 -yCertains 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.

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.

À 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.

À 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.

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.

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.

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.

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.

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.

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.

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.

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

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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.