Comment sauvegarder et restaurer les données Docker sur un NAS Synology avec un disque externe

Dans cet article, nous allons vous montrer comment sauvegarder vos volumes Docker et les données de Portainer sur un disque externe, ce qui est essentiel lorsque vous devez effectuer des opérations telles que le remplacement des disques durs sur votre NAS Synology, ou pour toute autre forme de sauvegarde ou migration de vos containers Docker.

Prérequis

Avant de commencer, assurez-vous que :

  • Vous avez un NAS Synology avec un volume Docker configuré.
  • Vous avez un disque USB ou un support externe monté sur votre NAS.
  • Vous utilisez Portainer pour gérer vos containers Docker.
  • Vous avez un accès SSH à votre NAS pour exécuter des commandes.

Étape 1 : Monter votre disque externe

Sur votre NAS Synology, vérifiez que votre disque externe est bien monté. Vous pouvez le faire en exécutant la commande suivante en SSH :

mount | grep usb

Cela vous permettra de localiser votre disque. Il est généralement monté sous /volumeUSB1/usbshare.

Étape 2 : Préparer le script de sauvegarde

Créez un script shell qui va sauvegarder tous vos volumes Docker et les données de Portainer sur votre disque externe. Voici le script à utiliser :

#!/bin/bash

# --- Configuration ---
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
BASE_BACKUP_DIR="/volumeUSB1/usbshare/volumes_docker"
CURRENT_BACKUP_DIR="$BASE_BACKUP_DIR/backup_$TIMESTAMP"
LOGFILE="/var/log/backup_docker_$TIMESTAMP.log"

# --- Vérifier que le dossier USB est monté ---
if [ ! -d "$BASE_BACKUP_DIR" ]; then
  echo "📁 Création du dossier $BASE_BACKUP_DIR..." | tee -a "$LOGFILE"
  mkdir -p "$BASE_BACKUP_DIR"
fi

mkdir -p "$CURRENT_BACKUP_DIR"

echo "✅ Dossier de sauvegarde : $CURRENT_BACKUP_DIR" | tee -a "$LOGFILE"

# --- Arrêt temporaire de Docker ---
echo "⏹️ Arrêt de Docker..." | tee -a "$LOGFILE"
docker stop $(docker ps -q)  # Arrêter tous les containers Docker

# --- Sauvegarde des volumes Docker ---
echo "📦 Sauvegarde des volumes Docker..." | tee -a "$LOGFILE"
rsync -aH --progress /volume1/@docker/volumes/ "$CURRENT_BACKUP_DIR/volumes/" | tee -a "$LOGFILE"

# --- Sauvegarde de Portainer (si présent) ---
if [ -d "/volume1/docker/portainer" ]; then
  echo "🧠 Sauvegarde de Portainer..." | tee -a "$LOGFILE"
  rsync -aH /volume1/docker/portainer/ "$CURRENT_BACKUP_DIR/portainer/" | tee -a "$LOGFILE"
else
  echo "⚠️ Portainer non trouvé dans /volume1/docker/portainer — ignoré." | tee -a "$LOGFILE"
fi

# --- Redémarrage de Docker ---
echo "▶️ Redémarrage de Docker..." | tee -a "$LOGFILE"
docker start $(docker ps -aq)  # Démarrer tous les containers Docker

echo "✅ Sauvegarde terminée avec succès !" | tee -a "$LOGFILE"
echo "📝 Log enregistré dans : $LOGFILE"

Étape 3 : Rendre le script exécutable

Une fois que vous avez créé ce script, assurez-vous qu’il est exécutable. Pour cela, exécutez la commande suivante :

sudo chmod +x /usr/local/bin/backup_docker.sh

Cela rendra le script exécutable. Vous pouvez maintenant l’exécuter à tout moment pour sauvegarder vos volumes Docker et Portainer.

Étape 4 : Lancer la sauvegarde

Exécutez le script pour sauvegarder vos volumes Docker et les données de Portainer. Lancez-le avec la commande suivante :

sudo /usr/local/bin/backup_docker.sh

