====== Gestion des Backups ======
⚠️ **CRITIQUE** : Les backups sont essentiels à la continuité de service.
Vérifiez régulièrement leur bon fonctionnement !
===== Vue d'ensemble =====
==== Stratégie de backup ====
^ Service ^ Fréquence ^ Rétention ^ Taille moyenne ^ Critique ^
| **Généalogie** | Quotidien 2h | 30 jours | ~500 MB | ⚠️ HAUTE |
| **Paperless** | Quotidien 2h | 30 jours | ~2 GB | ⚠️ HAUTE |
| **Vaultwarden** | Quotidien 2h + 12h | 60 jours | ~50 MB | 🔴 CRITIQUE |
| **Configurations** | Hebdomadaire | 30 jours | ~100 MB | ⚠️ HAUTE |
| **Certificats SSL** | Hebdomadaire | 90 jours | ~10 MB | 🟡 MOYENNE |
==== Emplacements de stockage ====
* **Primaire :** ''/opt/backups/'' (local)
* **Secondaire :** À configurer (NAS, Cloud)
==== Scripts de backup ====
^ Script ^ Description ^ Emplacement ^
| ''backup-all.sh'' | Backup global (tous services) | ''/opt/scripts/'' |
| ''backup-genealogie.sh'' | Backup Webtrees + MariaDB | ''/opt/scripts/'' |
| ''backup-paperless.sh'' | Backup Paperless + PostgreSQL | ''/opt/scripts/'' |
| ''backup-vaultwarden.sh'' | Backup coffre-fort mots de passe | ''/opt/scripts/'' |
| ''backup-configs.sh'' | Backup configs + SSL | ''/opt/scripts/'' |
| ''check-backups.sh'' | Vérification état backups | ''/opt/scripts/'' |
===== Backups manuels =====
==== Backup complet de tous les services ====
# Lancer le backup global
sudo /opt/scripts/backup-all.sh
# Résultat :
# - /opt/backups/genealogie/YYYYMMDD-HHMMSS/
# - /opt/backups/paperless/YYYYMMDD-HHMMSS/
# - /opt/backups/vaultwarden/YYYYMMDD-HHMMSS/
# - /opt/backups/configs/YYYYMMDD-HHMMSS/
==== Backup d'un service spécifique ====
# Généalogie (Webtrees)
sudo /opt/scripts/backup-genealogie.sh
# Paperless
sudo /opt/scripts/backup-paperless.sh
# Vaultwarden (CRITIQUE)
sudo /opt/scripts/backup-vaultwarden.sh
# Configurations (Traefik, AdGuard, etc.)
sudo /opt/scripts/backup-configs.sh
==== Vérifier l'état des backups ====
# Script de vérification
sudo /opt/scripts/check-backups.sh
# Résultat attendu :
# ✅ genealogie: 450MB (il y a 0 jours)
# ✅ paperless: 1.8GB (il y a 0 jours)
# ✅ vaultwarden: 45MB (il y a 0 jours)
# ✅ configs: 95MB (il y a 2 jours)
==== Lister les backups disponibles ====
# Tous les backups
ls -lht /opt/backups/*/
# Backups d'un service spécifique
ls -lht /opt/backups/genealogie/
ls -lht /opt/backups/paperless/
ls -lht /opt/backups/vaultwarden/
# Taille totale
du -sh /opt/backups/*
===== Backups automatiques =====
==== Configuration Cron ====
Les backups automatiques sont configurés via crontab :
# Voir les tâches planifiées
sudo crontab -l
# Éditer les tâches
sudo crontab -e
**Configuration actuelle :**
# Backup quotidien à 2h du matin (tous les services)
0 2 * * * /opt/scripts/backup-all.sh
# Backup Vaultwarden supplémentaire à midi (sécurité)
0 12 * * * /opt/scripts/backup-vaultwarden.sh >> /var/log/backup-vaultwarden.log 2>&1
# Nettoyage des logs tous les lundis à 5h
0 5 * * 1 find /var/log -name "backup-*.log" -mtime +30 -delete
==== Vérifier les logs ====
# Log du backup global
tail -50 /var/log/backup-all.log
# Log Vaultwarden
tail -50 /var/log/backup-vaultwarden.log
# Logs des dernières 24h
grep "$(date +'%Y-%m-%d')" /var/log/backup-all.log
===== Restauration =====
⚠️ **ATTENTION** : La restauration écrase les données existantes !
Toujours faire un backup avant de restaurer.
==== Procédure générale de restauration ====
- Identifier le backup à restaurer
- Lire le fichier README.txt du backup
- Arrêter le service concerné
- Sauvegarder l'état actuel (sécurité)
- Restaurer les données
- Redémarrer le service
- Vérifier le fonctionnement
==== Restaurer Généalogie (Webtrees) ====
# 1. Choisir le backup
BACKUP_DIR="/opt/backups/genealogie/20260201-020000"
# 2. Lire les instructions
cat $BACKUP_DIR/README.txt
# 3. Arrêter les services
cd /opt/stacks/genealogie
docker compose down
# 4. Backup de sécurité de l'état actuel
sudo cp -r /opt/stacks/genealogie /opt/backups/genealogie-avant-restore-$(date +%Y%m%d)
# 5. Restaurer la base de données
docker compose up -d genealogie-db
sleep 10
docker exec -i genealogie-db mariadb -u root -p$(grep MYSQL_ROOT_PASSWORD .env | cut -d= -f2) < $BACKUP_DIR/genealogie-database.sql
# 6. Restaurer les données et médias
tar -xzf $BACKUP_DIR/genealogie-data.tar.gz -C /opt/stacks/genealogie
# 7. Redémarrer tout
docker compose down
docker compose up -d
# 8. Vérifier
docker logs genealogie-app --tail 30
curl -I https://genealogie.cotting.fr
==== Restaurer Paperless ====
# 1. Choisir le backup
BACKUP_DIR="/opt/backups/paperless/20260201-020000"
# 2. Arrêter
cd /opt/stacks/paperless
docker compose down
# 3. Backup de sécurité
sudo cp -r /opt/stacks/paperless /opt/backups/paperless-avant-restore-$(date +%Y%m%d)
# 4. Restaurer la base PostgreSQL
docker compose up -d paperless-db
sleep 10
docker exec -i paperless-db psql -U paperless -d paperless < $BACKUP_DIR/paperless-database.sql
# 5. Restaurer les documents
tar -xzf $BACKUP_DIR/paperless-data.tar.gz -C /opt/stacks/paperless
# 6. Redémarrer
docker compose down
docker compose up -d
# 7. Vérifier
docker logs paperless-app --tail 30
curl -I https://paperless.cotting.fr
==== Restaurer Vaultwarden ====
🔴 **TRÈS CRITIQUE** : Contient tous vos mots de passe !
Procédez avec la plus grande prudence.
# 1. Choisir le backup
BACKUP_DIR="/opt/backups/vaultwarden/20260201-020000"
# 2. Arrêter
cd /opt/stacks/vaultwarden
docker compose down
# 3. Backup de sécurité
sudo cp -r /opt/stacks/vaultwarden /opt/backups/vaultwarden-avant-restore-$(date +%Y%m%d)
# 4. Restaurer les données
tar -xzf $BACKUP_DIR/vaultwarden-data.tar.gz -C /opt/stacks/vaultwarden
# 5. Redémarrer
docker compose up -d
# 6. Vérifier
docker logs vaultwarden --tail 30
curl -I https://vaultwarden.cotting.fr
# 7. Tester la connexion avec votre compte
===== Sauvegarde externe =====
💡 **RECOMMANDATION** : Toujours avoir une copie externe des backups critiques !
==== Option 1 : Copie sur NAS ====
# Monter le NAS
sudo mount -t cifs //192.168.1.XXX/backups /mnt/nas -o username=admin,password=xxx
# Synchroniser
rsync -avz --delete /opt/backups/ /mnt/nas/docker-backups/
# Démonter
sudo umount /mnt/nas
==== Option 2 : Synchronisation Cloud (rclone) ====
# Configurer rclone (une fois)
rclone config
# Synchroniser vers Google Drive
rclone sync /opt/backups gdrive:docker-backups --progress
# Ou vers autre cloud
rclone sync /opt/backups dropbox:backups --progress
==== Automatiser la sauvegarde externe ====
Ajouter à crontab :
# Sync vers NAS/Cloud le dimanche à 4h
0 4 * * 0 /opt/scripts/sync-to-external.sh >> /var/log/sync-external.log 2>&1
===== Monitoring et alertes =====
==== Vérification quotidienne ====
Créer un script de vérification :
#!/bin/bash
# /opt/scripts/verify-backups.sh
ERRORS=0
# Vérifier que les backups ont moins de 2 jours
for service in genealogie paperless vaultwarden; do
LATEST=$(ls -td /opt/backups/$service/20* 2>/dev/null | head -1)
if [ -n "$LATEST" ]; then
AGE=$(( ($(date +%s) - $(stat -c %Y "$LATEST")) / 86400 ))
if [ $AGE -gt 2 ]; then
echo "❌ ERREUR: Backup $service trop ancien ($AGE jours)"
ERRORS=$((ERRORS+1))
fi
else
echo "❌ ERREUR: Aucun backup trouvé pour $service"
ERRORS=$((ERRORS+1))
fi
done
if [ $ERRORS -eq 0 ]; then
echo "✅ Tous les backups sont OK"
exit 0
else
echo "⚠️ $ERRORS erreur(s) détectée(s)"
# Optionnel : Envoyer une alerte
# curl -d "ALERTE: Problème backups" https://ntfy.sh/cotting-backup
exit 1
fi
==== Test de restauration ====
⚠️ **Recommandation** : Tester une restauration complète tous les 3 mois
Procédure de test :
- Créer un environnement de test séparé
- Restaurer un backup récent
- Vérifier que tout fonctionne
- Documenter les problèmes rencontrés
- Ajuster les scripts si nécessaire
===== Checklist de maintenance backups =====
==== Quotidien (automatique) ====
- [✅] Backup automatique à 2h
- [✅] Backup Vaultwarden à 12h
==== Hebdomadaire (manuel) ====
- [ ] Vérifier l'état des backups : ''sudo /opt/scripts/check-backups.sh''
- [ ] Vérifier l'espace disque : ''df -h /opt/backups''
- [ ] Vérifier les logs : ''tail -50 /var/log/backup-all.log''
==== Mensuel (manuel) ====
- [ ] Synchroniser vers stockage externe
- [ ] Vérifier l'intégrité d'un backup aléatoire
- [ ] Nettoyer les backups expirés
==== Trimestriel (manuel) ====
- [ ] **Tester une restauration complète**
- [ ] Revoir la stratégie de rétention
- [ ] Vérifier les scripts de backup
===== Ressources et liens =====
* [[infrastructure:backups:manual|Backups manuels détaillés]]
* [[infrastructure:backups:restore|Guide de restauration complet]]
* [[infrastructure:backups:verify|Vérification et tests]]
* [[infrastructure:troubleshooting|Dépannage des backups]]
===== Contacts d'urgence =====
En cas de problème critique avec les backups :
* **Admin système :** Olivier Cotting - olivier@cotting.fr
* **Scripts :** ''/opt/scripts/''
* **Documentation :** Cette page wiki
----
[[infrastructure:start|← Retour accueil]]