GiGaRuN Solutions
Vos métiers, nos solutions Excellence IT - La Réunion
+262 692 31 11 91
← Retour à l'accueil des guides

Déployer Dolibarr 23 en Production

Installation from scratch sur Debian 12 — Guide pas à pas pour débutants

Version 23.0.1 · Debian 12 · Apache · MariaDB · PHP 8.2

Avant de commencer

Ce guide vous accompagne de A à Z pour installer Dolibarr 23 (ERP/CRM open source) sur un serveur Linux vierge. Aucune connaissance préalable en administration serveur n'est nécessaire — chaque commande est expliquée.

🖥Debian 12
🐘PHP 8.2+
💾MariaDB 10.11
~30 minutes
🔒HTTPS inclus

Ce dont vous avez besoin

ÉlémentDétail
Un VPS ou serveur dédiéDebian 12 fraîchement installé (OVH, Hetzner, Scaleway…) — 1 Go RAM minimum
Un nom de domaineEx : erp.monentreprise.fr avec un enregistrement DNS A pointant vers l'IP du serveur
Un accès SSH rootTerminal + connexion ssh root@IP_DU_SERVEUR
Un mot de passe fortPour la base de données — préparez-le à l'avance

① Se connecter au serveur

Ouvrez un terminal sur votre poste (Terminal sur Mac/Linux, PowerShell ou PuTTY sur Windows) et connectez-vous :

# Remplacez par l'IP réelle de votre serveur
ssh root@123.45.67.89

Tapez yes pour accepter la clé SSH la première fois, puis entrez votre mot de passe root.

💡
Vous voyez root@monserveur:~# ? — Vous êtes connecté. Toutes les commandes suivantes se tapent dans ce terminal.

② Installer les paquets nécessaires

On installe Apache (serveur web), MariaDB (base de données), PHP et ses extensions requises par Dolibarr. Copiez-collez ce bloc en entier :

# Mise à jour du système
apt update && apt upgrade -y

# Installation de tous les composants
apt install -y apache2 mariadb-server \
  php8.2 php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring \
  php8.2-xml php8.2-intl php8.2-zip php8.2-imap php8.2-calendar \
  php8.2-ldap unzip wget certbot python3-certbot-apache

# Activer mod_rewrite (réécriture d'URL)
a2enmod rewrite
systemctl restart apache2
Sur Ubuntu 24.04 — remplacez php8.2 par php8.3 partout. Sur Debian 11, utilisez php7.4.

Vérifiez que tout est installé :

php -v             # Doit afficher PHP 8.2.x
apache2 -v         # Doit afficher Apache/2.4.x
mariadb --version   # Doit afficher 10.11.x

③ Créer la base de données

D'abord, sécurisez MariaDB :

mysql_secure_installation

# Répondez aux questions :
# → Mot de passe root actuel : [Entrée] (vide par défaut)
# → Switch to unix_socket auth : n
# → Nouveau mot de passe root : [votre choix]
# → Remove anonymous users : Y
# → Disallow root login remotely : Y
# → Remove test database : Y
# → Reload privileges : Y

Puis créez la base de données et l'utilisateur dédié :

# Se connecter à MariaDB
mysql -u root -p

Dans le prompt MariaDB (MariaDB [(none)]>), tapez :

CREATE DATABASE dolibarr
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

CREATE USER 'dolibarr'@'localhost'
  IDENTIFIED BY 'VotreMotDePasseFort!';

GRANT ALL PRIVILEGES ON dolibarr.*
  TO 'dolibarr'@'localhost';

FLUSH PRIVILEGES;
EXIT;
🔒
Mot de passe — Remplacez VotreMotDePasseFort! par un vrai mot de passe sécurisé. Notez-le, vous en aurez besoin à l'étape 7.

④ Télécharger et installer Dolibarr 23

Téléchargement de l'archive officielle depuis SourceForge :

# Téléchargement
cd /tmp
wget https://sourceforge.net/projects/dolibarr/files/Dolibarr%20ERP-CRM/23.0.1/dolibarr-23.0.1.tgz

# Extraction
tar xzf dolibarr-23.0.1.tgz

