Déployer Dolibarr : intégration Guide pratique pour passer à l’échelle

Dolibarr, l’ERP/CRM open source populaire auprès des TPE/PME, rivalise avec ses homologues propriétaires par sa flexibilité et son coût. Cependant, passer d’un environnement de test mono-serveur à une plateforme de production robuste, capable de servir des centaines d’utilisateurs et de gérer des volumes de données croissants, nécessite une planification et une architecture bien pensée. Ce guide pratique détaille les étapes clés pour déployer et intégrer Dolibarr dans un environnement scalable et performant.

1. Évaluer les besoins et anticiper la croissance

Avant toute chose, une analyse rigoureuse est indispensable :

  • Estimation de la charge : Nombre d’utilisateurs simultanés, volume de transactions (factures, commandes), taille de la base de données projetée.
  • Identification des goulots d’étranglement : Le point faible classique de Dolibarr est la base de données (MySQL/MariaDB) sous charge intensive. L’interface web (PHP) et les traitements batch (crons) sont également des points d’attention.
  • Exigences de disponibilité : Temps d’arrêt acceptable (SLA). Nécessité d’une haute disponibilité (HA) ?
  • Intégrations existantes : Quels systèmes doivent communiquer avec Dolibarr (e-commerce, comptabilité externe, paie) ? Cela influencera les besoins en API et en sécurité.

2. Choisir une architecture adaptée à l’échelle

Oubliez le "tout-en-un" sur un seul serveur. Une architecture en couches est la norme pour la scalabilité.

Architecture de référence (Schéma à l’appui dans l’article original) :

  1. Couche Web/Application (Stateless) :

    • Serveur Web : Nginx ou Apache avec PHP-FPM.
    • Scalabilité horizontale : Déployez plusieurs instances identiques derrière un load balancer (HAProxy, Nginx, ou solution cloud如 AWS ALB/Google Cloud LB).
    • Session utilisateur : Utilisez un gestionnaire de sessions centralisé (Redis ou Memcached) pour que les utilisateurs ne soient pas "ping-pongés" entre les serveurs.
    • Fichiers : Le point critique. Les documents uploadés (pièces jointes, images produits) ne doivent pas résider sur les serveurs web locaux. Utilisez un stockage objet partagé et redondant :

      • Solution cloud : AWS S3, Google Cloud Storage, Azure Blob Storage (avec un CDN comme CloudFront pour accélérer l’accès).
      • Solution on-premise : Un serveur de fichiers dédié (NFS, Samba) ou, mieux, un système distribué comme MinIO ou Ceph. Configurez Dolibarr pour pointer vers ce stockage via DOL_DOCUMENT_ROOT ou un montage réseau.

  2. Couche Base de Données (Étatful) :

    • Serveur dédié : Ne partagez jamais la DB avec le serveur web.
    • Haute Disponibilité (HA) : Pour une criticité élevée, mettez en place un cluster de bases de données.

      • MySQL Group Replication / InnoDB Cluster : La solution Oracle/Percona pour une réplication synchrone multi-maîtres.
      • MariaDB Galera Cluster : Alternative open source robuste.
    • Réplication de secours : Une réplication asynchrone (standard) vers un serveur esclave en lecture seule peut servir de backup et soulager les rapports lourds.
    • Optimisation impérative :

      • innodb_buffer_pool_size = 70-80% de la RAM dédiée.
      • Ajuster max_connections, tmp_table_size, etc.
      • Indexation régulière sur les tables les plus sollicitées (llx_thing, llx_product, llx_societe). Utilisez EXPLAIN pour analyser les requêtes lentes.

  3. Couche Cache et Session (Optionnel mais recommandé) :

    • Installez Redis ou Memcached.
    • Dans Dolibarr (conf.php) : $dolibarr_main_cache_name_key = 'dolibarr_cache'; et $dolibarr_main_cache_enabled = 1; pour activer le cache objet et réduire les requêtes DB.

3. Déploiement et Automatisation

Ne faites pas de déploiement manuel sur les serveurs de production.

  • Infrastructure as Code (IaC) : Utilisez Terraform ou Ansible (ou les équivalents de votre cloud provider) pour provisionner et configurer les serveurs, les réseaux, les load balancers et les bases de données de manière reproductible.
  • Conteneurisation (Approche moderne) :

    • Créez une image Docker personnalisée de Dolibarr basée sur l’image officielle PHP. Important : Ne stockez pas les données (data/, documents/) dans le conteneur. Utilisez des volumes Docker bind mounts ou (mieux) des volumes nommés pointant vers votre stockage objet/partagé.
    • Orchestrez avec Docker Compose pour un environnement simple ou Kubernetes pour une scalability et une résilience maximales. Dans K8s, vous définirez des Deployments pour les pods web, un StatefulSet pour la base de données (ou un service externe cloud) et des PersistentVolumeClaims pour les documents.
    • Avantage : Scaling horizontal des pods web en quelques commandes (kubectl scale).

