GiGaRuN Solutions
Vos métiers, nos solutions Excellence IT - La Réunion
+262 692 31 11 91
← Retour à l'accueil des guides

Sauvegarde chiffrée d'un serveur Dolibarr avec restic

Sauvegarder fichiers et bases vers un NAS — chiffré, dédupliqué, restaurable

Le principe

Un serveur qui héberge plusieurs instances Dolibarr (ERP) doit être sauvegardé de façon fiable, chiffrée et économe. La méthode présentée ici s'appuie sur restic : chaque nuit, le serveur sauvegarde toutes ses instances (fichiers + bases de données) vers un NAS distant. Les sauvegardes sont chiffrées, dédupliquées et incrémentales.

🔒Chiffré de bout en bout
Dédupliqué (jusqu'à ~10× moins d'espace)
🕑Automatique, chaque nuit
📅Rétention quotidienne / hebdo / mensuelle

Pourquoi restic plutôt qu'une archive complète quotidienne ?

La sauvegarde « classique » (un .tar.gz complet par site, chaque jour, telle que produite par certains panneaux d'hébergement) fonctionne mais montre vite ses limites dès que les données grossissent. Comparatif :

CritèreArchive complète quotidiennerestic
Espace de stockageCopie complète chaque jour (ex. 5 Go × 15 jours = 75 Go, et ça se multiplie par instance)Dédupliqué : les données stockées une seule fois + petits deltas quotidiens
ChiffrementGénéralement aucun (archive et transfert en clair)Dépôt chiffré de bout en bout
Lisibilité1 fichier par site, extraction directeDépôt géré — restauration via la commande restic (ce guide)
Restauration fineTout ou rien par archiveUn fichier, un dossier, une base, une date précise
RétentionSimple purge par nombre de joursPolitiques quotidien / hebdo / mensuel automatiques
Le seul « coût » de restic : la restauration passe par une commande plutôt qu'un simple copier-coller. Ce guide rend ce process totalement maîtrisable.

L'architecture

La chaîne de sauvegarde :

Serveur Dolibarr  →  dump des bases + fichiers

restic (chiffre & déduplique)  →  rclone (transport)

NAS distant (dépôt chiffré)

🔐
Point clé sur le transport. Si le NAS n'est joignable qu'en FTP (protocole en clair), ce n'est pas un problème : restic chiffre les données avant de les transmettre. rclone se charge alors du transport FTP. Ce qui circule et ce qui est stocké est déjà chiffré.

Éléments typiques d'une telle installation (chemins d'exemple, à adapter) :

ÉlémentEmplacement d'exemple
Script de sauvegarde/usr/local/sbin/backup-dolibarr.sh
Planification (cron)/etc/cron.d/backup-dolibarr — chaque nuit en heure creuse
Journal/var/log/backup-dolibarr.log
Dépôt resticrclone:nas:<dossier-du-serveur>/restic
Mot de passe du dépôt/root/.restic-pass (+ une copie hors serveur, cf. encadré)
Config rclone (remote FTP)/root/.config/rclone/rclone.conf
Ce qui est sauvegardéFichiers : /var/www/clients (webroots + documents)  •  Bases : dumps SQL dans /var/backups/db
🔑
Le mot de passe du dépôt est vital. Le dépôt étant chiffré, sans ce mot de passe les sauvegardes sont définitivement irrécupérables. Il faut impérativement en garder une copie hors du serveur sauvegardé (par exemple sur le NAS lui-même, dans le dossier du dépôt) : ainsi, même si le serveur est détruit, on peut restaurer.

Le script de sauvegarde (schéma)

Le principe du script exécuté chaque nuit :

#!/bin/bash
set -uo pipefail
export RESTIC_REPOSITORY="rclone:nas:<dossier-du-serveur>/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
DUMPDIR=/var/backups/db

