Par [Votre Nom] – Spécialiste Dolibarr & Transformation digitale
Date : 3 novembre 2025
1. Introduction
Dolibarr est reconn u comme l’un des ERP‑CRM open‑source les plus légers et les plus faciles à administrer. Malgré sa simplicité d’installation, de nombreuses entreprises l’utilisent en production pour gérer leurs achats, ventes, stocks, factures, projets et 서비스 client.
Cependant, à mesure que l’infrastructure devient plus complexe (micro‑services, conteneurs, CI/CD, observabilité), la gestion des tickets (incidents, demandes d’évolution, changements) doit évoluer elle‑aussi. Cet article montre comment :
- Structurer les tickets dans un workflow de production Dolibarr.
- Appliquer les bonnes pratiques de configuration, de suivi et de gouvernance.
- Intégrer les outils modernes (Docker/Kubernetes, API, webhooks, CI/CD, monitoring) pour transformer Dolibarr en un système réellement « cloud‑native ».
Objectif : offrir aux équipes IT, aux chefs de projet et aux développeurs une feuille de route concrète pour exploiter Dolibarr en production tout en conservant la souplesse d’un ERP open‑source.
2. Architecture de Production de Dolibarr
| Niveau | Composant | Pourquoi le mettre en production ? |
|---|---|---|
| LAMP / LEMP | Apache/Nginx + PHP + MySQL/MariaDB | Environnement stable, bien supporté, compatible avec la plupart des hébergeurs. |
| Conteneurisation | Docker / Podman | Isolation, versionning facile, déploiement identique en dev & prod. |
| Orchestration | Kubernetes (ou OpenShift) | Scalabilité horizontale, auto‑healing, gestion des rollouts. |
| Base de données | MariaDB Galera Cluster ou MySQL Replication | Haute disponibilité, réplication async/synchrone selon le besoin. |
| Stockage persistant | PVC / NFS / Ceph | Conservation des fichiers (documents, pièces jointes). |
| Reverse Proxy & TLS | Traefik / Caddy + Let’s Encrypt | Gestion centralisée du routage et du chiffrement. |
| Observabilité | Prometheus + Grafana | Métriques (latence PHP‑FPM, requêtes MySQL, utilisation CPU). |
| Gestion des logs | Loki / Elasticsearch | Centralisation et recherche des logs applicatifs. |
| CI/CD | GitLab CI / GitHub Actions | Tests automatisés, déploiement blue‑green, migration DB versionnée. |
Tip : Commencer par une installation Docker‑Compose « dev », puis migrer progressivement vers Helm/Kustomize pour Kubernetes en production.
3. Gestion des Tickets dans un Contexte de Production
3.1. Types de Tickets
| Catégorie | Exemple de ticket | Priorité | Responsable |
|---|---|---|---|
| Incident | “Erreur 500 sur le formulaire de paiement” | P0 (critique) | SRE / DevOps |
| Demande fonctionnelle | “Ajout d’un champ TVA personnalisé” | P1 | PO / Analyste |
| Changement de configuration | “Rotation du secret DB” | P2 | Admin Sysadmin |
| Task de maintenance | “Sauvegarde quotidienne des pièces jointes” | P3 | Ops |
| Amélioration de performance | “Optimisation du calcul du stock” | P4 | Dev |
Astuce : Utiliser GitLab Issues ou Jira comme système de suivi et lier chaque ticket à un Git branch (ex.
feature/P-123).
3.2. Workflow de Tickets (GitOps‑friendly)
- Création du ticket (GitLab Issue / Jira).
- Labelisation :
type:bug,type:enhancement,priority:P0. 3. Branch :git checkout -b tickets/P-123-fix-bug-paiement. - Développement → Pull Request.
- Checks CI : lint PHP, tests unitaires (PHPUnit), tests fonctionnels (Behat).
- Revues (2 reviewers minimum).
- Merge → CI/CD déclenche le déploiement staging.
- Validation (QA) → Promotion en prod via pipeline blue‑green.
- Clôture du ticket + tag Git (
v2.1.5-p-123).
Résultat : Traçabilité complète du code → ticket, chaque modification étant versionnée et auditée.
3.3. Modèles de Ticket dans Dolibarr
| Module | Exemple de champ custom | Utilisation |
|---|---|---|
| Tickets (CRM) | Ticket ID, Etapes, Responsable, Date Limite |
Suivi de demandes client, incidents internes. |
| Projects | Jira_ID, Sprint, Backlog_Ref |
Lier des projets de développement à des tickets. |
| Contracts | Clause_Renouvellement, Renouvel_ID |
Gestion des contrats fournisseurs avec des jalons. |
| Invoices | Ticket_Reference (champ libre) |
Relier une facture à la demande qui l’a générée. |
Bonne pratique : Créer un module dédié “Ticket Management” via le App Builder de Dolibarr (ou un module externe) afin de disposer d’une API RESTful interne
GET /ticket/{id}et d’un webhook vers votre système de suivi externe.
4. Bonnes Pratiques de Production
4.1. Sécurité
| Action | Détails | Outils |
|---|---|---|
| HTTPS obligatoire | TLS 1.3, HSTS, CSP | Traefik + Let’s Encrypt |
| Hardening du serveur PHP | disable_functions (exec, shell_exec), expose_php = Off |
php.ini + Dockerfile |
| Gestion des secrets | Pas de mots de passe en clair ; utiliser Vault ou AWS Secrets Manager | Docker secrets, Kubernetes Secrets |
| Mise à jour régulière | Patch mensuel de PHP, Apache/Nginx, MariaDB | Ansible playbooks |
| Audit des logs | Journalisation des accès aux tables sensibles | Loki + Grafana Alerting |
4.2. Performance
| Paramètre | Valeur recommandée (stockage moyen) |
|---|---|
| PHP‑FPM workers | pm.max_children = 4 * cpu.cores (ou + 1) |
| OpCache | opcache.enable=1, opcache.memory_consumption=256 |
| Cache MySQL | InnoDB Buffer Pool = 50‑75 % RAM |
| CDN pour assets statiques | Cloudflare / Fastly |
| Réplication read‑only | Utiliser les réplicas pour les requêtes de reporting |
Formula : Si vous avez 8 cœurs, configurez 5 workers PHP‑FPM et 2 réplicas de DB pour le scaling read‑only.
4.3. Gestion des Données
| Bonnes pratiques | Pourquoi |
|---|---|
| Sauvegarde incrémentale (daily + hourly) | Réduction du RPO. |
| Test de restauration (quarterly) | Garantir la récupération. |
| Nettoyage des pièces jointes orphelines | Économiser de l’espace disque. |
Partitionnement de la table llx_price (si volume > 10 M lignes) |
Accélère les requêtes de prix. |
| Archivage des tickets résolus > 12 mois | Conformité RGPD / conformité interne. |
4.4. CI/CD & GitOps
| Étape | Outils recommandés |
|---|---|
| Build | Docker multi‑stage (php:8.2-apache) |
| Test unitaires | PHPUnit, coverage ≥ 80 % |
| Tests fonctionnels | Behat + Mink (scénarios UI) |
| Static analysis | PHPStan, Psalm |
| Scan de vulnérabilités | Trivy (images Docker) |
| Déploiement | Helm chart dolibarr avec values.yaml versionné |
| Rollback | helm rollback --revision 3 |
| Versioning DB | Liquibase ou Phinx migrations stockées dans db/migrations |
Exemple de pipeline GitLab CI
stages: [build, test, security, deploy]
build:
stage: build
script: docker build -t registry.example.com/dolibarr-app:${CI_COMMIT_SHA} .
test:
stage: test
script: docker run --rm -v $(pwd):/code vendor/bin/phpunit
security:
stage: security> script: trivy image --severity HIGH,CRITICAL registry.example.com/dolibarr-app:${CI_COMMIT_SHA}
deploy:
stage: deploy
script:
- helm upgrade --install dolibarr ./helm/dolibarr \
--set image.tag=${CI_COMMIT_SHA} \
--namespace production --create-namespace
4.5. Observabilité
| Métrique | Seuil d’alerte | Action |
|---|---|---|
| Latence HTTP / 200 ms | > 300 ms sur 5‑min sliding | Redémarrer pod ou augmenter pm.max_children. |
| Taux d’erreurs 5xx | > 2 % du trafic | Inspecter les logs Apaches, activer circuit‑breaker. |
| Utilisation CPU MariaDB | > 85 % pendant 10 min | Scale‑out des réplicas ou rééquilibrage des requêtes. |
| Mémoire OpCache | < 20 % libre | Augmenter la taille de cache. |
| Queue jobs (cron) | > 100 tâches en attente | Ajuster le schedule ou élargir le worker pool. |
Alerting : Utilisez Alertmanager avec des receiver Slack / PagerDuty.
5. Intégrations modernes – De la théorie à la pratique
5.1. API REST native de Dolibarr Depuis Dolibarr 7, le REST API est fourni via le module Advanced Hook et le Web Service Engine. – Endpoint principal : GET /dolibarr/api/v1/customers
- Authentification : Token JWT (
Authorization: Bearer <token>) généré via/api/v1/auth. – Webhooks : Configurables depuis Setup → Advanced → Webhooks ; ils invoquent une URL externe (ex. “order_created” → webhook → Slack ou Zapier).
Utilisation courante :
# Récupérer les devis en attente
curl -H "Authorization: Bearer $TOKEN" \
"https://erp.example.com/dolibarr/api/v1/quotes?status=waiting"
Intégrer ce endpoint avec CRM hubs (HubSpot, Salesforce) ou ERP agricole via des micro‑services Python/Node.js.
5.2. Conteneurs & Orchestration (Kubernetes)
Helm chart minimal (templates/deployment.yaml) :
apiVersion: apps/v1
kind: Deployment
metadata:
name: dolibarr
spec:
replicas: 2
selector:
matchLabels:
app: dolibarr
template:
metadata:
labels:
app: dolibarr
spec:
containers:
- name: php
image: registry.example.com/dolibarr-app:{{ .Values.image.tag }}
envFrom:
- secretRef:
name: dolibarr-secrets
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /dolibarr/
port: 80
initialDelaySeconds: 30
periodSeconds: 10
resources:
limits:
cpu: "{{ .Values.resources.limits.cpu }}"
memory: "{{ .Values.resources.limits.memory }}"
requests:
cpu: "{{ .Values.resources.requests.cpu }}"
memory: "{{ .Values.resources.requests.memory }}"
- ConfigMaps for
dolibarr.confetcronjobs. - PersistentVolumeClaims pour
/opt/dolibarr/htdocs/files/(uploads).
Scalabilité : Vous pouvez placer plusieurs pods derrière un Service et découpés par Ingress (ex. dolibarr.example.com).
5.3. Intégration avec des outils d’automatisation | Besoin | Outil | Méthode d’intégration |
|——–|——-|————————|
| Ticketing | Jira / GitLab Issues | Webhook Dolibarr → création d’issue automatiquement liée au projet. |
| Messagerie | Slack / Discord | Webhook « notification » → message « Nouveau devis approuvé ». |
| ERP | Odoo / SAP | Export CSV via API ou ETL (Airbyte) + tableau de bord PowerBI. |
| CI | GitLab CI | Pipeline déclenché automatiquement par merge‑request contenant Ticket-Ref. |
| Monitoring | Prometheus | Exporter dolibarr_prometheus (développé par la communauté). |
| Chatbot | Dialogflow | Intent « statut‑ticket » → appel API Dolibarr → réponse « Ticket #1234 en cours de validation ». |
Pattern : Leader‑Follower – Un micro‑service dédié à la synchronisation des tickets avec l’outil externe, déclenché par les webhooks et alimentant une file (RabbitMQ/Kafka) pour les traitements asynchrones.
5.4. Migration de données – Versionning & Tests
| Étape | Description | Outils |
|---|---|---|
| Dump SQL | mysqldump -h db -u root -p dolibarr > dolibarr.sql |
mysqldump |
| Diff / Patch | Générer un patch diff.sql à appliquer sur prod |
git diff + script Python |
| Version des schémas | Utiliser Liquibase (changelog/db-changes.xml) |
Liquibase |
| Tests de compatibilité | Exécution de scénarios Behat sur la version cible | Behat |
| Rollback | Re‑appliquer le dump précédent ou réinitialiser la base | docker exec db mysql dolibarr < dump_previous.sql |
Règle d’or : Ne jamais appliquer de migration directement en prod. Toujours passer par un environnement de staging qui reproduit fidèlement la configuration de prod (CPU, RAM, volume IO).
6. Checklist « Ticket & Production Ready »
| ✅ | Item | Description |
|---|---|---|
| 1 | Dockerfile multi‑stage avec builder et runtime |
Réduction de l’image finale (~ 80 MB). |
| 2 | Healthcheck HTTP /dolibarr/upgrade.php ou /dolibarr/interfaces/functions.php |
Détecte les pannes de l’app. |
| 3 | Secrets stockés dans Kubernetes/HashiCorp Vault | Pas de mots de passe en clair dans le repo. |
| 4 | Cron intégré via cron.php exposé sous forme de job Kubernetes |
Traitement asynchrone fiable. |
| 5 | Webhook configuré pour chaque type d’événement (order, invoice, ticket) | Notifications en temps réel. |
| 6 | API token généré avec durée limitée (ex. 24 h) | Sécurité renforcée. |
| 7 | Monitoring de la base (queries lentes) via slow_query_log |
Alertes sur goulets d’étranglement. |
| 8 | Backup automatisé (daily + hourly) avec restic |
Vérification de l’intégrité des backups. |
| 9 | Rollback du déploiement via Helm (helm rollback) |
Retour instantané en cas d’incident. |
| 10 | Documentation du ticket‑flow (README, diagramme BPMN) | Transfert de connaissances sans friction. |
7. Cas d’Usage Concret – Implémentation d’un Ticket de Production
7.1. Scénario
Ticket ID :
P-987 – Erreur 500 lors de la génération de factures PDF
Priorité : P0 (interruption du service facturation). > Impact : 200 factures bloquées, retard paiement client.
7.2. Workflow suivi 1. Création du ticket dans GitLab Issue avec le label priority:P0.
- Branch
tickets/P-987-fix-pdf-500. - Analyse : Les logs Docker montrent
Allowed memory size of 128 bytes exhausted. - Code : Ajout d’un
ini_set('memory_limit','512M');viaphp.iniet optimisation dupdfgenerator.class.php. - Tests :
phpunit+behatréussis, couverture ≥ 90 %. 6. CI : Build Docker image, push, Helm upgrade en staging. - Validation : QA exécute un scénario facturation complet – aucun 500.
- Déploiement en prod (blue‑green) →
helm upgrade --install dolibarr ./helm/dolibarr --set image.tag=<new_sha> --namespace production. 9. Closure : Le ticket passe en Done, tag Gitv4.3.1-p-987créé.
7.3. Rapports automatiques
- Grafana crée un tableau de bord “Ticket‑P0‑latency” affichant le temps moyen de résolution (de 30 min à 5 min).
- Prometheus alerte sur le nombre d’incidents P0 > 2 sur 30 jours → déclenche un audit post‑mortem.
8. Perspective : Vers un Dolibarr « Serverless »
Avec l’émergence de FaaS (AWS Lambda, Cloudflare Workers) et de containers‑as‑a‑service (Fly.io), il devient possible de :
- Déployer les modules de Dolibarr comme fonctions (ex. génération de PDF → Lambda).
- Externaliser le moteur de base de données vers PlanetScale (MySQL‑compatible) pour une scalabilité quasi‑illimitée.
- Utiliser des “micro‑gateways” (Kong, Ambassador) pour exposer uniquement les API nécessaires, réduisant la surface d’attaque.
Road‑map 2025‑2026 :
- Portage du core Dolibarr sous Laravel Octane (Swoole) pour transformer les requêtes PHP‑FPM en processus long‑running. > 2. Migration vers PostgreSQL avec CDC (Change Data Capture) pour synchroniser avec des data‑lakes.
- Adoption du GraphQL comme couche d’accès aux données métier (au lieu du REST).
9. Conclusions
- Dolibarr peut être exploité en production à la fois comme ERP léger et comme plateforme d’intégration moderne lorsqu’on adopte les bonnes pratiques de ticketing, de CI/CD, de sécurité et de surveillance.
- La centralisation des tickets dans un système de suivi (GitLab Issues, Jira) associée à un workflow GitOps garantit la traçabilité et facilite la gouvernance.
- Les intégrations modernes (API REST, webhooks, conteneurs, micro‑services) permettent à Dolibarr de s’insérer harmonieusement dans les chaînes d’automatisation et les écosystèmes cloud.
- L’observabilité et les alertes proactives sont essentielles pour détecter rapidement les incidents critiques et les faire remonter dans le processus de ticket.
En suivant la checklist et le cadre décrits dans cet article, les équipes peuvent :
- Réduire les temps de résolution d’incidents.
- Automatiser les changements de configuration et de code.
- Assurer la continuité de service même sous charge importante.
- Restent flexibles pour ajouter de nouvelles fonctionnalités ou migrer vers des architectures serverless à l’avenir.
À vous de jouer : Commencez par créer votre premier ticket de production (exemple : « Add custom field for purchase order »), puis implémentez-le à travers le pipeline CI/CD décrit. Vous verrez rapidement les bénéfices d’un Dolibarr vraiment « production‑ready ».
Bonne mise en production !
Sources recommandées :
- Documentation officielle Dolibarr → Modules > Ticket Management
- Helm chart Dolibarr –
https://github.com/myhelmrepo/dolibarr-helm - Guide CI/CD GitLab – CI/CD with Docker & Kubernetes
- Article « Secure PHP ERP in the Cloud » – 2024 edition. —
À propos de l’auteur :
Spécialiste ERP open‑source, certifié AWS Solutions Architect, contributeur régulier aux projets Dolibarr et Laravel Octane. Passionné d’automatisation et d’observabilité, il accompagne les PME dans leur transformation digitale.