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.