Le script effectuera plusieurs tâches :

  • Il arrêtera tous les containers Docker en cours d’exécution.
  • Il effectuera une sauvegarde des volumes Docker dans le répertoire de votre disque externe.
  • Il sauvegardera les données de Portainer (si vous l’utilisez) dans le même répertoire.
  • Enfin, il redémarrera vos containers Docker après la sauvegarde.

Étape 5 : Restaurer les données après remplacement des disques

Si vous avez remplacé vos disques durs et souhaitez restaurer les données, vous devrez :

  1. Connecter à nouveau votre disque externe à votre NAS.
  2. Restaurer les volumes Docker et les données de Portainer en utilisant rsync.

Voici la commande de base pour restaurer les volumes Docker :

rsync -aH --progress /volumeUSB1/usbshare/volumes_docker/ /volume1/@docker/volumes/

Cela rétablira vos volumes Docker à partir de la sauvegarde. Si vous avez sauvegardé Portainer, vous pouvez également restaurer les fichiers dans le répertoire correspondant.

Remplacement des disques durs et réinstallation de DSM

Une fois que vous avez effectué une sauvegarde complète de vos volumes Docker et de la configuration de Portainer, vous pouvez procéder au remplacement des disques durs de votre NAS Synology. Voici les grandes étapes :

  1. Changer les disques durs :
    Éteignez votre NAS, retirez les anciens disques durs, puis insérez les nouveaux disques. Assurez-vous que les nouveaux disques sont compatibles avec votre modèle de NAS.
  2. Réinstaller DSM (DiskStation Manager) :
    Lorsque les disques durs sont installés, redémarrez votre NAS. Vous devrez réinstaller DSM, le système d’exploitation de votre NAS Synology. Suivez les instructions sur l’écran pour réinstaller DSM à l’aide de l’outil Synology Assistant ou via l’interface Web.
  3. Configurer DSM :
    Une fois DSM réinstallé, configurez les paramètres de base de votre NAS (comme le réseau, les utilisateurs, les groupes, etc.).

Réinstaller Container Manager et Portainer

Une fois que DSM est installé et configuré, vous pouvez procéder à l’installation de Container Manager et Portainer pour retrouver votre environnement de conteneurs.

Installer Portainer :
Une fois Container Manager installé, vous pouvez installer Portainer, une interface graphique pour gérer vos conteneurs Docker. Vous pouvez l’installer soit via la ligne de commande Docker dans Container Manager, soit via l’interface graphique de Container Manager. Si vous préférez la ligne de commande, voici la commande pour créer un conteneur Portainer :

Installer Container Manager :
Allez dans le Centre de paquets de DSM et installez Container Manager (anciennement Docker). Container Manager vous permet de gérer vos conteneurs Docker directement depuis l’interface DSM.

docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Restaurer les volumes Docker et Portainer

Maintenant que Container Manager et Portainer sont installés, vous pouvez restaurer vos volumes Docker et les données de Portainer à partir de la sauvegarde que vous avez effectuée sur le disque externe.

Restaurer les volumes Docker

  1. Monter le disque USB :
    Si ce n’est pas déjà fait, branchez votre disque USB contenant les sauvegardes sur votre NAS Synology. Vous pouvez vérifier son point de montage avec la commande suivante : bashCopierModifier
mount | grep usb

Cela vous permettra de savoir où se trouvent vos sauvegardes.

Restaurer les volumes Docker :
Utilisez la commande rsync pour restaurer les données des volumes Docker sauvegardés :

rsync -aH --progress /volumeUSB1/usbshare/volumes_docker/ /volume1/@docker/volumes/
  1. Cela va restaurer la base de données de Portainer, vous permettant de retrouver votre interface et vos configurations.

Redémarrer et vérifier les conteneurs Docker

  1. Vérifier les conteneurs existants :
    Une fois que les volumes Docker et les données de Portainer ont été restaurés, vous pouvez vérifier si les conteneurs sont toujours présents en utilisant la commande suivante :
docker ps -a

Si vos conteneurs sont présents, vous pouvez les redémarrer avec la commande suivante :

docker start <nom_du_conteneur>

