Installer Dolibarr avec Nginx
Installer Dolibarr 24 avec Nginx, PHP-FPM et MariaDB sur Ubuntu ou Debian, configuration testée. Et ce que l'exemple fourni avec Dolibarr ne fait pas : API REST en 404, envois bloqués à 1 Mo, dossiers protégés seulement sous Apache.
Besoin qu’on regarde votre instance ? Diagnostic, prix fixe 90 €.
Ce qui a été vérifié (versions, tests, code lu)
Installations neuves le 02/11/2026 dans des conteneurs Docker : Debian 13 (Nginx 1.26.3, PHP 8.4.27, MariaDB 11.8.6) avec les commandes de cette page exécutées telles quelles (sudo conservé, service au lieu de systemctl), assistant suivi jusqu'à la connexion, module API activé et appelé avec une clé, facture validée et PDF généré, envoi de 5 Mo avant et après la limite de Dolibarr, journal Nginx relu après la visite des écrans ; Ubuntu 24.04 (Nginx 1.24.0, PHP 8.3.6, MariaDB 10.11.14) pour les étapes 1 à 3 et les contrôles. Exemple officiel de l'archive 24.0.2 testé sur Debian 13.
Dolibarr est documenté surtout pour Apache. Avec Nginx, il fonctionne tout aussi bien, à condition de reprendre trois choses qu’Apache faisait sans qu’on le voie. Cette page installe Dolibarr 24 avec Nginx, PHP-FPM et MariaDB sur Debian 13 ou Ubuntu 24.04, avec une configuration que nous avons testée.
Dolibarr fournit un exemple de configuration Nginx (dev/setup/nginx/dolibarr dans l’archive).
Nous l’avons essayé sur une installation neuve : il pose trois problèmes.
- Nginx refuse de démarrer. La ligne
fastcgi_passse termine par un commentaire//, qui n’existe pas dans la syntaxe de Nginx :nginx -trépondunexpected "}". Le chemin indiqué est aussi celui de PHP 5. - L’API REST répond 404. Une fois le
//retiré,/api/index.php/statusrenvoie la page « 404 Not Found » de Nginx : la requête n’arrive jamais à Dolibarr. - Le dossier
confest lisible depuis le web. Dolibarr le protège par un fichier.htaccess, que Nginx ignore. Dans notre test, une copie de sauvegardeconf.php.baks’affiche en clair dans le navigateur, mot de passe de la base compris. Les scripts PHP des bibliothèques du dossierincludes, que Dolibarr interdit d’appeler directement, s’exécutent aussi.
S’y ajoute une limite propre à Nginx : il refuse les envois de plus de 1 Mo, avant même que PHP ou Dolibarr ne les voient. Dans notre test, un fichier de 5 Mo reçoit « 413 Request Entity Too Large ».
La configuration ci-dessous corrige ces quatre points.
1. Installer Nginx, PHP-FPM et MariaDB
sudo apt update
sudo apt install -y nginx mariadb-server php-fpm php-mysql php-gd php-curl php-intl php-zip php-xml php-mbstring curl cron
C’est la même liste d’extensions que pour Apache, avec php-fpm à la place du module d’Apache.
2. Télécharger Dolibarr et créer la base
Ces deux étapes sont identiques à l’installation avec Apache : sur Debian et Ubuntu, PHP-FPM
tourne lui aussi sous l’utilisateur www-data.
cd /tmp
curl -fL -o dolibarr-24.0.2.tgz "https://sourceforge.net/projects/dolibarr/files/Dolibarr%20ERP-CRM/24.0.2/dolibarr-24.0.2.tgz/download"
sudo tar --no-same-owner -xzf /tmp/dolibarr-24.0.2.tgz -C /var/www
sudo mv /var/www/dolibarr-24.0.2 /var/www/dolibarr
sudo mkdir -p /var/lib/dolibarr/documents
sudo touch /var/www/dolibarr/htdocs/conf/conf.php
sudo chown www-data:www-data /var/www/dolibarr/htdocs/conf/conf.php
sudo chown -R www-data:www-data /var/lib/dolibarr/documents /var/www/dolibarr/htdocs/custom
DBPASS=$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 24); echo "Mot de passe de la base : $DBPASS"
sudo mariadb -e "CREATE DATABASE dolibarr CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'dolibarr'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL PRIVILEGES ON dolibarr.* TO 'dolibarr'@'localhost';"
Notez le mot de passe affiché : l’assistant vous le demandera.
3. La configuration Nginx
PHPV=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
sudo tee /etc/nginx/sites-available/dolibarr > /dev/null <<CONF
server {
listen 80;
listen [::]:80;
server_name dolibarr.example.com;
root /var/www/dolibarr/htdocs;
index index.php;
# Nginx refuse par défaut tout envoi de plus de 1 Mo
client_max_body_size 20M;
access_log /var/log/nginx/dolibarr_access.log;
error_log /var/log/nginx/dolibarr_error.log;
location / {
try_files \$uri \$uri/ =404;
}
# Ce que les .htaccess de Dolibarr font sous Apache
location ^~ /conf/ {
deny all;
}
location ~ ^/includes/.+\.php$ {
deny all;
}
location ~ /\.(?!well-known) {
deny all;
}
location ~ [^/]\.php(/|$) {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php$PHPV-fpm.sock;
fastcgi_read_timeout 600;
}
}
CONF
sudo ln -s /etc/nginx/sites-available/dolibarr /etc/nginx/sites-enabled/dolibarr
sudo rm /etc/nginx/sites-enabled/default
sudo tee /etc/php/$PHPV/fpm/conf.d/99-dolibarr.ini /etc/php/$PHPV/cli/conf.d/99-dolibarr.ini > /dev/null <<'INI'
upload_max_filesize = 20M
post_max_size = 22M
date.timezone = Europe/Paris
INI
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl restart php$PHPV-fpm
Remplacez dolibarr.example.com par le nom de votre serveur.
Ce qui change par rapport à l’exemple officiel :
snippets/fastcgi-php.conf, fourni par le paquet Nginx de Debian et d’Ubuntu, sépare le nom du script de la suite de l’adresse et la transmet à PHP (PATH_INFO). C’est ce dont l’API REST a besoin. L’exemple officiel vérifie que l’adresse complète est un fichier (try_files $uri =404), ce qui renvoie 404 pour/api/index.php/thirdparties.client_max_body_size 20Maligne Nginx sur les 20 Mo acceptés par PHP.- Les trois blocs
denyremplacent les.htaccess: le dossierconfn’est plus du tout accessible depuis le web, les scripts PHP des bibliothèques deincludesne peuvent plus être appelés directement, et les fichiers cachés (.git,.htaccess…) ne sont pas servis. $PHPVchoisit le bon socket : PHP 8.4 sur Debian 13, PHP 8.3 sur Ubuntu 24.04.
sudo nginx -t doit répondre « syntax is ok » et « test is successful » avant le rechargement.
4. L’assistant, install.lock et la limite de 2 Mo
La suite est la même qu’avec Apache, détaillée dans Installer Dolibarr sur Ubuntu ou Debian :
- ouvrez
http://votre-serveur/install/, et sur la page de configuration remplacez le dossier des documents par/var/lib/dolibarr/documents; - fermez l’installation :
sudo touch /var/lib/dolibarr/documents/install.lock
sudo chmod 400 /var/www/dolibarr/htdocs/conf/conf.php
sudo find /var/www/dolibarr/htdocs -path /var/www/dolibarr/htdocs/custom -prune -o -exec chmod a-w {} +
- relevez la limite propre à Dolibarr (2 048 Ko) dans Accueil › Configuration › Sécurité ›
Fichiers, à
20480.
Les trois limites doivent aller ensemble : Nginx (client_max_body_size), PHP
(upload_max_filesize) et Dolibarr. Si l’une reste plus basse, c’est elle qui refuse le fichier.
5. Vérifier que tout est en place
Sur le serveur :
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/conf/conf.php
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/includes/sabre/autoload.php
curl -s http://localhost/api/index.php/status
Les deux premières lignes doivent répondre 403 : le dossier conf et les scripts de includes
sont fermés.
La troisième montre que l’API arrive bien jusqu’à Dolibarr. Le module API est désactivé après
l’installation : la réponse est alors « Le module Api doit être activé pour utiliser cette
fonction ». Une fois le module activé (Accueil › Configuration › Modules / Applications), la
même adresse répond 401 sans clé, et donne la version de Dolibarr avec une clé. Si vous obtenez
la page « 404 Not Found » de Nginx, la suite de l’adresse (PATH_INFO) n’arrive pas à PHP : vérifiez
la ligne include snippets/fastcgi-php.conf.
Les blocs deny ne gênent pas l’interface : aucun écran de Dolibarr n’appelle un script PHP de
includes (nous l’avons vérifié dans le code de la 24.0.2), et la visite des écrans tiers,
produits, factures, agenda, TakePOS et configuration n’a produit aucune erreur 403 dans le journal
de Nginx.
Avant d’ouvrir l’accès depuis Internet
Cette configuration répond en HTTP. Avant de l’ouvrir sur Internet, ajoutez un certificat
(Certbot sait modifier une configuration Nginx), puis mettez l’adresse en https:// dans la ligne
$dolibarr_main_url_root de conf.php. Cette étape demande un vrai nom de domaine : nous ne
l’avons pas testée ici.
Ensuite
- Utiliser l’API REST de Dolibarr
- Sécuriser une instance Dolibarr hébergée
- Sauvegarder et restaurer Dolibarr
Si vous préférez qu’on s’en occupe, le forfait Installation et paramétrage part de cette configuration.