Module BackupGuard FR

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search


TheoPequignot-BackupGuard-logo.png
Éditeur Theo Pequignot (theopequignot.fr)
Identifiant du module 194158
Version 2.2.0
Dolibarr 16 à 24
Où l'obtenir DoliStore (BackupGuard)
Support contact@theopequignot.fr
Présentation et support modules.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 depuis le navigateur : envoi du fichier par morceaux, analyse sans rien modifier, contrôle de chaque instruction SQL, sauvegarde de sécurité de l'état actuel, restauration par petites étapes suivie en direct, boutons « Réessayer » et « Revenir à l'état d'avant » si elle s'arrête en route. Sert aussi à déménager vers un Dolibarr neuf où seul BackupGuard est installé. Un script en ligne de commande reste fourni pour les très grosses bases.
  • Mise à jour de Dolibarr : la version corrective et la version majeure suivante sont proposées ; le paquet officiel est contrôlé fichier par fichier avec les empreintes publiées par Dolibarr, une sauvegarde complète et une copie des fichiers remplacés sont faites d'abord, et un bouton remet les fichiers d'avant tant que la base n'est pas mise à niveau.

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).
  • La restauration et la mise à jour de Dolibarr sont réservées aux administrateurs.

Restaurer une sauvegarde

Depuis le navigateur

Outils, Sauvegardes, bouton « Restaurer une sauvegarde ».

  1. Envoyer le fichier .zip ou .zip.enc (avec sa phrase secrète s'il est chiffré), ou choisir une sauvegarde déjà présente sur le serveur. L'envoi se fait par morceaux de 2 Mo : la limite de taille d'envoi de PHP ne s'applique pas.
  2. Analyse, sans rien modifier : déchiffrement, intégrité, versions de Dolibarr, contenu, modules. La restauration est refusée si la sauvegarde vient d'une version plus récente que celle installée. Les avertissements (mise à niveau à prévoir, préfixe de tables différent, modules absents) sont affichés avant de continuer.
  3. Options : sauvegarde de sécurité de l'état actuel (conseillée), documents, modules externes. Confirmer en tapant le mot demandé.
  4. Contrôle du SQL : chaque instruction de la sauvegarde est vérifiée avant toute écriture ; seules passent celles d'un export, sur les tables de Dolibarr.
  5. Restauration par petites étapes, suivie en direct : la durée maximale d'exécution de PHP n'est pas un obstacle. Les mots de passe chiffrés par Dolibarr (SMTP, clés d'API) sont rechiffrés pour la nouvelle installation quand la sauvegarde est chiffrée.
  6. Se reconnecter. Si la sauvegarde vient d'une version plus ancienne, un bouton ouvre l'assistant de mise à niveau de Dolibarr.

Si la restauration s'arrête en route, « Réessayer » reprend sans rien dupliquer et « Revenir à l'état d'avant » remet la sauvegarde de sécurité.

En ligne de commande

Pour les très grosses bases, ou quand Dolibarr ne démarre plus.

  1. Récupérer le fichier dolibarr-<base>-AAAA-MM-JJ-HHMM.zip.enc depuis une destination ou le tableau de bord.
  2. 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).
  3. Passer Dolibarr en mode maintenance, puis sur le serveur cible : php htdocs/custom/backupguard/scripts/restore.php sauvegarde.zip.enc --documents=/chemin/vers/documents.
  4. Vider le cache de Dolibarr (documents/admin/temp) et se reconnecter.

Mettre à jour Dolibarr

Outils, Sauvegardes, bouton « Mettre à jour Dolibarr ». La page affiche la version installée, les vérifications (droit d'écriture du serveur web, extensions curl et zip, espace disque) et deux propositions : la dernière version corrective, et la version majeure suivante (Dolibarr se met à jour une version majeure à la fois).

  1. Préparer, sans rien modifier : téléchargement du paquet officiel, puis contrôle de chaque fichier (PHP, JavaScript, SQL de migration, images) avec les empreintes publiées sur dolibarr.org et, pour ce qu'elles ne couvrent pas, celles de la version sur GitHub. Un fichier altéré ou inconnu fait refuser la mise à jour.
  2. Confirmer : sauvegarde de sécurité complète, copie des fichiers qui vont être remplacés, puis écriture des nouveaux fichiers. La configuration et le dossier custom ne sont jamais touchés.
  3. Mettre la base à niveau avec l'assistant de Dolibarr, ouvert par un bouton (upgrade.unlock depuis Dolibarr 17).
  4. Tant que la base n'est pas mise à niveau, un bouton remet les fichiers d'avant.

Sous Docker, les fichiers de Dolibarr font partie de l'image : la page donne la marche à suivre (changer la version de l'image) au lieu de remplacer les fichiers.

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).
  • Une sauvegarde ne se restaure que sur une version de Dolibarr identique ou plus récente.
  • La mise à jour de Dolibarr demande que le serveur web puisse écrire dans les fichiers de Dolibarr ; sinon la page l'indique et rien n'est modifié. Les modules externes ne sont pas mis à jour.
  • 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

Versions

  • 2.2.0 (2 octobre 2026) : mise à jour recommandée à tous. Les scripts en ligne de commande (scripts/backup.php et scripts/restore.php) pouvaient être appelés par le serveur web sans connexion ; ils ne répondent plus qu'en ligne de commande. Restauration : chaque instruction SQL est contrôlée, restauration entre serveurs différents (MySQL 8 et MariaDB), boutons « Réessayer » et « Revenir à l'état d'avant ». Mise à jour de Dolibarr : tous les fichiers du paquet sont contrôlés. Export : colonnes BIT et JSON corrigées.
  • 2.1.0 (2 octobre 2026) : mise à jour de Dolibarr depuis le module.
  • 2.0.0 (2 octobre 2026) : restauration depuis le navigateur, modules externes inclus dans la sauvegarde, mots de passe chiffrés transportés vers la nouvelle installation.
  • 1.0.0 (2 octobre 2026) : première version.

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. La présentation complète du module, ses captures, ses questions fréquentes et le formulaire de support sont sur modules.theopequignot.fr. L’achat se fait sur le DoliStore.