Recréer les conteneurs (si nécessaire) :
Si vous utilisez des fichiers docker-compose.yml pour gérer vos services, vous pouvez restaurer ces fichiers et redémarrer les conteneurs avec Docker Compose :

docker-compose up -d

Vérifier l’état des services :
Utilisez l’interface de Portainer ou les commandes Docker pour vérifier que tous les services fonctionnent correctement et que les volumes sont bien montés.

Pour voir les logs d’un conteneur spécifique, vous pouvez utiliser la commande :

docker logs <nom_du_conteneur>

Conclusion

Restaurer un environnement Docker sur un NAS Synology après un changement de disques durs nécessite quelques étapes, mais avec les bonnes sauvegardes et un peu de préparation, cela peut être effectué assez facilement. Une fois Container Manager et Portainer réinstallés et vos volumes et données restaurés, vous serez en mesure de retrouver tous vos services Docker dans l’état où ils étaient avant l’upgrade de vos disques durs.

Si vous avez suivi toutes les étapes correctement, vos conteneurs devraient être opérationnels et vos volumes Docker intacts. En cas de problème, n’hésitez pas à consulter les logs Docker ou Portainer pour diagnostiquer d’éventuelles erreurs.

Une deuxieme méthode plus simple: (voir vidéo en fin d’article – merci à son créateur -IT Connect)

Absolument ! Voici la traduction détaillée du tutoriel pour votre blog, en français, basée sur le contenu de la vidéo.


NAS Synology : Comment Sauvegarder et Restaurer Fiablement Vos Conteneurs Docker

Utiliser des applications dans des conteneurs Docker sur un NAS Synology est incroyablement pratique et efficace. Cependant, que se passe-t-il si quelque chose tourne mal ? Une défaillance de disque, un volume corrompu, ou même une suppression accidentelle pourrait effacer la configuration de votre conteneur et ses précieuses données. Contrairement aux paquets Synology standards, il n’existe pas de bouton unique et intégré pour sauvegarder absolument tout concernant vos conteneurs Docker.

Pas d’inquiétude ! Dans ce tutoriel, basé sur l’excellent guide vidéo de Florian d’IT-Connect, nous allons vous montrer une méthode robuste pour sauvegarder et restaurer vos conteneurs Docker sur votre NAS Synology, vous assurant de pouvoir récupérer après un incident.

Le Concept Clé : Séparer les Données et la Configuration

La clé pour réussir la sauvegarde des conteneurs Docker sur Synology réside dans la compréhension que nous devons gérer deux parties distinctes :

  1. Les Données du Conteneur : Ce sont les données persistantes que votre application génère et utilise (par ex., bases de données, fichiers utilisateur, fichiers de configuration spécifiques à l’application). Sur Synology, elles sont typiquement stockées dans un dossier sur le volume de votre NAS que vous mappez (liez) à l’intérieur du conteneur lors de sa création.
  2. La Configuration du Conteneur : Elle définit comment le conteneur s’exécute – l’image Docker utilisée, les ports réseau, les variables d’environnement, les mappages de volumes, les limites CPU/mémoire, etc. Cette configuration existe au sein de l’application Container Manager de Synology (anciennement le paquet Docker).

Notre stratégie consiste à sauvegarder ces deux composants séparément, puis à les combiner lors de la restauration.

Prérequis

  • Un NAS Synology avec DiskStation Manager (DSM).
  • Le paquet Container Manager installé (si vous êtes sur DSM 7.2+). Si vous êtes sur une version DSM plus ancienne, ce paquet s’appelle Docker. Les étapes sont largement identiques.
  • Le paquet Hyper Backup installé depuis le Centre de Paquets Synology.
  • Des conteneurs Docker en cours d’exécution, avec leurs données persistantes mappées vers des dossiers sur les volumes de votre NAS (ceci est crucial !).

Exemple : Nous utiliserons Vaultwarden (un gestionnaire de mots de passe auto-hébergé populaire) comme exemple, en supposant que ses données sont mappées depuis le dossier /volume1/docker/vaultwarden sur le NAS vers le chemin /data à l’intérieur du conteneur. Adaptez les chemins selon votre propre configuration.