# Déplacer les fichiers web dans Apache
mv dolibarr-23.0.1/htdocs /var/www/dolibarr

# Créer le dossier documents EN DEHORS du web (sécurité !)
mkdir -p /var/lib/dolibarr/documents
🚨
Étape critique — Piège de Dolibarr 23 !
Dolibarr 23 contient un fichier install.forced.php qui verrouille tous les champs du setup (noedit=2) et force HTTPS (mainforcehttps=true). Si vous ne le supprimez pas, l'installation sera bloquée.
# OBLIGATOIRE : supprimer le fichier qui bloque l'installation
rm -f /var/www/dolibarr/install/install.forced.php
Pourquoi ? — Ce fichier est destiné aux installateurs automatisés (Docker, DoliWamp), pas à une installation manuelle. Il pré-verrouille des valeurs que vous devez pouvoir modifier.

Mettre les bons droits pour qu'Apache puisse lire les fichiers :

# Permissions
chown -R www-data:www-data /var/www/dolibarr
chown -R www-data:www-data /var/lib/dolibarr
chmod 644 /var/www/dolibarr/conf/conf.php

⑤ Configurer Apache

Créez un fichier de configuration pour que votre domaine pointe vers Dolibarr :

nano /etc/apache2/sites-available/dolibarr.conf

Collez ce contenu (remplacez erp.mondomaine.fr par votre domaine) :

<VirtualHost *:80>
    ServerName  erp.mondomaine.fr
    DocumentRoot /var/www/dolibarr

    <Directory /var/www/dolibarr>
        AllowOverride All
        Require all granted
    </Directory>

    # Bloquer l'accès direct au dossier conf
    <LocationMatch "^/conf/">
        Require all denied
    </LocationMatch>

    ErrorLog  ${APACHE_LOG_DIR}/dolibarr_error.log
    CustomLog ${APACHE_LOG_DIR}/dolibarr_access.log combined
</VirtualHost>
nano — Pour sauvegarder : Ctrl+O puis Entrée. Pour quitter : Ctrl+X.
# Activer le nouveau site
a2ensite dolibarr.conf

# Désactiver le site par défaut (optionnel)
a2dissite 000-default.conf

# Vérifier la config (doit afficher "Syntax OK")
apache2ctl configtest

# Appliquer
systemctl reload apache2

⑥ Activer HTTPS (certificat gratuit)

Let's Encrypt fournit un certificat SSL gratuit et renouvelé automatiquement. Votre domaine doit déjà pointer vers le serveur (enregistrement DNS A).

# Obtenir et installer le certificat automatiquement
certbot --apache -d erp.mondomaine.fr

# Répondez aux questions :
# → Email : votre@email.fr
# → Accepter les conditions : Y
# → Rediriger HTTP vers HTTPS : 2 (oui, recommandé)

Vérifiez le renouvellement automatique :

certbot renew --dry-run   # Doit afficher "Congratulations"
Si certbot échoue — Vérifiez que votre DNS pointe vers le serveur : dig erp.mondomaine.fr doit retourner l'IP de votre VPS. La propagation DNS peut prendre jusqu'à 24h.

⑦ Lancer l'installation web

C'est l'étape la plus simple ! Ouvrez votre navigateur et allez sur :

https://erp.mondomaine.fr/install/

L'assistant Dolibarr se lance. Suivez les écrans :

① Vérification des prérequis

Tout doit être au vert. Si un module PHP est en rouge, installez-le avec apt install php8.2-[nom] puis rechargez Apache.

② Paramètres de la base de données

ChampValeur à saisir
Serveurlocalhost
Port3306
Nom de la basedolibarr
Login basedolibarr
Mot de passe baseCelui de l'étape 3
Typemysqli
Préfixe tablesllx_
Dossier documents/var/lib/dolibarr/documents

③ Création du compte administrateur

Choisissez un login et un mot de passe fort. Ce n'est pas le même que le mot de passe de la base de données.

④ Fin

Dolibarr confirme que l'installation est terminée. Cliquez sur le lien pour accéder à votre ERP.

Dolibarr est installé ! — Mais il reste des étapes de sécurisation obligatoires. Continuez ci-dessous.

