Sauvegarde distante automatisée avec Raspberry Pi

Sauvegarde distante automatisée avec Raspberry Pi, OpenMediaVault et WireGuard

Introduction
En matière de sauvegarde, on entend souvent parler de la règle 3-2-1 : 3 copies des données, stockées sur 2 supports différents, dont 1 copie hors site. Ce projet permet de mettre en place une sauvegarde distante, sécurisée et automatisée à faible coût grâce à un Raspberry Pi équipé d’un SSD USB, OpenMediaVault, WireGuard, Rsync et Cron.

1.Schéma de fonctionnement

NAS / Freebox (domicile)

│ VPN WireGuard

Raspberry Pi distant
(OpenMediaVault + SSD USB)


Stockage local + anciennes versions

Notifications email : début de sauvegarde et résultat.

2.Matériel utilisé

Raspberry Pi 3B+

SSD USB

Raspberry Pi OS Lite 64 bits

OpenMediaVault

WireGuard

Connexion Internet

3.Prérequis

NAS ou partage SMB accessible

Serveur WireGuard opérationnel

Accès Internet sur les deux sites

SSD configuré dans OpenMediaVault

4. Installation de Raspberry Pi OS Lite

Installer Raspberry Pi OS Lite 64 bits avec Raspberry Pi Imager, activer SSH, configurer le réseau puis mettre à jour le système.

sudo apt update && sudo apt upgrade -y

5. Installation d’OpenMediaVault

Installation :

wget -O – https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

👉 Attendre la fin (10–20 min)

🌐 Accès interface

•URL : http://IP_DU_RPI

•Login par défaut lors de la première connexion, à modifier immédiatement :

 •user : admin

 •mdp : openmediavault

💾 Configurer le disque

Dans OMV :

•Stockage → Disques

•Systèmes de fichiers → Monter

•Créer un dossier partagé (ex : backup)

Tu obtiens un chemin du type : /srv/dev-disk-by-uuid-xxxxxxxxxxxxxx

👉 Note-le (utilisé dans le script)

Sinon le retrouver en SSH avec la commande df -h

6. Installation de WireGuard

Installer WireGuard puis configurer le fichier /etc/wireguard/wg0.conf.

sudo apt install wireguard -y

⚙️ Configuration

Créer :

sudo nano /etc/wireguard/wg0.conf

Exemple :

[Interface]

PrivateKey = clé privée=

Address = 10.6.0.2/24

MTU = 1420

DNS = 1.1.1.1

[Peer]

PublicKey = clé serveur=

# A utiliser en local.

#AllowedIPs = 10.0.0.4/32

#A utiliser sur un réseau différent.

AllowedIPs = 0.0.0.0/0

Endpoint = 12.12.12.12:51820 IP du serveur et port configuré

PersistentKeepalive = 21

✅ Test

sudo wg-quick up wg0

sudo wg

Arrêt :

sudo wg-quick down wg0

Cas particulier : accès au réseau de la Freebox

La commande suivante est essentielle dans certaines configurations :

sudo ip route add 192.168.1.0/24 dev wg0

Elle ajoute une route spécifique vers le réseau distant à travers le tunnel WireGuard. Sans elle, le VPN peut être connecté mais les équipements du réseau distant (Freebox, NAS, serveur SMB…) peuvent rester inaccessibles.

7. Accès au partage SMB

Créer /mnt/freebox puis le fichier /root/.smbcred contenant le nom d’utilisateur et le mot de passe du partage SMB.

🌐 4. Accès à la Freebox (SMB)

📁 Créer point de montage

sudo mkdir -p /mnt/freebox

🔐 Créer un fichier credentials

sudo nano /root/.smbcred

Contenu :

username=USER

password=PASSWORD

Sécuriser :

sudo chmod 600 /root/.smbcred

✅ Test de montage

sudo mount -t cifs //192.168.1.254/Freebox /mnt freebox -o credentials=/root/.smbcred,vers=3.0

Test :

ls /mnt/freebox Doit afficher les fichiers contenus dans le point de mntage.

Démontage :

sudo unmount /mnt/freebox

8. Notifications par email

sudo apt install mailutils -y

Configurer postfix :

•choisir : Internet Site

Test :

echo « test » | mail -s « Test RPi » mon.email@gmail,com

9. Script de sauvegarde

#!/bin/bash
set -x

WG=”wg0″
MOUNT=”/mnt/freebox”
DEST=”/srv/dev-disk-by-uuid-xxxxxxxxxxxxxxxx”
LOG=”/home/sauv-ext1/backup.log”
DATE=$(date +%F)
MAIL=”monemail@gmail.com”

echo “—————————————-” >> $LOG
echo “=== $DATE : Début sauvegarde ===” >> $LOG

echo “🚀 Début sauvegarde le $(date)” | mail -s “Backup START RPi” $MAIL

trap “sudo wg-quick down $WG 2>/dev/null” EXIT

sudo wg-quick up $WG
sudo ip route add 192.168.1.0/24 dev wg0
sleep 10

sudo mount -t cifs //192.168.1.254/Freebox $MOUNT -o credentials=/root/.smbcred,vers=3.0

sudo mkdir -p “$DEST/old_versions/$DATE”

if sudo rsync -av –backup –backup-dir=”$DEST/old_versions/$DATE” “$MOUNT/Photos/” “$DEST/” ; then
echo “✅ Sauvegarde réussie” >> $LOG
RESULT=”OK”
else
echo “❌ Erreur sauvegarde” >> $LOG
RESULT=”ERREUR”
fi

sudo umount $MOUNT
sudo wg-quick down $WG

if [ “$RESULT” = “OK” ]; then
echo “✅ Backup OK le $(date)” | mail -s “Backup OK RPi” $MAIL
else
echo “❌ Backup ERROR le $(date)” | mail -s “Backup ERROR RPi” $MAIL
fi

echo “=== $DATE : Fin sauvegarde ===” >> $LOG

[ -d “$DEST/old_versions” ] && sudo find “$DEST/old_versions” -type d -mtime +30 -exec rm -rf {} \;

🔐 Rendre exécutable

chmod +x /home/sauv-ext1/backup,sh

10. Test manuel

Exécuter : bash /home/sauv-ext1/backup.sh

Vérifier les log :

cat /home/sauv-ext1/backup.log

Ainsi que les emails reçus.

11. Automatisation Cron

crontab -e

Ajouter en bas par exemple : 0 3 * * 0 /home/sauv-ext1/backup.sh

Cette configuration lance la sauvegarde tous les dimanches à 3h00.

12.Vérifications finales

VPN fonctionnel

Montage SMB réussi

Réception des emails

Fichiers copiés

Versioning opérationnel

Nettoyage automatique des anciennes versions

13.Conclusion

Cette architecture constitue une solution économique pour mettre en œuvre une sauvegarde hors site conforme à la règle 3-2-1 grâce à un Raspberry Pi, WireGuard et OpenMediaVault.

Attention toute fois. Installer l’ensemble RPi / SSD chez une personne de confiance, elle aura accès à l’ensemble des données sur le disqe simplement en se connectant sur le RPi ou en branchant directement le SSD sur son PC.