Partie 1 : Sauvegarder Votre Conteneur Docker

Étape 1.1 : Sauvegarder les Données du Conteneur (Avec Hyper Backup)

Cette étape sauvegarde les données réelles générées par votre application conteneurisée. Hyper Backup est l’outil parfait pour cela.

  1. Ouvrez Hyper Backup : Lancez l’application Hyper Backup sur votre DSM.
  2. Créez une Nouvelle Tâche de Sauvegarde : Cliquez sur l’icône « + » en haut à gauche et sélectionnez « Tâche de sauvegarde de données ».
  3. Choisissez la Destination : Sélectionnez où vous souhaitez stocker la sauvegarde. Les options incluent :
    • Un autre NAS Synology (Périphérique NAS distant)
    • Un dossier partagé local ou un lecteur USB (bon pour un accès rapide, mais pas hors site)
    • Synology C2 Storage (le cloud de Synology)
    • Divers fournisseurs de cloud public (compatible S3, Google Drive, Dropbox, Microsoft Azure, etc.)
    • Recommandation : Pour une protection robuste (règle 3-2-1), envisagez une destination hors site comme un NAS distant ou un stockage cloud en plus d’une sauvegarde locale si possible. Pour cette démo, nous choisirons « Dossier local & USB ». Cliquez sur « Suivant ».
  4. Sélectionnez le Dossier de Destination : Choisissez le dossier partagé sur votre NAS (ou le lecteur USB) où l’archive de sauvegarde sera stockée. Vous pouvez également créer un nom de répertoire spécifique pour cette sauvegarde (par ex., « Sauvegardes Docker »). Cliquez sur « Suivant ».
  5. Sélectionnez les Données Source : C’est la partie cruciale. Naviguez à travers les volumes de votre NAS et sélectionnez le ou les dossier(s) contenant les données de vos conteneurs Docker.
    • Dans notre exemple, nous irions dans le dossier partagé docker et cocherions la case à côté du sous-dossier vaultwarden.
    • Astuce Pro : Si vous organisez toutes vos données Docker sous un dossier parent unique (comme /volume1/docker/), vous pouvez simplement sélectionner ce dossier parent docker pour sauvegarder les données de tous vos conteneurs qu’il contient en une seule tâche. Cliquez sur « Suivant ».
    • Note : Hyper Backup peut vous demander si vous souhaitez sauvegarder des applications. Vous pouvez ignorer cela pour cette tâche spécifique, car nous nous concentrons uniquement sur les dossiers de données Docker.
  6. Configurez les Paramètres de Sauvegarde :
    • Nom de la tâche : Donnez à votre tâche un nom descriptif (par ex., « Sauvegarde Données Docker »).
    • Planification : Activez la planification de la sauvegarde (recommandé). Définissez la fréquence (par ex., Exécuter les jours suivants : Quotidiennement, Heure d’exécution : 23:00).
    • Vérification de l’intégrité : Activez cette option pour vérifier périodiquement l’intégrité de la sauvegarde.
    • Compression & Chiffrement : Activez la compression (généralement recommandé). Le chiffrement côté client ajoute de la sécurité mais nécessite de gérer le mot de passe/la clé avec soin (la perte rend la sauvegarde inutilisable).
    • Cliquez sur « Suivant ».
  7. Configurez les Paramètres de Rotation : Activez la rotation des sauvegardes pour gérer l’espace de stockage. Cela empêche les sauvegardes de croître indéfiniment.
    • Choisissez une stratégie. « À partir des versions les plus anciennes » ou « Smart Recycle » sont courants.
    • Définissez le « Nombre maximal de versions conservées » (par ex., 30 versions pour environ un mois de sauvegardes quotidiennes). Ajustez selon vos besoins et votre capacité de stockage.
    • Cliquez sur « Appliquer ».
  8. Sauvegarde Initiale : Hyper Backup vous demandera si vous souhaitez sauvegarder maintenant. Cliquez sur « Oui » pour exécuter la première sauvegarde.

(Référence Vidéo : 2:44 – 3:28)

Étape 1.2 : Sauvegarder la Configuration du Conteneur (Avec Container Manager)