4. Configuration et Optimisation de Dolibarr

  • Fichier de configuration (conf.php) : Créez-le hors du répertoire web (ex: /etc/dolibarr/conf.php) et liez-le avec un symlink ou une variable d’environnement DOLIBARR_CONF_PATH. Ce fichier doit contenir toutes les constantes ($dolibarr_main_db_*, $dolibarr_main_url_root, $dolibarr_main_document_root, etc.).
  • Désactiver les modules inutiles : Chaque module activé ajoute une charge. Désactivez tout ce qui n’est pas utilisé.
  • Optimiser le cron : Les tâches planifiées (cron.php) doivent s’exécuter sur un seul nœud désigné pour éviter les conflits. Si en cluster, utilisez un mutex (verrou) ou désignez un "leader". Espacez les tâches lourdes (génération de PDF, envois massifs).
  • Gérer les logs : Centralisez les logs PHP et Dolibarr vers un système comme ELK Stack (Elasticsearch, Logstash, Kibana) ou Grafana Loki pour le debugging et la surveillance.

5. Sécurité, Monitoring et Maintenance

  • Sécurité renforcée :

    • HTTPS obligatoire** (Let’s Encrypt avec Certbot si auto-hébergé).
    • Firewave : Restreignez l’accès aux ports (80/443 seulement depuis l’extérieur, 3306 uniquement entre les serveurs web et la DB).
    • Mettre à jour régulièrement Dolibarr et ses composants (PHP, extensions, OS).
    • Auditez les permissions des dossiers (documents/, custom/).
  • Monitoring proactif :

    • Infrastructure : Utilisez Prometheus + Grafana pour surveiller la charge CPU/RAM, l’espace disque, la latence réseau.
    • Application :监控 les temps de réponse des pages clés (dashboard, saisie de facture) et le nombre d’erreurs 500/503.
    • Base de données : Surveillez le nombre de connexions actives, les slow queries, le hit ratio du cache InnoDB. Des outils comme Percona Monitoring and Management (PMM) sont excellents.
    • Alerting : Mettez en place des alertes (via Alertmanager, PagerDuty, etc.) sur les seuils critiques.
  • Sauvegarde et Plan de Reprise d’Activité (PRA) :

    • Sauvegarde complète et régulière : Base de données (dump avec mysqldump ou mysqlpump en nightly) + dossier documents/ (stockage objet). Testez les restaurations !
    • PRA : Documentez la procédure de restauration sur une infrastructure alternative. Faites des exercices.

6. Pipeline CI/CD et Évolutivité

  • Intégration Continue : Testez automatiquement vos personnalisations (overrides,modules) avec PHPUnit.
  • Déploiement Continu : Automatisez le déploiement de l’image Docker vers votre cluster ou vos serveurs (GitLab CI, GitHub Actions, Jenkins). Roulez les mises à jour avec des stratégies blue/green ou rolling update pour éviter les downtimes.
  • Évolutivité :

    • Verticale (monter en puissance) : Augmenter la RAM/CPU des serveurs DB ou web. Limité et coûteux.
    • Horizontale (ajouter des nœuds) : C’est l’objectif. Avec l’architecture décrite, ajouter un serveur web derrière le LB est trivial. La capacité de la DB sera le facteur limitant. Un cluster DB bien conçu permet aussi d’ajouter des nœuds.

Conclusion

Déployer Dolibarr à l’échelle transforme une application mono-serveur en une plateforme industrielle. La réussite repose sur quatre piliers :

  1. Une architecture découplée (web, db, stockage séparés).
  2. L’automatisation du déploiement et de la gestion (IaC, conteneurs).
  3. Une optimisation agressive de la base de données et une utilisation d’un cache.
  4. Une surveillance et une sécurité rigoureuses.

En suivant ce guide, vous posez les bases d’une infrastructure Dolibarr résiliente, performante et capable d’accompagner la croissance de votre organisation sans trembler. N’hésitez pas à vous faire accompagner par un expert pour les étapes critiques de conception du cluster DB et de la migration initiale des données.


Disclaimer : Ce guide présente des bonnes pratiques générales. La configuration exacte dépendra de votre contexte, de votre volume et de votre stack technique. Testez toujours en pré-production !

Publications similaires