⑧ Verrouiller l'installation

🚨
Obligatoire ! — Sans cette étape, n'importe qui peut relancer l'installateur et écraser votre base de données.
# 1. Créer le fichier de verrouillage
touch /var/lib/dolibarr/documents/install.lock
chmod 444 /var/lib/dolibarr/documents/install.lock

# 2. Rendre conf.php en lecture seule
chmod 444 /var/www/dolibarr/conf/conf.php

# 3. Bloquer l'accès au dossier install
echo "Require all denied" > /var/www/dolibarr/install/.htaccess

Vérifiez en allant sur https://erp.mondomaine.fr/install/ — vous devez voir une erreur 403 Forbidden.

⑨ Sécuriser le serveur

🛡 Pare-feu (UFW)

# N'autoriser que SSH, HTTP et HTTPS
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

# Vérifier
ufw status   # Doit lister les 3 ports

🚫 Fail2ban (anti brute-force)

apt install -y fail2ban
systemctl enable fail2ban
systemctl start fail2ban

🔐 Headers de sécurité Apache

# Activer le module headers
a2enmod headers

# Éditer le VirtualHost SSL
nano /etc/apache2/sites-available/dolibarr-le-ssl.conf

# Ajouter AVANT la balise </VirtualHost> :
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Strict-Transport-Security "max-age=31536000"
Header always set X-XSS-Protection "1; mode=block"

# Puis recharger Apache
systemctl reload apache2

⑩ Sauvegardes automatiques

Un script cron sauvegarde la base de données et les documents chaque nuit :

nano /etc/cron.daily/backup-dolibarr

Collez ce contenu :

#!/bin/bash
# Sauvegarde quotidienne Dolibarr

DATE=$(date +%Y%m%d)
BACKUP_DIR="/var/backups/dolibarr"

# Créer le dossier si nécessaire
mkdir -p ${BACKUP_DIR}

# Sauvegarde base de données
mysqldump -u dolibarr -p'VotreMotDePasse' dolibarr \
  | gzip > ${BACKUP_DIR}/db-${DATE}.sql.gz

# Sauvegarde fichiers documents
tar czf ${BACKUP_DIR}/docs-${DATE}.tar.gz \
  /var/lib/dolibarr/documents

# Supprimer les backups de plus de 30 jours
find ${BACKUP_DIR} -mtime +30 -delete
# Rendre le script exécutable
chmod +x /etc/cron.daily/backup-dolibarr

# Tester immédiatement
bash /etc/cron.daily/backup-dolibarr
ls -lh /var/backups/dolibarr/
Sauvegarde distante — Ces backups sont sur le même serveur. Pour une vraie sécurité, copiez-les vers un stockage externe (S3, Wasabi, autre VPS) avec rsync ou rclone.

⭐ Checklist finale

Cliquez sur chaque point une fois vérifié :

  • Le site est accessible en HTTPS avec un cadenas vert
  • La connexion admin fonctionne
  • /install/ retourne une erreur 403
  • conf.php est en lecture seule (444)
  • Le fichier install.lock existe
  • Le pare-feu est actif — seuls les ports 22, 80, 443 sont ouverts
  • Fail2ban est actif
  • Le backup cron est en place et a été testé
  • Le certificat SSL se renouvelle automatiquement

Commandes de vérification rapide :

ufw status                      # Ports ouverts
fail2ban-client status          # Fail2ban actif
ls -la /var/lib/dolibarr/documents/install.lock  # Lock existe
stat -c "%a" /var/www/dolibarr/conf/conf.php      # Doit afficher 444
certbot renew --dry-run         # Renouvellement OK
run-parts --test /etc/cron.daily # Backup planifié
🎉
Tout est coché ? — Votre Dolibarr 23 est en production, sécurisé et sauvegardé. Vous pouvez commencer à l'utiliser !

⚡ Script automatisé tout-en-un

Ce script réalise les étapes 2 à 6 et la sécurisation automatiquement. Idéal pour les déploiements suivants ou la création d'un serveur reproductible.

Utilisation

# Télécharger le script (ou le créer avec nano)
nano deploy-dolibarr.sh