Cette étape enregistre les paramètres utilisés pour exécuter le conteneur lui-même. Ceci est un processus manuel.

  1. Ouvrez Container Manager : Lancez l’application Container Manager sur votre DSM.
  2. Sélectionnez le Conteneur : Allez dans la section « Conteneur » du menu de gauche. Sélectionnez le conteneur que vous souhaitez sauvegarder (par ex., vaultwarden).
  3. Exportez les Paramètres :
    • Cliquez sur le menu déroulant « Action ».
    • Sélectionnez « Exporter ».
  4. Choisissez le Type d’Export :
    • Vous verrez des options comme « Exporter les paramètres du conteneur » et « Exporter le contenu et les paramètres du conteneur ».
    • Choisissez « Exporter les paramètres du conteneur ». Nous voulons uniquement la configuration, car les données sont gérées par Hyper Backup.
  5. Choisissez la Destination :
    • Sélectionnez « Exporter vers un ordinateur local » (Recommandé). Cela télécharge un fichier .json directement sur votre ordinateur.
    • Alternativement, vous pouvez exporter vers un dossier sur le NAS, mais assurez-vous que ce dossier est également inclus dans une routine de sauvegarde !
  6. Enregistrez le Fichier : Sauvegardez le fichier .json téléchargé dans un endroit sûr. Nommez-le de manière descriptive (par ex., vaultwarden-config-sauvegarde-AAAAMMJJ.json).
  7. Répétez : Répétez ce processus d’exportation pour chaque conteneur critique que vous exécutez.
  8. Rappel : Vous devez ré-exporter manuellement la configuration chaque fois que vous apportez des modifications importantes aux paramètres d’un conteneur (comme changer les ports, les variables d’environnement ou les mappages de volume).

(Référence Vidéo : 3:38 – 4:00 & 5:41 – 6:14)


Partie 2 : Restaurer Votre Conteneur Docker

Simulons un désastre où votre conteneur Vaultwarden a disparu et son dossier de données (/volume1/docker/vaultwarden) a été supprimé.

(Référence Vidéo : 7:00 – 7:24 montre la suppression)

Étape 2.1 : Restaurer la Configuration du Conteneur (Avec Container Manager)

D’abord, nous recréons la structure du conteneur en utilisant la configuration sauvegardée.

  1. Ouvrez Container Manager.
  2. Importez la Configuration :
    • Cliquez sur le menu déroulant « Action ».
    • Sélectionnez « Importer ».
  3. Sélectionnez la Source : Choisissez « À partir d’un périphérique local » (si vous avez téléchargé le .json sur votre PC) ou « À partir de ce DSM » (si vous l’avez exporté vers un dossier du NAS).
  4. Téléversez le Fichier : Cliquez sur « Parcourir » et sélectionnez le fichier de configuration .json que vous avez sauvegardé précédemment pour Vaultwarden.
  5. Nommez le Conteneur : Entrez le nom souhaité pour le conteneur (généralement le nom d’origine, par ex., vaultwarden).
  6. Cliquez sur « Importer ». Container Manager utilisera les paramètres du fichier .json pour télécharger l’image Docker correcte (si elle n’est pas déjà présente) et recréer le conteneur avec tous ses paramètres d’origine (ports, volumes, variables). Le conteneur sera créé mais sera probablement à l’état « Arrêté ».

(Référence Vidéo : 7:30 – 8:01)

Étape 2.2 : Restaurer les Données du Conteneur (Avec Hyper Backup)

