Cet article a été rédigé pour les développeurs, chefs de projet et décideurs qui souhaitent combiner la puissance d’un ERP/CRM open‑source (Dolibarr) avec la flexibilité d’un site WordPress, tout en préparant le tout à une croissance importante du trafic et du volume de données.
1. Pourquoi coupler Dolibarr et WordPress ?
| Besoin | Dolibarr | WordPress |
|---|---|---|
| Gestion financière / comptable | ✔️ Factures, devis, stocks, comptes bancaires | ❌ (pas natif) |
| CRM / relation client | ✔️ Fiches clients, contacts, historique | ✔️ Plugins de marketing, automatisation |
| Portail client / autoportal | ✔️ Auto‑gestion des devis, factures, paiements | ✔️ UX moderne, thèmes, responsiveness |
| Extensibilité | Modules simples, API REST | Écosystème de plugins, thèmes, hooks |
En combinant ces deux solutions, vous bénéficiez d’une interface client moderne tout en conservant la centralisation des données métier dans Dolibarr. Le défi majeur est de rendre cette intégration scalable : capable de gérer des pics de trafic, de gros volumes de transactions et d’assurer une disponibilité quasi‑continue.
2. Architecture générale d’une intégration « scalable »
+-------------------+ REST/GraphQL +--------------------+
| Front‑end WordPress <---> API <---> Back‑end Dolibarr |
| (Thème + plugins) | (php / Symfony) |
+-------------------+ +--------------------+
| |
| Caching (Redis / Memcached) |
v v
+----------------------+ +----------------------+
| Service de batch | <-----------> | Filesystem / DB |
| (export PDF, CSV) | | (MySQL / MariaDB) |
+----------------------+ +----------------------+
2.1. Les couches clés
| Couche | Rôle | Solutions recommandées |
|---|---|---|
| Présentation | Thème WordPress responsive, UX modern | Thème lightweight (Astra, GeneratePress) + Gutenberg ou page‑builder (Elementor) |
| API | Point d’entrée unique pour lire/écrire dans Dolibarr | API REST de Dolibarr (activable), ou GraphQL via WPGraphQL + WPGraphQL‑JWT |
| Orchestration | Gestion du flux, authentification, pagination | JWT, Oauth2 (via Keycloak ou Dolibarr‑OAuth) |
| Cache & Buffer | Réduction de la latence, protection des pics | Redis (caching d’API), RabbitMQ ou Kafka pour les files d’attente (export, facturation) |
| Backend | Traitement lourd (PDF, synchronisation de stock) | Workers PHP (Laravel Queue, Symfony Messenger) ou WP‑Cron dédié |
| Persist & Backup | Stockage des données transactionnelles | MySQL/MariaDB + réplication ; sauvegardes point‑in‑time avec Percona XtraBackup |
3. Étapes de mise en œuvre### 3.1. Activation et sécurisation de l’API Dolibarr 1. Installer le module “API” (core → Modules → API) 2. Créer un profil API dédié (ex. : WordPress‑Integration)
- Permissions : privilégier le read‑only sur les fiches client, write limité aux devis/factures.
-
Clé d’accès et hash (ou token JWT) générés par le serveur.
- Activer le format JSON (par défaut :
json). - Tester avec Postman ou curl :
« `bash curl -X GET "https://api.votredomaine.com/json/customers?access_token=YOUR_TOKEN"
- Activer le format JSON (par défaut :
3.2. Exposer l’API WordPress
- Installer le plugin WPGraphQL (et WPGraphQL‑JWT Auth pour l’authentification).
-
Créer un schéma GraphQL qui englobe les types Dolibarr nécessaires :
Customer,Invoice,Product,Stock. – Développer des resolvers personnalisés qui interrogent l’API Dolibarr (exemple en PHP) : « `php
// src/Resolver/CustomerResolver.php
public function getCustomer($args, $context) {
$url = "https://api.votredomaine.com/json/customers?access_token=" . $context[‘access_token’];
$response = wp_remote_get($url);
return json_decode(wp_remote_retrieve_body($response), true);
} - Activer caching via WPGraphQL Cache (Redis backend) pour éviter les appels redondants.
3.3. Synchronisation bidirectionnelle (si besoin)
| Direction | Méthode | Fréquence |
|---|---|---|
| WordPress → Dolibarr (création client) | POST /json/customers via l’API |
En temps réel, avec validation serveur |
| Dolibarr → WordPress (mise à jour stock) | Cron (toutes les 5 min) ou queue (RabbitMQ) | Périodique ou en réponse d’un événement (ex. : paiement reçu) |
- Utiliser webhooks Dolibarr (module “Webhooks” ou custom) pour déclencher des actions sur WordPress via
wp_remote_post.
3.4. Optimisation des performances
| Action | Implémentation concrète |
|---|---|
| Caching API | Stocker les réponses JSON dans Redis avec TTL = 300 s ; invalidation sur changement de stock (SETEX). |
| Pagination | Retourner n enregistrements max (ex. : 50) + champs next_cursor via API. |
| Lazy‑load des images & CSS/JS | Utiliser loading="lazy" et les assets minifiés via WP‑Rocket. |
| GZip/Brotli | Activer HTTP compression sur Nginx/Apache. |
| CDN | Mettre les fichiers statiques (images, PDFs) sur CloudFront ou OVH CDN. |
| Workers asynchrones | Déplacer le génération de PDFs, l’envoi d’emails, les export CSV vers des queues (Beanstalkd). |
4. Scaling (Hauteur & Largeur) ### 4.1. Dimensionnement horizontal
- Cluster Docker / Kubernetes
- Déployer chaque service (API WordPress, API Dolibarr, Worker) dans un conteneur.
- Utiliser Horizontal Pod Autoscaler (HPA) basé sur CPU ou latence. 2. Database Sharding / Replication
- Exploiter la réplication maître‑esclave de MySQL pour séparer les lectures (WordPress) des écritures (Dolibarr).
- Option MySQL Router pour le routage intelligent.
- Cache distribué
- Redis Cluster (sharding) ; configurer un failover automatique (Redis Sentinel).
4.2. Gestion des pics de trafic
- Load Balancer (NGINX, HAProxy) avec least‑connections ou round‑robin selon la charge.
- Rate‑limiting via
mod_evasiveou le plugin WP‑Rate‑Limit pour protéger l’API contre les abus. - Back‑pressure : les workers peuvent publier un “job‑full” dans la queue lorsqu’ils sont saturés ; les requêtes en attente reçoivent un code
429 Too Many Requests.
4.3. Monitoring & Alerting
| Outil | Métrique clé |
|---|---|
| Prometheus + Grafana | Latence API (p99 latency < 200 ms), taux d’erreurs 5xx, utilisation Redis (memory‑used‑percentage). |
| ELK (Elastic + Logstash + Kibana) | Logs d’erreurs Dolibarr, traces de requêtes WordPress. |
| New Relic / Datadog | Monitoring APM (tempo) pour les appels HTTP vers Dolibarr. |
| Healthchecks.io | Pings d’un endpoint /healthz dans chaque service. |
5. Sécurité renforcée
- HTTPS obligatoire (TLS 1.3) pour toutes les communications.
- JWT signé par un secret partagé ; expiration courte (15 min).
- Scopes granulaire :
customer:read,invoice:write,stock:read. - Double‑factorisation sur l’interface d’administration WordPress (plugin WP 2FA). 5. Protection CSRF côté WordPress (nonce) dès que les formulaires interagissent avec l’API interne. 6. Audit des accès – conserver les logs de connexion API dans un bucket S3 chiffré (AWS Glacier) ou un SIEM interne.
6. Bonnes pratiques & Checklist de mise en production
| ✅ | Point à valider |
|---|---|
| 1 | L’API Dolibarr est accessible uniquement via HTTPS et utilise un token non‑réutilisable. |
| 2 | Tous les appels depuis WordPress sont authentifiés (JWT/OAuth2). |
| 3 | Un mécanisme de fallback (display d’une page d’erreur générique) est en place si l’API externe échoue. |
| 4 | Les réponses sont cachées (Redis) et les clés sont invalidées en cas de modification. |
| 5 | Les workers sont scellés dans un sandbox (Docker, user www-data limité). |
| 6 | Les sauvegardes régulières (dump SQL + export JSON des API) sont testées en restauration. |
| 7 | Les logs d’erreur sont centralisés et alertent sur un seuil de 5 % d’erreurs. |
| 8 | Le CDN est configuré avec Cache‑Control approprié (max‑age 86400 pour assets statiques). |
| 9 | Un test de charge (JMeter/Locust) montre que 2 × le pic attendu passe sans dépasser 80 % CPU. |
| 10 | La conformité RGPD est assurée (anonymisation des données client exposées via l’API). |
7. Études de cas rapides
| Cas d’usage | Implémentation clé | Résultat |
|---|---|---|
| Boutique e‑commerce B2C (≈ 150 k visiteurs/mois) | WordPress + WooCommerce + API Dolibarr (caisse, stocks) + Redis cache | 30 % de réduction du temps de checkout, latence < 150 ms même en période de Black Friday. |
| Agence de conseil (service facturation) | Portail client WordPress (CRUD clients, devis) → API Dolibarr (factures, paiements) via GraphQL | Temps de facturation réduit de 45 % ; aucun bug de synchronisation après 6 mois de production. |
| Marketplace multi‑vendeurs | Front‑end WordPress multi‑tenant → micro‑services Workers (Node/PHP) qui orchestrent les appels Dolibarr | Gestion de 3 000 transactions par jour avec 99,9 % de disponibilité. |
8. Conclusion
Intégrer Dolibarr à un site WordPress ne se limite pas à copier‑coller des API ; il s’agit de réinventer l’architecture afin de rester souple, performant et prêt à grandir. 1. Séparez clairement la couche présentation (WordPress) de la couche métier (Dolibarr).
- Exploitez les API natives de Dolibarr (REST/JSON) et les graphes WordPress (GraphQL) pour des échanges légers et versionnables.
- Cachez intelligemment, queuez les traitements lourds et scalez horizontalement via Docker/K8s.
- Sécurisez chaque appel avec des tokens JWT, HTTPS et des scopes granulaires.
- Monitorisez tout le pipeline et mettez en place des alertes dès les premiers signes de saturation.
En suivant la méthodologie décrite ci‑dessus, vous disposerez d’une solution prête à soutenir des dizaines de milliers d’utilisateurs tout en conservant une expérience utilisateur fluide et une gestion centralisée de vos processus métier.
« La scalabilité n’est pas une option, c’est une anticipation. » – votre équipe d arquitectes Cloud.
Vous avez besoin d’un exemple de script d’initialisation Docker‑Compose ou d’un guide détaillé pour la configuration de Redis en tant que cache partagé ? N’hésitez pas à nous le préciser dans les commentaires !