Guide pratique pour un déploiement stable et optimisé
1. Introduction
Dolibarr est un ERP / CRM open‑source très populaire pour les petites et moyennes entreprises. Son installation sur un serveur web (Apache/Nginx, PHP, MySQL/MariaDB) est généralement simple, mais plusieurs pièges peuvent appearances lorsqu’on le place en production, surtout en matière d’hébergement.
Cet article passe en revue les erreurs les plus fréquentes rencontrées par les admins et proposes des solutions concrètes pour les éviter ou les corriger.
2. Configuration serveur de base
| Erreur fréquente | Description | Solution rapide |
|---|---|---|
| Version PHP trop ancienne | Dolibarr nécessite PHP ≥ 7.2 (ou 8.x selon la version). | Vérifier avec php -v. Si < 7.2, activer la mise à jour via le dépôt du serveur ou passer à un serveur plus récent (ex. Ubuntu 22.04, Debian 12). |
| Modules PHP manquants | Extension intl, gd, zip, pdo_mysql etc. absentes. |
Installer les paquets correspondants : sudo apt install php-intl php-gd php-zip php-mbstring php-mysql php-xml. |
open_basedir ou safe_mode bloquant l’accès aux dossiers |
Limites de sécurité qui interdisent à Dolibarr d’écrire dans /docs, /img, /import… |
Modifier le fichier de configuration PHP (php.ini) :open_basedir = /var/www/dolibarr:/tmp/ ou désactiver temporairement pour le vhost. |
| Permisssions de répertoire | Les dossiers www/files, product annexes, dolibarr sont en lecture‑seule → erreurs d’import/export. |
sudo chown -R www-data:www-data /chemin/vers/dolibarrsudo find /chemin/vers/dolibarr -type d -exec chmod 755 {} \;sudo find /chemin/vers/dolibarr -type f -exec chmod 644 {} \;sudo chmod 770 /chemin/vers/dolibarr/files /chemin/vers/dolibarr/bd (ou plus restrictif selon le serveur). |
| MySQL/MariaDB sansutf8mb4 | Caractères accentués et emojis non supportés → perte de données. | Créer la base avec CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ou modifier my.cnf :character-set-server = utf8mb4collation-server = utf8mb4_unicode_ci. |
3. Installation / Mise à jour
3.1. Utilisation du script d’installation officiel
- Erreur : Lancer le script sans droits d’écriture sur le répertoire de destination → “Permission denied”.
- Solution : Exécuter le script avec un utilisateur disposant des droits d’écriture (ex.
sudo -u www-data php install.php), ou créer le répertoire à la main et ajuster les permissions avant l’appel.
3.2. Mise à jour sans réinitialiser les données
- Erreur : Après mise à jour, les menus ne s’affichent plus ou les champs personnalisés disparaissent.
- Solution :
- Sauvegarder la base (
mysqldump) et le répertoirefiles. - Copier les nouveaux fichiers hors du répertoire
htdocs(ne pas écraserconf/inc_params.php). - Lancer
/install.phpuniquement si la version précédente était ancienne de plus de 2 majorations (ex. 9.0 → 11.0). - Vérifier les tables
ASMPL_qui peuvent nécessiter une réparation (php bin/dolibarr-maintenance.php).
- Sauvegarder la base (
3.3. Migration d’une version communautaire vers une version “cloud” (Dolibarr Online)
- Erreur : Incompatibilité des URLs de webservice REST avec les routes internes.
- Solution : Ajouter un fichier
.htaccessou confignginxpour réécrire les requêtes/api/vers le bon virtual host, ou désactiver la fonctionnalité REST dansconf/inc_crypted.php.
4. Hébergement partagé vs dédié vs cloud
| Type d’hébergement | Problèmes rencontrés | Astuces / Solutions |
|---|---|---|
| Hébergement partagé (OVH, 1&1, Infomaniak) | – PHP‑FPM non disponible → performance médiocre. – Limite de upload_max_filesize (2 Mo) insuffisante pour les annexes. |
• Passer à un plan « PHP‑FPM » ou à un VPS. • Modifier php.ini via le php.ini du répertoire ou via le panneau de contrôle (upload_max_filesize = 20M). |
| VPS / Serveur dédié | – Oublier de désactiver mod_security → faux positifs de blocage d’appels AJAX.– Firewall bloquant le port 3306 ou 8080. |
• Configurer mod_security : SecRuleEngine Off pour le répertoire /dolibarr/.• Ouvrir les ports nécessaires dans ufw (ufw allow 80,443/tcp; ufw allow 3306/tcp). |
| Docker / Docker‑Compose | – Montages de volumes incorrects → perte de persistance des annexes. – Mauvaises variables d’environnement ( DOLIBARR_...). |
• Utiliser docker-compose.yml officiel :volumes:- ./files:/var/www/dolibarr/files - ./dbdata:/var/lib/mysql • Ajouter les variables DOLIBARR_USEMYSQL=1 et DOLIBARR_MYSQL_HOST=db si vous utilisez une base séparée. |
| Hébergement cloud (PaaS) | – Restrictions de durée d’exécution des scripts (timeout 30 s). – Accès limité aux logs. |
• Passer à un plan visiteur ou configurer un cron externe (ex. GitHub Actions) pour les tâches périodiques. • Exporter les logs ( syslog) depuis le service de logs (ELK, Papertrail). |
5. Problèmes courants côté application
5.1. Messages d’erreur “Unable to connect to MySQL”
- Cause : L’utilisateur MySQL n’a pas les droits
SELECT,INSERT,UPDATE,DELETEsur la base ou le mot de passe est erroné. - Fix :
GRANT ALL PRIVILEGES ON dolibarr.* TO 'dolibarr_user'@'%' IDENTIFIED BY 'StrongPass!';FLUSH PRIVILEGES;
5.2. “Undefined index” / “Undefined variable” dans les logs
- Cause : Un plugin tiers ou un thème non compatible avec la version courante.
- Fix : Désactiver temporairement le plugin (
/dolibarr/bllx/...) et mettre à jour le plugin ou signaler le bug sur le tracker.
5.3. Problèmes d’affichage (CSS/JS bloqués)
- Cause : URL absolues mal générées derrière un reverse proxy ou un CDN.
- Fix : Ajouter dans
conf/inc_params.php:$sServerName = 'https://monentreprise.fr';$use_ç = true;et configurer le serveur (ex.proxy_set_header Host $host;).
5.4. “Transaction aborted” lors d’import XML de grandes quantités
- Cause : Timeout MySQL (
max_allowed_packet) ou dépassement dememory_limit. - Fix : Modifier
my.cnf:max_allowed_packet=64Minnodb_log_file_size=64M
et/ou augmentermemory_limit = 512Mdansphp.ini.
6. Tips de performance & bonnes pratiques
| Astuce | Effet | Comment mettre en place |
|---|---|---|
| Activez le cache des templates | Réduction du temps de rendu (≈ 30 %). | Dans dkphp.conf : $cfg['CACHE_TEMPLATES'] = 1; |
| Utilisez APCu ou OPcache | Accélération du PHP. | opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=5000 |
| Séparez les annexes sur un disque dédié | Limite les I/O bloquantes. | Créez un volume LV ou un disque EBS et montez‑le sur /var/www/dolibarr/files. |
| Planifiez les tâches cron dans un user dédié | Sécurité + visibilité des logs. | Créer cron.dolibarr avec */5 * * * * www-data /usr/bin/php /var/www/dolibarr/dolibarr.php cron_run |
| Activez le “lazy loading” des listes | Moins de requêtes SQL simultanées. | Modifier $cfg['USE_SMARTY_LIGHT ‘ = true; (ou désactiver le debug mode). |
7. Checklist de déploiement production
- PHP ≥ 8.1, extensions :
intl, gd, zip, mbstring, xml, pdo_mysql. - Base de données MySQL 8 ou MariaDB 10.6 en
utf8mb4. - Permissions :
www-datapropriétaire defiles,img,modules,pics. - HTTPS obligatoire – configurer un certificat Let’s Encrypt ou un certificat interne.
- ModSecurity désactivé ou configuré en mode « Detection » uniquement pour le sous‑dossier
/dolibarr/. - Sauvegarde automatisée :
- Base :
mysqldump --single-transaction(quotidien). - Files :
rsync -a --delete(incremental).
- Base :
- Monit / Nagios : vérifier que les processus PHP‑FPM ne dépassent pas 80 % de la RAM.
- Logs :
error_logdansdolibarr.log, rotation vialogrotate.
8. Conclusion
Dolibarr est une solution ERP très souple, mais son bon fonctionnement repose sur une configuration serveur adéquate, des permissions correctes, ainsi que sur la veille des versions PHP/DB. En anticipant les erreurs décrites ci‑dessus et en appliquant les solutions proposées, vous éviterez les pannes fréquentes, améliorerez la sécurité et offrirez à vos utilisateurs une expérience fluide.
Bonus : pour les équipes qui souhaitent réduire le temps d’administration, pensez à encapsuler l’ensemble (PHP, MySQL, Dolibarr) dans un Docker‑Compose ou un Ansible playbook. Vous disposerez alors d’un environnement reproductible, versionnable et facilement scalable.
Bonne configuration ! 🚀
Sources : Documentation officielle Dolibarr, forums de la communauté, articles de blog sur l’optimisation PHP‑FPM, guides de sécurité Apache/Nginx.