Maintenant, nous restaurons les données de l’application dans le dossier de volume mappé (que l’étape d’importation a probablement recréé, mais vide).

  1. Ouvrez Hyper Backup.
  2. Sélectionnez la Tâche de Sauvegarde : Choisissez la tâche « Sauvegarde Données Docker » que nous avons créée plus tôt.
  3. Ouvrez l’Explorateur de Sauvegarde : Cliquez sur l’icône de restauration (ressemble souvent à une horloge avec une flèche anti-horaire). Sélectionnez la version de sauvegarde spécifique (date/heure) à partir de laquelle vous souhaitez restaurer.
  4. Naviguez vers les Données : Dans la fenêtre de l’Explorateur de Sauvegarde, naviguez à l’intérieur de la sauvegarde jusqu’au dossier spécifique du conteneur que vous restaurez (par ex., entrez dans le dossier docker, puis sélectionnez le dossier vaultwarden).
  5. Cliquez sur « Restaurer » : Sélectionnez le dossier vaultwarden et cliquez sur le bouton « Restaurer ». Assurez-vous de restaurer à l’emplacement d’origine. Hyper Backup devrait proposer cela par défaut. N’utilisez pas « Copier vers… » sauf si vous le souhaitez intentionnellement ailleurs.
  6. Confirmez l’Écrasement : Confirmez que vous souhaitez restaurer les fichiers, en écrasant potentiellement ceux existants (ce qui devrait être correct puisque le dossier a été recréé vide ou que vous avez supprimé son contenu).
  7. Patientez : Laissez Hyper Backup terminer la restauration des données.

(Référence Vidéo : 8:26 – 9:01)

Étape 2.3 : Démarrer le Conteneur Restauré

Avec la configuration importée et les données restaurées, il est temps de démarrer le conteneur.

  1. Retournez dans Container Manager.
  2. Sélectionnez le Conteneur : Trouvez le conteneur vaultwarden (qui devrait maintenant exister mais être arrêté).
  3. Démarrez : Cliquez sur le menu déroulant « Action » et sélectionnez « Démarrer ».
  4. Patientez : Donnez au conteneur quelques instants pour s’initialiser.

(Référence Vidéo : 9:07 – 9:21)

Étape 2.4 : Vérification

  1. Accédez à Votre Application : Ouvrez votre navigateur web et allez à l’URL de votre instance Vaultwarden.
  2. Connectez-vous : Essayez de vous connecter avec vos identifiants.
  3. Vérifiez les Données : Vérifiez que vos données (mots de passe, paramètres dans Vaultwarden) sont présentes et correspondent à l’état au moment où la sauvegarde a été effectuée.

(Référence Vidéo : 9:50 – 10:01)


Considérations Importantes & Bonnes Pratiques

  • Automatisez les Sauvegardes de Données : Utilisez la fonction de planification d’Hyper Backup pour des sauvegardes régulières et automatisées de vos volumes de données Docker. Quotidiennement est souvent un bon point de départ.
  • Sauvegardes Manuelles de la Configuration : N’oubliez pas d’exporter manuellement la configuration du conteneur (fichier .json) chaque fois que vous modifiez ses paramètres dans Container Manager. Stockez ces fichiers en lieu sûr.
  • Fréquence de Sauvegarde (RPO) : Décidez de la quantité de données que vous pouvez vous permettre de perdre (Recovery Point Objective). Si vous mettez à jour les données fréquemment, vous pourriez avoir besoin de sauvegardes Hyper Backup plus fréquentes que simplement quotidiennes.
  • Rotation : Utilisez la rotation d’Hyper Backup pour garder les sauvegardes gérables et éviter de saturer votre espace de stockage.
  • Testez Vos Restaurations : Testez périodiquement le processus de restauration pour vous assurer qu’il fonctionne et que vous êtes à l’aise avec les étapes avant qu’un désastre ne survienne.
  • Règle de Sauvegarde 3-2-1 : Pour les données critiques, visez trois copies de vos données, sur deux types de supports différents, avec au moins une copie hors site (par ex., sauvegarde locale sur NAS + sauvegarde cloud ou sauvegarde sur NAS distant).

Conclusion

Bien que Synology n’offre pas (encore !) de solution de sauvegarde de conteneur Docker en un clic, la combinaison d’Hyper Backup pour les volumes de données et des exportations manuelles de configuration depuis Container Manager fournit une stratégie solide et fiable. En sauvegardant les deux composants, vous pouvez restaurer en toute confiance vos applications conteneurisées et leurs données après des problèmes inattendus. N’oubliez pas de configurer des sauvegardes de données régulières et de sauvegarder assidûment vos fichiers de configuration après modification !

Bon « containering » !