# 1) Dump de toutes les bases (hors bases systeme)
mkdir -p "$DUMPDIR"; rm -f "$DUMPDIR"/*.sql
for db in $(mysql -N -e "SHOW DATABASES" \
    | grep -vE '^(information_schema|performance_schema|mysql|sys)$'); do
  mysqldump --single-transaction --routines --triggers "$db" > "$DUMPDIR/$db.sql"
done

# 2) Sauvegarde chiffree : fichiers + dumps
restic backup /var/www/clients "$DUMPDIR" --tag dolibarr --exclude-caches

# 3) Retention (purge automatique des anciennes)
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 6 --prune
Toute nouvelle instance Dolibarr ajoutée sur le serveur est incluse automatiquement : ses fichiers sont sous /var/www/clients et sa base est découverte par le SHOW DATABASES.

Superviser (est-ce que ça tourne ?)

En SSH sur le serveur, en root. Charger une fois les variables du dépôt :

export RESTIC_REPOSITORY="rclone:nas:<dossier-du-serveur>/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

restic snapshots     # liste les sauvegardes datées (la plus récente en bas)
tail -20 /var/log/backup-dolibarr.log   # journal de la derniere nuit
restic stats         # taille reelle occupee
restic check         # verifie l'integrite du depot (periodiquement)
Une sauvegarde saine = une ligne récente (date du jour) dans restic snapshots et une fin de journal sans erreur.

Restaurer

Les commandes supposent les deux export ci-dessus déjà faits. On restaure toujours vers un dossier neuf (ex. /restore) pour ne rien écraser, puis on recopie ce qu'il faut.

1. Voir ce qu'on peut restaurer

restic snapshots                  # choisir une date (noter son ID court)
restic ls latest                  # lister les fichiers du dernier snapshot
restic ls latest /var/backups/db  # voir les bases disponibles

2. Restaurer une instance complète (fichiers + base)

Exemple pour une instance dont les fichiers sont dans clientX/webY et la base s'appelle masite_db :

# a) Fichiers de l'instance
restic restore latest --target /restore \
  --include /var/www/clients/clientX/webY

# b) Dump de sa base
restic restore latest --target /restore \
  --include /var/backups/db/masite_db.sql

# c) Reimporter la base
mysql masite_db < /restore/var/backups/db/masite_db.sql

# d) Remettre les fichiers en place (ajuster proprietaire/chemin)
rsync -a /restore/var/www/clients/clientX/webY/ /var/www/clients/clientX/webY/

3. Restaurer un seul fichier (ex. un document perdu)

restic restore latest --target /restore \
  --include "/var/www/clients/clientX/webY/private/documents/xxx/fichier.pdf"

4. Restaurer une version d'il y a quelques jours

restic snapshots    # reperer l'ID de la date voulue (ex. a1b2c3d4)
restic restore a1b2c3d4 --target /restore --include /var/backups/db/masite_db.sql

5. Réimporter une base directement

restic dump latest /var/backups/db/masite_db.sql | mysql masite_db

6. Parcourir la sauvegarde comme un disque

mkdir -p /mnt/restic
restic mount /mnt/restic       # laisser tourner ; naviguer dans un 2e terminal
#   ls /mnt/restic/snapshots/latest/var/www/clients/...
#   (Ctrl+C pour demonter)

Reprise totale (le serveur est détruit)

Scénario catastrophe : le serveur n'existe plus. On restaure depuis le NAS sur un serveur neuf.

  1. Provisionner un serveur neuf et réinstaller la même pile applicative.
  2. Installer les outils : apt install restic rclone.
  3. Récupérer sur le NAS le mot de passe du dépôt (copie déposée dans le dossier du dépôt).
  4. Recréer le remote rclone vers le NAS (mêmes paramètres de transport).
  5. Pointer restic sur le dépôt et le mot de passe récupéré, puis restic restore latest --target /restore.
  6. Réimporter chaque base (/restore/var/backups/db/*.sql) et remettre les fichiers (/restore/var/www/clients/…).
  7. Vérifier le fichier de configuration de chaque instance Dolibarr (conf.php : chemins, base). La clé de chiffrement interne de Dolibarr y est stockée, elle est donc préservée avec les fichiers.
Bonne pratique : déposer aussi un court fichier LISEZMOI-restore.txt à côté du dépôt sur le NAS, avec les commandes essentielles — la restauration reste possible même sans ce guide sous la main.

Dépannage

Pas de nouvelle sauvegarde depuis plusieurs jours

Consulter le journal, puis lancer une sauvegarde manuelle (le script). Vérifier l'accès au NAS avec rclone lsd nas:.

Erreur d'accès au NAS

Vérifier que le NAS est joignable (port de transport ouvert, NAS allumé) et que les identifiants du remote rclone sont valides.

« repository is already locked »

Verrou résiduel après une interruption : restic unlock puis relancer.

Vérifier que tout est réellement récupérable

restic check pour l'intégrité, et périodiquement un vrai test : restaurer vers un dossier temporaire, contrôler les fichiers, puis le supprimer. Une sauvegarde jamais testée ne vaut rien.

À retenir

  • Sauvegarde quotidienne automatique, chiffrée, vers un NAS — fichiers + bases.
  • Le mot de passe du dépôt est la clé de tout : en garder une copie hors du serveur.
  • Superviser = restic snapshots + le journal. Restaurer = restic restore … --target /restore.
  • Toute nouvelle instance est incluse automatiquement.
  • Rétention automatique : quotidiens, hebdomadaires, mensuels — purge gérée par restic.
  • Tester la restauration régulièrement — c'est la seule preuve qu'une sauvegarde est bonne.
💬
Besoin d'une stratégie de sauvegarde et de reprise d'activité fiable pour vos serveurs et vos ERP ? GiGaRuN conçoit, déploie et supervise vos sauvegardes chiffrées et vos plans de reprise. Contactez-nous.