====== 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]]