Skip to content

Audit Infrastructure Backup

Vérification exhaustive couches backup infrastructure Proxmox.


📊 Résumé Exécutif

État Général : ⚠️ ACCEPTABLE avec lacunes critiques

Couche Statut Dernière exec Destination Priorité fix
PBS Snapshots LXC ✅ Actif 04/02 09:03 pbs-backups (local) -
Configs Docker offsite ✅ Actif 04/02 05:00 Google Drive -
Configs Host offsite ✅ Actif 04/02 05:00 Google Drive -
PBS Datastore sync cloud ⚠️ Inconnu ? Google Drive MOYENNE
SnapRAID Parity ❌ Inactif Jamais /mnt/parity (286K!) CRITIQUE
LXC 102 (PBS) backup ❌ Manquant - Non configuré HAUTE

Actions immédiates : 1. 🔴 CRITIQUE : Corriger partition sde parity (286K → 931GB) post-upgrade 2. 🟠 HAUTE : Ajouter LXC 102 au schedule PBS backup 3. 🟡 MOYENNE : Vérifier script sync PBS datastore → Google Drive


🔍 Détail Audit par Couche

1. Proxmox Backup Server (PBS) - LXC Snapshots

Configuration Actuelle

Job PBS:
  ID: backup-92e016e4-0dfc
  Schedule: 03:00 daily
  Mode: snapshot
  Storage: pbs-backups
  Retention: keep-daily=7, keep-weekly=4, keep-monthly=3

LXC backupés:
  - 100 (docker-media)     : ✅ Actif
  - 101 (management)       : ✅ Actif
  - 103 (network-gateway)  : ✅ Actif
  - 102 (pbs)              : ❌ MANQUANT

Derniers Backups Vérifiés

LXC 100 (docker-media):
  - 2026-02-04T09:03:01Z : 6.7 GB (snapshot réussi)
  - 2026-02-03T23:03:00Z : 6.7 GB
  - 2026-02-02T23:03:02Z : 6.7 GB
  → Rétention 7 jours : ✅ OK

LXC 101 (management):
  - 2026-02-04T09:03:34Z : 2.3 GB (snapshot réussi)
  - 2026-02-03T23:03:37Z : 2.3 GB
  - 2026-02-02T23:03:35Z : 2.2 GB
  → Rétention 7 jours : ✅ OK

LXC 103 (network-gateway):
  - 2026-02-03T23:11:23Z : 2.9 GB (dernier 3 fév)
  - 2026-02-01T23:11:23Z : 2.9 GB
  → ⚠️ Backup du 4 février manquant (en cours ou échoué?)

Datastore PBS

Emplacement : /mnt/datastore/ (LXC 102)
Capacité totale : 100 GB
Utilisé : 8.4 GB (8.37%)
Disponible : 86.7 GB

Chunks déduplication : Actifs
Garbage collection : Automatique (02:00)

🔴 PROBLÈME CRITIQUE : LXC 102 (PBS) Non Backupé

Impact : - Configuration PBS non sauvegardée (datastores, schedules, users) - Scripts backup centralisés non protégés - Config rclone Google Drive non backupée - Perte LXC 102 = reconstruction manuelle complète

Recommandation :

# Ajouter LXC 102 au job PBS
# UI Proxmox : Datacenter → Backup → backup-92e016e4-0dfc
# Modifier vmid : 100,101,102,103
# OU via CLI :
pvesh set /cluster/backup/backup-92e016e4-0dfc --vmid 100,101,102,103

Justification : - Cohérence : Tous LXC Docker backupés - Circularité OK : PBS peut se backuper (datastore = filesystem normal) - Double protection : PBS local + configs rclone offsite


2. Backup Configs Docker (Offsite)

Configuration Script

Script: /usr/local/bin/backup-docker-configs.sh
Exécution: Host Proxmox
Cron: 05:00 daily
Destination: gdrive:backup/homeserver/lxc-data/
Rétention: 30 jours

Contenu Backupé

LXC 100 (docker-media) : - docker-compose.yml ✅ - prowlarr/config.xml ✅ - radarr/config.xml ✅ - sonarr/config.xml ✅ - sabnzbd/sabnzbd.ini

