Guide pratique pour les experts comptables, restaurateurs, artisans et toutes les petites structures qui souhaitent exploiter pleinement le potentiel de Dolibarr tout en assurant une maintenance pérenne.
1. Introduction
Dolibarr est un ERP/CRM open‑source très prisé par les PME, les associations et les freelances grâce à sa simplicité d’installation, son interface intuitive et son extensibilité via modules. Pourtant, lorsqu’une structure grandit (plus de 200 clients, plusieurs devis / factures mensuels, multiples devises, etc.), les pratiques de nettoyage et de maintenance deviennent cruciales.
Dans cet article, nous décortiquons les erreurs les plus courantes lors du nettoyage de Dolibarr – à la fois technique et organisationnel – et proposons des solutions concrètes pour passer à l’échelle sans perdre en performance ni enDATA‑quality.
2. Pourquoi le nettoyage est-il indispensable pour scaler ?
| Enjeu | Conséquence d’un nettoyage inadéquat | Bénéfice d’une maintenance proactive |
|---|---|---|
| Intégrité des données | doublons, factures orphelines, erreurs de comptabilité. | Cohérence garantie, audits simplifiés. |
| Performance | requêtes lentes, serveur saturé, temps de réponse > 5 s. | Temps de réponse < 1 s, serveur stable sous charge. |
| Sécurité | vulnérabilités non patchées, fuites de données clients. | Patchs appliqués, sauvegardes testées, conformité RGPD. |
| Scalabilité | impossibilité d’ajouter de nouvelles langues ou devises. | Architecture prête à l’extension (clusters, bases de données separées). |
Le nettoyage n’est pas une tâche ponctuelle ; c’est un processus continu qui alimente la capacité de scale.
3. Erreurs fréquentes lors du nettoyage de Dolibarr
3.1. Nettoyage superficiel « coup de balai »
- Symptôme : suppression manuelle de lignes sans vérifier les dépendances (ex. : suppression d’un client qui apparaît sur des devis).
- Conséquence : perte de données historiques, factures impayées qui restent « en‑l’air ».
3.2. Ignorer les dépendances entre modules
- Exemple : désinstaller le module Bank sans désactiver les paiements récurrents déjà créés.
- Résultat : paiements bloqués, réconciliation impossible.
3.3. Mauvais traitement des caractères spéciaux
- Cas typique : noms de produits contenant des accents ou des caractères non‑ASCII qui, lorsqu’ils sont exportés en CSV, sont remplacés par des « ».
- Impact : problème lors de l’import dans des ERP externes ou des rapports PDF.
3.4. Oublier les sauvegardes (back‑ups) avant toute manipulation
- Erreur : exécuter des scripts de purge sans avoir de sauvegarde à restaurer.
- Risque : perte définitive de données critiques, impossibilité de restaurer l’état antérieur.
3.5. Négliger la mise à jour du schéma de base de données
- Situation : passage de Dolibarr 13 à 14 sans appliquer les migrations SQL.
- Effet : erreurs 500 Internal Server Error, tables manquantes.
3.6. Nettoyage des logs sans rotation
- Problème : fichiers
*.logqui grandissent indéfiniment, remplissent le disque et provoquent une plantage du service Apache/Nginx. - Conséquence : indisponibilité du portail pendant plusieurs heures.
3.7. Mauvaise gestion des utilisateurs et des droits
- Situation : compte admin laissé actif sur un serveur de production, droits excessifs.
- Risque : suppression accidentelle de toutes les factures si le compte est compromis.
4. Solutions concrètes pour éviter les pièges et passer à l’échelle
4.1. Formaliser les processus de nettoyage
| Étape | Action | Outils recommandés | Validation |
|---|---|---|---|
| Pré‑nettoyage | Export des dépendances (ex. : SELECT * FROM llx_facture WHERE client_id = 0;) |
Scripts SQL, doliphp –list-modules |
Test en environnement de pré‑production |
| Nettoyage | Suppression ou archivage via les API Dolibarr ($object->delete()) |
Scripts PHP via CLI, extensions dolibarr-cli |
Rapports d’audit |
| Post‑nettoyage | Vérification d’intégrité (integrity des clés étrangères) | php -r "require_once('.../main.inc.php'); $db->query('SELECT COUNT(*) FROM llx_facture WHERE fk_soc > 0');" |
Dashboard de suivi |
Bon à savoir : créez un playbook (type Ansible ou Makefile) qui regroupe ces quatre phases. Cela rend le processus reproductible et traçable.
4.2. Automatiser les sauvegardes avant chaque nettoyage
- Snapshot de la base :
mysqldump -u dolibarr -p dolibarr > /backup/dolibarr_$(date +%F).sql.gz - Export des fichiers : script
rsync -a --delete /var/www/dolibarr/ /backup/dolibarr_$(date +%F)/ - Rotation : conserver les 7 derniers backups + un checkpoint mensuel.
- Test de restauration : script qui reconstitue la base sur un serveur de test et lance le scénario de nettoyage prévu.
4.3. Utiliser les fonctions intégrées de purge
Dolibarr propose plusieurs fonctions de purge via l’interface Maintenance ou via la console CLI :
php -r "require_once('.../main.inc.php'); $db->query('DELETE FROM llx_user WHERE id > 0 AND login LIKE \"test%\"');"
php -r "require_once('.../main.inc.php'); $db->query('DELETE FROM llx_source_load WHERE load_date < DATE_SUB(NOW(), INTERVAL 180 DAY)');"
- Planifier ces appels via cron (exemple :
0 2 * * 0 /usr/local/bin/dol-cleanup.sh >> /var/log/dol-cleanup.log 2>&1).
4.4. Gestion des caractères spéciaux & export/ import
- UTF‑8 partout : assurez‑vous que le fichier de configuration
conf/parameters.phpa'encoding' => 'UTF-8'. - Nettoyage des CSV : utilisez
iconv -f ISO-8859-1 -t UTF-8//IGNORE fichier.csv -o fichier_utf8.csv. - Limitations : évitez les colonnes > 255 caractères pour les descriptifs, sinon créez un champ texte (
llx_text).
4.5. Mise à jour & migration du schéma de base
- Lire le changelog officiel de chaque version (ex. : Dolibarr 14 → 15 introduit la table
llx_price_level). - Exécuter les scripts de migration en mode maintenance :
php -r "require_once('.../main.inc.php'); $db->query('ALTER TABLE llx_product ADD COLUMN price_exclude_tax VARCHAR(20);');" - Tester chaque migration sur une copie de production avant de la pousser.
4.6. Rotation & nettoyage des logs
- Automatiser avec logrotate :
/var/log/dolibarr/*.log {
daily
rotate 14
compress
missingok
notifempty
create 0640 www-data adm
} - Centraliser les logs sur Elasticsearch ou Grafana Loki pour un monitoring en temps réel.
4.7. Sécuriser les comptes utilisateurs
- Principle du moindre privilège : créez des rôles spécifiques (
accounting,sales,admin) avec des droits limités. - Désactiver le compte admin par défaut : renommez-le (
superadmin_XXXX) et attribuez un mot de passe fort. - Audit périodique : script
SELECT login, status FROM llx_user WHERE status='active' AND is_admin=1;et alerter si > 1 compte admin.
5. Stratégie de Scaling (passage à l’échelle)
5.1. Architecture horizontale
| Composant | Solution de scaling | Pourquoi |
|---|---|---|
| Web server | Load‑balancer + Nginx statique + PHP‑FPM pool partagé | Répartition de la charge, haute disponibilité. |
| Base de données | Replication maître‑esclave + read‑only replicas | Possibilité d’executer les requêtes de reporting sur les replicas, pas sur la master. |
| Stockage des fichiers | S3/GCS + CDN (ex. : Cloudflare) pour les PDFs, images | Découplage du serveur web, scalabilité infinie, meilleur temps de chargement. |
| Cache | Redis ou Memcached pour les sessions et les listes de produits | Accélération des appels récurrents (liste des clients, articles). |
Tip : Couplage avec Docker/Kubernetes permet de déployer automatiquement chaque micro‑service (API, UI, Cron) dans un pod dédié, assurant ainsi la scalabilité à la demande.
5.2. Monitoring & alertes
- Prometheus + Grafana : métriques de charge du serveur (CPU, RAM, I/O) et temps de réponse HTTP.
- Alerte : déclenchement d’une callback Slack ou d’un mail dès que le taux d’erreur 5xx dépasse 1 % sur 5 minutes.
5.3. Gestion des journaux & des métriques de nettoyage
- Log d’événements de purge : inclure l’identifiant de transaction dans chaque purge afin de reconstituer le who‑what‑when en cas d’incident.
- Tableau de bord : section Cleaning Dashboard dans Dolibarr (module Dashboard > Cleaning).
6. Checklist de bonnes pratiques avant chaque montée en charge
| ✅ | Action | Fréquence |
|---|---|---|
| 1 | Vérifier les sauvegardes quotidiennes et tester leur restauration | Hebdomadaire |
| 2 | Examiner les logs de la journée (erreurs, warnings) | Quotidien |
| 3 | Mettre à jour les dépendances/modules (sécurité) | Mensuel |
| 4 | Appliquer le script de purge des enregistrements obsolètes (> 180 j) | Mensuel |
| 5 | Nettoyer les tables de journal (llx_action, llx_log) via logrotate |
Mensuel |
| 6 | Auditer les droits des utilisateurs (sans admin inutile) | Trimestriel |
| 7 | Effectuer un test de charge (JMeter / Locust) | Avant chaque pic prévu |
| 8 | Documenter tout changement de configuration dans le wiki interne | À chaque modification |
| 9 | Revoir le plan de reprise après sinistre (DRP) | Semestriel |
| 10 | Informer les équipes métier des fenêtres de maintenance planifiées | Toujours avant le calendrier de mise à jour |
7. Conclusion
Passer à l’échelle avec Dolibarr ne consiste pas simplement à ajouter plus de serveurs ou plus d’utilisateurs ; il faut avant tout maîtriser le nettoyage de vos données, processus et infrastructure.
- Les erreurs les plus fréquentes (suppression à l’aveugle, négligence des dépendances, backup manquant, mauvaise rotation des logs) sont évitables grâce à des procédures standardisées.
- Les solutions proposées – formalisation des scripts, automatisation des sauvegardes, utilisation des fonctions de purge intégrées, vigilance sur les caractères et les droits – créent une base solide pour la scalabilité.
- Une architecture pensée pour le scaling (load‑balancing, réplication DB, stockage objet) couplée à un monitoring proactif vous garantit que votre Dolibarr restera réactif même sous un trafic xx fois supérieur.
En suivant la checklist et le playbook décrits ci‑dessus, votre organisation pourra transformer Dolibarr d’un simple outil de gestion en une plateforme résiliente, sécurisée et prête à grandir sans craindre les pièges du nettoyage.
Prêt à passer à l’échelle ? Implémentez dès aujourd’hui le playbook de nettoyage, planifiez votre première sauvegarde de test et commencez à monitorer vos indicateurs clés. Votre futur vous remerciera !
Article rédigé par l’équipe de consultants Dolibarr Experts – version 2025.