Module BackupGuard FR
| Éditeur | Theo Pequignot (theopequignot.fr) |
|---|---|
| Identifiant du module | 194158 |
| Version | 1.0.0 |
| Dolibarr | 16 à 24 |
| Où l'obtenir | DoliStore (BackupGuard) |
| Support | contact@theopequignot.fr |
La sauvegarde native de Dolibarr dépend de la commande mysqldump, que beaucoup d'hébergements mutualisés et de conteneurs n'ont pas ou refusent d'exécuter (« Échec de l'exécution de commande externe »). Elle n'est pas planifiée, pas chiffrée, et reste sur le même serveur que les données. BackupGuard fait une sauvegarde complète, planifiée, chiffrée, vérifiée et envoyée ailleurs, sans rien installer sur le serveur.
Ce que fait le module
- Export de la base en pur PHP : toutes les tables Dolibarr sont lues dans un instantané InnoDB cohérent (REPEATABLE READ, START TRANSACTION WITH CONSISTENT SNAPSHOT) et écrites en flux dans un fichier SQL, 2 000 lignes à la fois, INSERT groupés d'environ 1 Mo. Aucun binaire requis, mémoire constante. Si mysqldump existe et que l'option est activée, il est utilisé à la place, avec repli automatique sur l'export PHP.
- Documents inclus : le dossier des documents (DOL_DATA_ROOT) est ajouté fichier par fichier dans un zip, avec des exclusions configurables (par défaut : dossiers temp, cache, fichiers .tmp). Le zip contient database.sql, manifest.json et documents/.
- Chiffrement AES-256-CBC au format exact de la commande openssl enc (en-tête Salted__, PBKDF2-SHA256 10 000 itérations, PKCS7). Une sauvegarde se déchiffre sur n'importe quelle machine avec :
openssl enc -d -aes-256-cbc -pbkdf2 -in sauvegarde.zip.enc -out sauvegarde.zip - Destinations, plusieurs à la fois : copie locale (toujours), WebDAV (Nextcloud, ownCloud, kDrive, Infomaniak, Apache ou nginx DAV), stockage S3 compatible (AWS, Scaleway, OVH, Backblaze B2, Wasabi, MinIO, signature AWS v4 en pur PHP), FTP/FTPS (extension PHP ftp) et SFTP (extension PHP ssh2). Envoi en flux par curl. Chaque destination a un bouton « Tester la connexion » qui écrit puis supprime un fichier témoin et affiche le message d'erreur réel.
- Planification : tâche planifiée Dolibarr quotidienne à l'heure choisie (le module Travaux planifiés est activé à l'installation), script CLI pour un cron système, et une URL de déclenchement avec clé secrète pour les hébergements sans aucun cron. Bouton « Sauvegarder maintenant ». Un verrou empêche deux exécutions simultanées et se libère même après une erreur fatale.
- Rétention par destination : garder les N dernières sauvegardes (7 par défaut) plus la première de chaque mois pendant M mois (6 par défaut). La purge n'a lieu qu'après un envoi réussi sur la destination concernée.
- Vérification et journal : SHA-256 du fichier final, intégrité du zip, marqueur de fin dans database.sql, déchiffrement de contrôle des 64 premiers Ko. Chaque exécution est consignée (statut, taille, durée, tables, lignes, fichiers, résultat par destination, déclencheur). Alertes e-mail en cas d'échec et quand aucune sauvegarde n'a réussi depuis N jours.
- Tableau de bord (Outils, Sauvegardes) : dernière sauvegarde réussie, état de la planification, diagnostic du serveur (mysqldump, extensions, espace disque, taille estimée), destinations, trente dernières exécutions avec téléchargement et suppression du fichier local.
- Restauration en ligne de commande avec le script fourni : déchiffrement, vérification, import SQL instruction par instruction, extraction des documents.
Installation
Accueil → Configuration → Modules → « Déployer/installer un module externe », envoyez le zip puis activez BackupGuard. L'activation crée la table llx_backupguard_run, le dossier protégé documents/backupguard, la tâche planifiée quotidienne et la clé d'URL. La première sauvegarde locale fonctionne sans aucun réglage.
Réglages
- Contenu : base + documents (par défaut) ou base seulement ; motifs d'exclusion ; utilisation de mysqldump s'il existe.
- Chiffrement : activation et phrase secrète (12 caractères au minimum, jamais réaffichée). Sans la phrase secrète, une sauvegarde est illisible : notez-la ailleurs que sur le serveur.
- Destinations : une section par type avec son bouton de test. Les destinations dont l'extension PHP manque sont affichées comme non disponibles, avec la raison.
- Planification et rétention : heure de la sauvegarde quotidienne, état réel de la tâche planifiée (dernière et prochaine exécution), URL de déclenchement avec sa clé et un exemple de ligne cron, commande CLI, nombre de sauvegardes conservées, conservation mensuelle.
- Alertes : adresse e-mail (par défaut le premier administrateur), délai « aucune sauvegarde réussie depuis N jours », e-mail de test.
Droits
- Lire : tableau de bord et journal.
- Lancer : lancer une sauvegarde, télécharger et supprimer les fichiers locaux. Une sauvegarde contient toute la base : ce droit se donne avec discernement.
- Configurer : réglages (administrateurs uniquement).
Restaurer
- Récupérer le fichier dolibarr-<base>-AAAA-MM-JJ-HHMM.zip.enc depuis une destination ou le tableau de bord.
- Le déchiffrer avec openssl (voir plus haut) ou laisser le script le faire (phrase secrète demandée au clavier ou lue dans la variable d'environnement BACKUPGUARD_ENCRYPTION_PASSWORD).
- Passer Dolibarr en mode maintenance, puis sur le serveur cible :
php htdocs/custom/backupguard/scripts/restore.php sauvegarde.zip.enc --documents=/chemin/vers/documents. Le script vérifie l'archive, affiche son contenu, demande confirmation, importe database.sql (chaque table est supprimée puis recréée) et extrait documents/. - Vider le cache de Dolibarr (documents/admin/temp) et se reconnecter.
Limites connues
- Export de la base pour MySQL et MariaDB uniquement. Sur PostgreSQL le module l'indique et ne sauvegarde que les documents.
- Les vues, déclencheurs et procédures stockées ne sont pas exportés (Dolibarr n'en crée pas).
- Pas de restauration depuis l'interface web, par choix.
- FTP et SFTP dépendent des extensions PHP ftp et ssh2. WebDAV : authentification Basic uniquement (Nextcloud, ownCloud, kDrive, Apache mod_dav).
- Le chiffrement protège la copie distante, pas le serveur lui-même : qui lit la configuration de Dolibarr lit la phrase secrète.
Compatibilité
- Dolibarr 16 à 24, vérifié sur 16.0, 18.0, 20.0, 22.0, 23.0 et 24.0.
- PHP 7.4 à 8.4. Extensions zip, openssl et curl requises ; ftp et ssh2 selon la destination.
- Français et anglais inclus.
Captures
Support
Une question avant l'achat, un souci d'installation ou de mise à jour : écrivez à contact@theopequignot.fr. Je suis le développeur du module et je réponds moi-même. Support et mises à jour inclus pendant 2 ans avec l'achat sur le DoliStore.