LXC 101 (management) : - docker-compose.yaml ✅ - coolercontrol/ ✅ - homepage/ ✅ - zensical/docs/ ✅ - zensical/zensical.toml

LXC 103 (network-gateway) : - docker-compose.yml ✅ - authelia/configuration.yml ✅ - authelia/users_database.yml ✅ - npm/data/ ✅ - wireguard/

Exclusions (par design)

❌ lxc-data/docker-103/npm/data/logs
❌ lxc-data/docker-101/zensical/site
❌ lxc-data/*/cache
❌ lxc-data/*/logs
❌ lxc-data/*/MediaCover
❌ lxc-data/*/downloads

Dernière Exécution

Date : 04/02/2026 05:00:06 CET
Statut : ✅ Success
Taille archive : ~500 MB (estimé tar.gz)
Upload Google Drive : ✅ Successful
Log : /var/log/backup-docker-configs.log

Extrait log :
[Wed Feb  4 05:00:04 AM CET 2026] ✅ Upload successful to Google Drive
[Wed Feb  4 05:00:06 AM CET 2026] Backup completed successfully

Validation Offsite

Derniers backups Google Drive :
gdrive:backup/homeserver/lxc-data/lxc-data-20260203-050001/
  → Contenu : 1.8 GB docker-100 + 22 MB docker-101 + 13 MB docker-103
  → Structure préservée : lxc-data/docker-XXX/...

✅ STATUT : OPTIMAL

Points forts : - Stratégie sélective : configs critiques uniquement (vs backup complet 52 GB) - Double protection : PBS local + rclone offsite - Upload quotidien fonctionnel - Rétention 30 jours suffisante

Optimisations possibles : - ⚠️ Vérifier configs manquants : find /mnt/lxc-data/docker-{100,101,103}/ -name "*.db" -o -name "*.yaml" | grep -v cache - 💡 Envisager : bazarr/config/config.yaml + bazarr/config/db/bazarr.db


3. Backup Configs Host (Offsite)

Configuration Script

Script: /usr/local/bin/backup-proxmox-host.sh
Exécution: Host Proxmox
Cron: 05:00 daily
Destination: gdrive:backup/homeserver/proxmox/
Rétention: 30 jours

Contenu Backupé

/etc/pve/                 ✅ Configs Proxmox VE
/etc/network/             ✅ Configuration réseau
/etc/ssh/                 ✅ Config SSH daemon
/root/.ssh/               ✅ Clés SSH root
/etc/cron.d/              ✅ Tâches cron.d
/etc/cron.daily/          ✅ Tâches quotidiennes
/etc/cron.weekly/         ✅ Tâches hebdomadaires
/etc/cron.monthly/        ✅ Tâches mensuelles
/etc/snapraid.conf        ✅ Config SnapRAID
/etc/fstab                ✅ Montages disques
/usr/local/bin/           ✅ Scripts custom

Dernière Exécution

Date : 04/02/2026 05:00:06 CET
Statut : ✅ Success
Taille archive : ~52 KB
Upload Google Drive : ✅ Successful
Log : /var/log/backup-proxmox-host.log

Extrait log :
[Wed Feb  4 05:00:04 AM CET 2026] ✅ Upload successful to Google Drive
[Wed Feb  4 05:00:06 AM CET 2026] Backup completed successfully

Validation Offsite

Derniers backups Google Drive :
proxmox-host-config-20260130-160332.tar.gz : 52 KB
proxmox-host-config-20260130-154410.tar.gz : 52 KB
proxmox-host-config-20260128-211121.tar.gz : 52 KB

✅ STATUT : OPTIMAL

Points forts : - Tous configs critiques système couverts - Archive légère (~50 KB) - Upload quotidien rapide - Structure tar préserve chemins complets (restauration facile)

Critique pour upgrade hardware : - /etc/fstab : UUIDs disques essentiels remontage post-migration - /usr/local/bin/ : Scripts backup-*.sh sauvegardés - /etc/pve/ : Config LXC, storage, networking


4. PBS Datastore Sync Google Drive

Configuration Attendue

Script: /usr/local/bin/pbs-sync-gdrive-optimal.sh
Emplacement: LXC 102 (PBS)
Cron: 04:00 daily (attendu)
Méthode: rclone sync chunks
Source: /mnt/datastore/backup/
Destination: gdrive:backup/homeserver/pbs/

