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

Configurer ensuite le disque dans l’interface OMV et noter le chemin du type /srv/dev-disk-by-uuid-xxxxxxxx.

6. Installation de WireGuard

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

sudo apt install wireguard -y

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.

8. Notifications par email

Installer mailutils et configurer Postfix en mode Internet Site.

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 {} \;

10. Test manuel

Exécuter : bash /home/sauv-ext1/backup.sh puis vérifier le fichier backup.log ainsi que les emails reçus.

11. Automatisation Cron

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.