Un Raspberry Pi qui héberge des conteneurs, des fichiers ou une instance Home Assistant contient vite des données irremplaçables. Une copie manuelle ne protège ni d’une carte microSD défaillante ni d’une suppression accidentelle. Voici comment installer Restic pour envoyer une sauvegarde chiffrée vers un NAS en SFTP, avec une rétention et un vrai test de restauration.
Les 3 points clés
- Restic chiffre les fichiers avant de les envoyer vers le NAS.
- La déduplication évite de recopier inutilement les données inchangées.
- Une sauvegarde n’est fiable qu’après une restauration de test.
Résultat attendu : votre Pi crée chaque nuit un point de restauration chiffré dans un dépôt dédié du NAS, sans ouvrir le NAS sur Internet.

Prérequis et limites
Ce guide vise Raspberry Pi OS 64 bits sur Pi 3, 4 ou 5, ainsi qu’un NAS ou un second Linux fournissant SSH/SFTP. Créez sur le NAS un compte backup sans privilèges d’administration et un dossier vide, par exemple /volume1/backup/pi-restic. Ajoutez une clé SSH du Pi à ce compte. Une copie locale ne protège pas du vol ou d’un incendie : pour des données critiques, ajoutez ensuite une copie hors domicile.
Étape 1 — Installer Restic et tester SSH
sudo apt update
sudo apt install -y restic openssh-client
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "pi-restic"
ssh backup@nas-maison.local 'mkdir -p /volume1/backup/pi-restic && chmod 700 /volume1/backup/pi-restic'
Copiez le contenu de ~/.ssh/id_ed25519.pub dans les clés autorisées du compte de sauvegarde du NAS. La dernière commande doit réussir sans demander le mot de passe du NAS. Adaptez le nom d’hôte et le chemin à votre modèle de NAS.
Étape 2 — Créer le dépôt chiffré
Le mot de passe du dépôt est indispensable à toute restauration. Utilisez une phrase longue, stockez-la aussi dans un gestionnaire de mots de passe et ne la mettez jamais dans le script.
mkdir -p ~/.config/restic
umask 077
printf 'UNE_PHRASE_LONGUE_ET_UNIQUE\n' > ~/.config/restic/password
export RESTIC_PASSWORD_FILE="$HOME/.config/restic/password"
export RESTIC_REPOSITORY='sftp:backup@nas-maison.local:/volume1/backup/pi-restic'
restic init
restic init ne s’exécute qu’une fois par dépôt. En cas de permission denied, vérifiez d’abord la clé, le chemin SFTP réel et les droits du dossier sur le NAS.
Étape 3 — Écrire une sauvegarde reproductible
Créez le script suivant. Ajustez les chemins : pour Docker, incluez les fichiers compose.yml, les fichiers .env et les volumes réellement utilisés. Pour une base de données, sauvegardez un export cohérent produit par l’application plutôt que ses fichiers actifs.
mkdir -p ~/bin
nano ~/bin/restic-backup.sh
#!/bin/sh
set -eu
export RESTIC_REPOSITORY='sftp:backup@nas-maison.local:/volume1/backup/pi-restic'
export RESTIC_PASSWORD_FILE="$HOME/.config/restic/password"
restic backup /home/pi /opt/stacks --exclude /home/pi/.cache --tag raspberry-pi
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
chmod 700 ~/bin/restic-backup.sh
~/bin/restic-backup.sh

Étape 4 — Tester la restauration
Ne vous arrêtez pas au message de succès. Listez les snapshots et restaurez un fichier non sensible dans un dossier temporaire :
export RESTIC_PASSWORD_FILE="$HOME/.config/restic/password"
export RESTIC_REPOSITORY='sftp:backup@nas-maison.local:/volume1/backup/pi-restic'
restic snapshots
mkdir -p /tmp/restic-test
restic restore latest --target /tmp/restic-test --include /home/pi/IMPORTANT.txt
ls -l /tmp/restic-test/home/pi/IMPORTANT.txt
restic check
rm -rf /tmp/restic-test
Ouvrez le fichier restauré avant de supprimer le dossier de test. Pour un sinistre, arrêtez le service concerné, restaurez vers un répertoire temporaire puis recopiez les données validées.
Étape 5 — Lancer la sauvegarde chaque nuit
Dans la crontab de l’utilisateur qui possède les fichiers, ajoutez une ligne. Elle produit un journal exploitable sans afficher le mot de passe :
crontab -e
30 2 * * * /home/pi/bin/restic-backup.sh >> /home/pi/restic-backup.log 2>&1
Le lendemain, lancez tail -n 30 ~/restic-backup.log, puis restic snapshots. Refaite un test de restauration après un changement de configuration et au moins une fois par trimestre.
Checklist de validation
| Point | À vérifier |
|---|---|
| SSH | La connexion au compte backup fonctionne sans saisie interactive. |
| Secret | Le fichier password est privé et possède une copie hors du Pi. |
| Données | Les exports de bases et volumes nécessaires sont inclus. |
| Restauration | Un fichier restauré a été lu depuis le dossier de test. |
| Rétention | Le NAS a assez d’espace pour sept jours, quatre semaines et six mois. |
Vidéo de prise en main
Cette introduction à Restic complète les commandes ci-dessus. Consultez toujours la documentation correspondant à votre version.
Dépannage et variantes
- Repository does not exist : corrigez la syntaxe
sftp:user@hote:/cheminet vérifiez le chemin côté NAS. - Wrong password : sélectionnez le bon fichier dans
RESTIC_PASSWORD_FILE; sans ce secret, le dépôt n’est pas récupérable. - NAS plein : réduisez la rétention puis relancez
restic forget … --prune. - Base incohérente : créez d’abord un export
pg_dumpoumariadb-dump.
Un disque USB distinct est une variante rapide mais ne protège pas contre le vol. Un dépôt S3 compatible apporte une copie hors site, avec un coût et une configuration supplémentaires. BorgBackup est une alternative SSH solide ; Restic est très pratique pour un NAS SFTP et sa gestion de rétention.
Questions fréquentes
Restic chiffre-t-il les fichiers sur le NAS ?
Oui. Le contenu, les noms de fichiers et les métadonnées sont chiffrés côté Raspberry Pi.
Puis-je sauvegarder Home Assistant ?
Oui : créez d’abord sa sauvegarde native ou un export cohérent, puis incluez ce fichier dans Restic. Home Assistant OS suit une procédure d’accès différente.
Une carte microSD suffit-elle comme destination ?
Non. Elle reste dans le même appareil ; choisissez un NAS, un disque séparé ou du stockage hors site.
Sources officielles
Vincent Vandegans — Passionné de Raspberry Pi, Linux et informatique pratique, Vincent partage des tutoriels pour construire une maison numérique plus autonome.