⚠️ PROBLÈME : État Inconnu

Vérifications effectuées :

# Script absent dans LXC 102
$ pct exec 102 -- ls -lh /usr/local/bin/*.sh
 Aucun script trouvé

# Cron dans LXC 102
$ pct exec 102 -- crontab -l
 À vérifier manuellement

# Derniers chunks Google Drive
$ rclone ls gdrive:backup/homeserver/pbs/
 À vérifier si dossier existe

🔴 ACTION REQUISE

Étapes validation :

  1. Entrer dans LXC 102 :

    pct enter 102
    

  2. Vérifier existence script :

    ls -lh /usr/local/bin/pbs-sync-gdrive-optimal.sh
    cat /usr/local/bin/pbs-sync-gdrive-optimal.sh
    

  3. Vérifier cron :

    crontab -l
    # Attendu : 0 4 * * * /usr/local/bin/pbs-sync-gdrive-optimal.sh
    

  4. Vérifier rclone config dans LXC 102 :

    rclone listremotes
    # Attendu : gdrive: (si configuré)
    

  5. Tester upload manuel :

    rclone ls gdrive:backup/homeserver/pbs/
    

Si script manquant :

Option A : Sync depuis host (recommandé temporaire)

# Sur host Proxmox
# Ajouter au crontab :
0 4 * * * rclone sync /mnt/pve/pbs-datastore/datastore/backup/ gdrive:backup/homeserver/pbs/ --fast-list

Option B : Installer dans LXC 102

# Créer script dans LXC 102
# Installer rclone si absent
# Configurer token OAuth Google Drive


5. SnapRAID Parity Protection

Configuration Actuelle

Config: /etc/snapraid.conf
Parity file: /mnt/parity/snapraid.parity
Data disks:
  - d1: /mnt/disk1 (WD Green 1TB)
  - d2: /mnt/disk2 (Toshiba 1TB attendu)
Pool: MergerFS 2TB

🔴 PROBLÈME CRITIQUE : Parity Non Fonctionnelle

État réel :

$ lsblk -f /dev/sde
sde                                                                                                                     
├─sde1  ext4   parity    286K utilisables  /mnt/parity
├─sde2  vfat   (EFI)
├─sde3  hfs+   (HFSPLUS)
└─sde4  (Gap)

$ df -h /mnt/parity
/dev/sde1    269K   14K  236K   6% /mnt/parity

$ snapraid status
The array is empty.

$ parted /dev/sde print
Disk /dev/sde: 1000GB
Partition Table: gpt

Number  Start   End     Size    File system  Name                Flags
 1      32.8kB  326kB   293kB   ext2         Gap0                hidden
 2      326kB   8714kB  8.3MB                EFI boot            boot, esp
 3      8714kB  1832MB  1.8GB   hfs+         HFSPLUS             hidden
 4      1832MB  1832MB  307kB                Gap1                hidden

Impact : - ❌ Pool MergerFS 2TB NON PROTÉGÉ contre défaillance disque - ❌ Aucune parité calculée (array vide) - ❌ Risque perte données archives personnelles - ❌ Disque sde (WD Green 1TB) inutilisable (partition 286K vs 931GB attendu)

Cause racine : - Table de partitions GPT Mac (ancien usage) - Partitions minuscules (Gap0, EFI, HFSPLUS) - Formatage ext4 sur partition 293KB uniquement

🔧 CORRECTION PLANIFIÉE (Post-Upgrade Hardware)

Référence procédure : Voir Migration Hardware 2026

Timeline :

J-Day : Migration hardware i7-2600 → i5-6400
J+1   : Configuration iGPU passthrough
J+2   : Tests validation (Phases 1-5)
J+2   : 🔧 Phase 6.1 - Correction disque sde parity
        ├─ Reformatage /dev/sde (wipefs + parted)
        ├─ Partition unique 931GB ext4
        ├─ Mise à jour /etc/fstab (UUID)
        ├─ Premier sync SnapRAID (~30-60 min)
        └─ Activation cron sync quotidien

Justification timing : - ⚠️ Ne PAS reformater sde durant upgrade hardware (risque manipulation disques) - ✅ Attendre stabilisation système post-migration (Phase 5 validée) - ✅ Exécuter correction quand système stable (J+2)

⚠️ RISQUE ACTUEL : ACCEPTABLE Court Terme

Mitigation temporaire : - ✅ PBS snapshots LXC actifs (protection configs/applications) - ✅ Google Drive offsite actif (double protection configs) - ⚠️ Pool MergerFS non protégé MAIS : - Contenu actuel : Downloads temporaires, processing - Médias critiques : /mnt/media-bulk (lecture seule, hors pool) - Risque perte : Moyen (données reconstruisibles)

Action immédiate si upgrade retardé : - Envisager correction sde AVANT upgrade si délai > 7 jours


6. Rclone Infrastructure

Installation Host

Commande : /usr/bin/rclone
Version : v1.72.1
Config : /root/.config/rclone/rclone.conf (permissions 600)
Remote configuré : gdrive: (Google Drive)

Installation LXC 102

Statut : ⚠️ À vérifier
Attendu : rclone installé pour sync PBS datastore

Validation Token Google Drive

# Tester authentification host
$ rclone ls gdrive:backup/homeserver/
  Fonctionne (configs backupés récents)

# Tester LXC 102
$ pct exec 102 -- rclone listremotes
 ⚠️ À vérifier manuellement

✅ STATUT HOST : OPTIMAL

Points forts : - Rclone récent (v1.72.1) - Token OAuth fonctionnel - Architecture centralisée sur host (isolation sécurité)


📋 Checklist Préparation Upgrade Hardware

Backups Critiques (J-7)

  • PBS snapshots < 24h : LXC 100/101/103 backupés 04/02 09:03
  • Configs Docker offsite : Google Drive sync 04/02 05:00
  • Configs Host offsite : Google Drive sync 04/02 05:00
  • Clone dd SSD boot : /dev/sda/mnt/storage/backups/proxmox-boot-sda-YYYYMMDD.img
  • Documentation UUIDs : blkid > /mnt/storage/backups/migration-YYYYMMDD-blkid.txt
  • SMART disques : smartctl -a /dev/sd{a,b,c,d,e} > /mnt/storage/backups/migration-YYYYMMDD-smart-*.txt

Validation Restauration

  • Test restore config Docker : Vérifier extraction tar.gz Google Drive
  • Test restore config Host : Vérifier extraction tar.gz Google Drive
  • Test restore LXC PBS : Simuler pct restore 102 pbs-datastore:...

Documentation État Actuel

  • Audit backup : Ce document ✅
  • Inventory hardware : lscpu, dmidecode, lsblk sauvegardés
  • Network config : /etc/network/interfaces backupé

🎯 Plan d'Action Immédiat

Priorité 1 : CRITIQUE (Avant upgrade J-7)

  1. Clone SSD boot dd (durée : 30 min)

    dd if=/dev/sda of=/mnt/storage/backups/proxmox-boot-sda-$(date +%Y%m%d).img bs=4M status=progress
    pigz -9 /mnt/storage/backups/proxmox-boot-sda-*.img
    

  2. Documentation UUIDs/SMART (durée : 10 min)

    blkid > /mnt/storage/backups/migration-$(date +%Y%m%d)-blkid.txt
    for disk in sda sdb sdc sdd sde; do
        smartctl -a /dev/$disk > /mnt/storage/backups/migration-$(date +%Y%m%d)-smart-$disk.txt
    done
    

  3. Validation derniers backups PBS (durée : 5 min)

    pvesm list pbs-backups | grep $(date +%Y-%m-%d)
    # Vérifier présence LXC 100/101/103
    

Priorité 2 : HAUTE (Pendant upgrade J-Day à J+2)

  1. Ajouter LXC 102 au schedule PBS (durée : 2 min)

    # UI Proxmox ou CLI :
    pvesh set /cluster/backup/backup-92e016e4-0dfc --vmid 100,101,102,103
    

  2. Vérifier PBS sync Google Drive (durée : 15 min)

    pct enter 102
    ls -lh /usr/local/bin/pbs-sync-gdrive-optimal.sh
    crontab -l
    rclone listremotes
    # Si manquant : créer script ou sync depuis host
    

Priorité 3 : MOYENNE (Post-upgrade J+2)

  1. Corriger partition sde parity (durée : 1-2h)
  2. Référence : Migration Hardware 2026
  3. Reformatage /dev/sde (931GB)
  4. Premier sync SnapRAID
  5. Activation cron

  6. Tests restauration complète (durée : 1h)

  7. Restore config Docker depuis Google Drive
  8. Restore config Host depuis Google Drive
  9. Simuler restore LXC depuis PBS

📊 Métriques Backup

Espace Utilisé

Destination Espace Utilisé Capacité %
PBS datastore (local) 8.4 GB 100 GB 8.4%
Google Drive (offsite) ~10-15 GB 2 TB <1%
/mnt/parity (cassé) 14 KB 286 KB 6%

Fréquences Backup

Type Fréquence Dernière Exec Statut
PBS snapshots 03:00 04/02/2026 09:03
Configs Docker 05:00 04/02/2026 05:00
Configs Host 05:00 04/02/2026 05:00
PBS datastore sync 04:00 ? ⚠️
SnapRAID sync 02:00 Jamais

Rétentions

Type Daily Weekly Monthly Total Snapshots
PBS LXC 100 7 4 3 ~10-12
PBS LXC 101 7 4 3 ~10-12
PBS LXC 103 7 4 3 ~10-12
Configs offsite 30 - - 30

🔐 Sécurité & Redondance

Stratégie 3-2-1 : ⚠️ Partielle

3 copies :
  ✅ Production (LXC running)
  ✅ PBS local (snapshots déduplication)
  ✅ Google Drive offsite (configs tar.gz)

2 supports :
  ✅ SSD local (PBS datastore)
  ✅ Cloud (Google Drive)

1 offsite :
  ✅ Google Drive (configs essentiels)
  ⚠️ PBS datastore chunks (à vérifier)

Points de Défaillance Unique

  1. Host Proxmox :
  2. Scripts backup centralisés sur host
  3. Rclone token OAuth sur host
  4. Mitigation : Configs backupés offsite quotidien

  5. LXC 102 (PBS) :

  6. Non backupé par PBS
  7. Mitigation : Configs scripts dans backup-proxmox-host.sh
  8. À corriger : Ajouter LXC 102 au schedule

  9. Google Drive :

  10. Single offsite destination
  11. Mitigation : PBS local + 3-2-1 stratégie
  12. Acceptable pour homelab (vs multi-cloud entreprise)

📝 Recommandations Finales

Court Terme (J-7 avant upgrade)

  1. Exécuter checklist préparation (voir section ci-dessus)
  2. Clone dd SSD boot + compression
  3. Valider backups PBS < 24h tous LXC
  4. Test extraction tar.gz Google Drive configs

Moyen Terme (J-Day à J+3)

  1. Ajouter LXC 102 backup PBS (priorité haute)
  2. Vérifier/créer PBS datastore sync Google Drive
  3. Corriger partition sde parity (post-upgrade Phase 6.1)
  4. Tests restauration complète (valider procédures)

Long Terme (Post-upgrade stabilisé)

  1. 💡 Monitoring backups automatisé (Grafana/Prometheus ou Homepage)
  2. 💡 Alertes échec backup (email/webhook notifications)
  3. 💡 Documentation procédures restore (runbooks détaillés)
  4. 💡 Tests disaster recovery annuels (validation stratégie)

🎓 Conclusion

État Actuel : ⚠️ ACCEPTABLE avec Réserves

Points forts : - ✅ PBS snapshots LXC actifs et récents - ✅ Configs essentiels backupés offsite quotidien - ✅ Double protection (local + cloud) - ✅ Rétention adaptée (7/4/3 PBS, 30j offsite)

Lacunes critiques : - 🔴 SnapRAID non fonctionnel (partition sde cassée) - 🟠 LXC 102 (PBS) non backupé - 🟡 PBS datastore sync Google Drive à vérifier

Risque upgrade hardware : ✅ ACCEPTABLE

Justification : - Tous LXC protégés (PBS snapshots < 24h) - Configs critiques offsite (Google Drive) - Clone dd SSD boot planifié (J-7) - SnapRAID corrigé post-upgrade (J+2)

Recommandation finale : ✅ Procéder upgrade après exécution checklist J-7


Auditeur : Assistant Infrastructure
Validation : En attente approbation utilisateur
Prochaine révision : Post-upgrade (J+3) - Validation corrections appliquées