# Lancer le déploiement
sudo bash deploy-dolibarr.sh erp.mondomaine.fr 'MotDePasseBDD'

Contenu du script

#!/bin/bash
# ═══════════════════════════════════════════════════
#  Déploiement Dolibarr 23.0.1 sur Debian 12
#  Usage : sudo bash deploy-dolibarr.sh DOMAINE MOT_DE_PASSE_BDD
# ═══════════════════════════════════════════════════
set -euo pipefail

DOMAIN="${1:?Usage: $0 <domaine> <mot_de_passe_bdd>}"
DB_PASS="${2:?Usage: $0 <domaine> <mot_de_passe_bdd>}"
DOL_VERSION="23.0.1"
DB_NAME="dolibarr"
DB_USER="dolibarr"
DOC_DIR="/var/lib/dolibarr/documents"
WEB_DIR="/var/www/dolibarr"

echo "== Déploiement Dolibarr ${DOL_VERSION} sur ${DOMAIN} =="

# 1. Paquets
apt update && apt install -y apache2 mariadb-server \
  php8.2 php8.2-{mysql,curl,gd,mbstring,xml,intl,zip,imap,calendar,ldap} \
  unzip wget certbot python3-certbot-apache

# 2. Base de données
mysql -u root <<SQL
CREATE DATABASE IF NOT EXISTS ${DB_NAME}
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS '${DB_USER}'@'localhost'
  IDENTIFIED BY '${DB_PASS}';
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
FLUSH PRIVILEGES;
SQL

# 3. Téléchargement
cd /tmp
[ -f "dolibarr-${DOL_VERSION}.tgz" ] || \
  wget "https://sourceforge.net/projects/dolibarr/files/\
Dolibarr%20ERP-CRM/${DOL_VERSION}/dolibarr-${DOL_VERSION}.tgz"
tar xzf "dolibarr-${DOL_VERSION}.tgz"
rm -rf "${WEB_DIR}"
mv "dolibarr-${DOL_VERSION}/htdocs" "${WEB_DIR}"
mkdir -p "${DOC_DIR}"

# 4. Supprimer le verrou d'installation (piège Dolibarr 23)
rm -f "${WEB_DIR}/install/install.forced.php"

# 5. Permissions
chown -R www-data:www-data "${WEB_DIR}" "${DOC_DIR}"
chmod 644 "${WEB_DIR}/conf/conf.php"

# 6. Apache VirtualHost
cat > /etc/apache2/sites-available/dolibarr.conf <<APACHE
<VirtualHost *:80>
    ServerName ${DOMAIN}
    DocumentRoot ${WEB_DIR}
    <Directory ${WEB_DIR}>
        AllowOverride All
        Require all granted
    </Directory>
    <LocationMatch "^/conf/">
        Require all denied
    </LocationMatch>
</VirtualHost>
APACHE
a2enmod rewrite
a2ensite dolibarr.conf
a2dissite 000-default.conf 2>/dev/null || true
systemctl reload apache2

# 7. HTTPS
certbot --apache -d "${DOMAIN}" \
  --non-interactive --agree-tos -m "contact@gigarun.re"

# 8. Firewall
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
echo "y" | ufw enable

# 9. Fail2ban
apt install -y fail2ban
systemctl enable fail2ban

echo ""
echo "========================================"
echo "  TERMINÉ ! Ouvrez https://${DOMAIN}/install/"
echo "  Serveur BDD : localhost"
echo "  Nom BDD     : ${DB_NAME}"
echo "  User BDD    : ${DB_USER}"
echo "  Pass BDD    : ${DB_PASS}"
echo "  Documents   : ${DOC_DIR}"
echo "========================================"
echo "  Après le wizard, exécutez :"
echo "  touch ${DOC_DIR}/install.lock"
echo "  chmod 444 ${DOC_DIR}/install.lock ${WEB_DIR}/conf/conf.php"
echo "========================================"
💡
Après le script — Il reste à faire manuellement : l'installation web (étape 7), le verrouillage (étape 8) et la configuration du backup (étape 10). Le script ne peut pas deviner vos réponses au wizard Dolibarr.