Tutoriel pratique pour configurer un backup VPS complet avec Restic vers un stockage distant en 2026.
Voir notre guide Restic complet.
Architecture proposée
- VPS Hetzner CX22 (4 €/mois)
- Backups Restic vers Backblaze B2 (~6 USD/To/mois)
- Backup quotidien à 03h00 UTC
- Rétention 7d-4w-12m
- Test restauration mensuel sur VPS staging
Étape 1 — Lister ce qu’il faut backuper
/etc/— config système/home/— homes utilisateurs/var/www/— sites web statiques (uploads notamment)/var/lib/postgresql/ou via pg_dump — bases/opt/— applis manuelles/etc/letsencrypt/ou config Caddy avec certs/var/lib/coolify/si Coolify hôte
Étape 2 — Pre-backup hook PostgreSQL
# /usr/local/bin/pg-pre-backup.sh
#!/bin/bash
mkdir -p /var/backups/pg
sudo -u postgres pg_dumpall --clean --if-exists | gzip > /var/backups/pg/all-databases.sql.gz
Étape 3 — Script backup principal
# /usr/local/bin/backup.sh
#!/bin/bash
set -e
# Variables d'env
source /root/.restic.env
# Pre-backup
/usr/local/bin/pg-pre-backup.sh
# Backup
restic backup \
/etc \
/home \
/var/www \
/var/backups/pg \
/opt/myapp \
--exclude='**/node_modules' \
--exclude='**/.cache' \
--tag daily
# Forget + prune
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
# Vérification intégrité (~2 min/jour)
restic check --read-data-subset=2%
# Notification optionnelle
curl -fsS https://uptime-kuma.exemple.sn/api/push/abc123?status=up&msg=BackupOK
Étape 4 — Permissions et cron
chmod +x /usr/local/bin/backup.sh
chmod 600 /root/.restic.env
# Cron quotidien
echo "0 3 * * * /usr/local/bin/backup.sh >> /var/log/restic-backup.log 2>&1" | crontab -
Étape 5 — Monitoring
- Push heartbeat vers Uptime Kuma à la fin du script
- Si pas de heartbeat dans les 25h, Uptime Kuma alerte
- Logs persistants pour debug