diff --git a/docs/homelab-actuel/proxmox-backup-server.md b/docs/homelab-actuel/proxmox-backup-server.md new file mode 100644 index 0000000..6dfcc34 --- /dev/null +++ b/docs/homelab-actuel/proxmox-backup-server.md @@ -0,0 +1,689 @@ +--- +sidebar_position: 5 +tags: [proxmox, backup, pbs, wireguard, vps, sécurité, homelab] +last_update: + date: 2026-01-03 +--- + +# Proxmox Backup Server - Instances locale et distante sécurisées + +Proxmox Backup Server (PBS) est la solution de sauvegarde dédiée pour les environnements Proxmox VE. L'infrastructure du homelab utilise une architecture **3-2-1** avec deux instances PBS : + +- **PBS local** : Sauvegarde primaire des VMs sur stockage NFS +- **PBS distant (VPS)** : Sauvegarde secondaire offsite pour la redondance + +Cette architecture garantit la disponibilité des sauvegardes même en cas de sinistre majeur affectant le homelab. + +## Architecture globale + +### Principe de fonctionnement + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ HOMELAB │ +│ ┌──────────────┐ Backup ┌─────────────────┐ │ +│ │ Proxmox VE │──────────────▶│ PBS Local │ │ +│ │ (Hyperviseur)│ Toutes les │ (192.168.100.40)│ │ +│ │ │ 6 heures │ │ │ +│ └──────────────┘ │ Datastore: │ │ +│ │ nfs-storage │ │ +│ └────────┬────────┘ │ +│ │ │ +│ Sync │ Pull │ +│ (Dimanche 1h) │ +└──────────────────────────────────────────┼──────────────────────┘ + │ + WireGuard Tunnel + (10.200.0.0/24) + │ +┌──────────────────────────────────────────┼──────────────────────┐ +│ VPS │ +│ ┌───────▼─────────┐ │ +│ │ PBS Distant │ │ +│ │ (TellPBS) │ │ +│ │ │ │ +│ │ Datastore: │ │ +│ │ remote-backup │ │ +│ │ │ │ +│ │ Rétention: │ │ +│ │ 26 semaines │ │ +│ └─────────────────┘ │ +└──────────────────────────────────────────────────────────────────┘ +``` + +### Caractéristiques de sécurité + +- **Chiffrement end-to-end** : Les sauvegardes sont chiffrées côté client (PVE) avant envoi au PBS +- **Tunnel WireGuard** : Toute communication inter-sites transite par un tunnel VPN chiffré +- **Principe du moindre privilège** : Le VPS peut uniquement accéder au port 8007 du PBS local pour tirer les sauvegardes +- **Protection contre compromission** : Le homelab ne peut pas accéder au PBS distant, empêchant un attaquant de modifier ou détruire les sauvegardes offsite +- **Pare-feu strict** : Seul le trafic nécessaire est autorisé sur le tunnel (port 8007 depuis VPS vers PBS local, ICMP bidirectionnel) + +## Instance locale PBS + +### Contexte + +Le PBS local est la cible primaire des sauvegardes Proxmox VE. Il stocke les sauvegardes sur un datastore NFS monté, offrant capacité et performance adaptées à des sauvegardes fréquentes. + +### Création des utilisateurs + +Le PBS local nécessite deux utilisateurs distincts avec des permissions différentes : + +![Création utilisateur backup](/img/homelab-actuel/pbs-instances/local_01_creation_user_backup.png) + +**Utilisateur `backup@pbs`** : +- **User name** : `backup` +- **Realm** : `Proxmox Backup authentication server` +- **Rôle** : Utilisé par Proxmox VE pour écrire les sauvegardes + +**Utilisateur `remote@pbs`** : +- **User name** : `remote` +- **Realm** : `Proxmox Backup authentication server` +- **Rôle** : Utilisé par le PBS distant pour lire les sauvegardes + +### Attribution des permissions + +![Permissions utilisateurs](/img/homelab-actuel/pbs-instances/local_02_permission_user_backup.png) + +**Configuration des permissions** : + +| Utilisateur | Path | Rôle | Usage | +| ------------ | ------------------------ | ----------------- | ------------------------------------------ | +| `backup@pbs` | `/datastore/nfs-storage` | `DatastoreBackup` | Écriture des sauvegardes depuis Proxmox VE | +| `backup@pbs` | `/datastore/nfs-storage` | `DatastoreReader` | Lecture des sauvegardes | +| `remote@pbs` | `/datastore/nfs-storage` | `DatastoreReader` | Lecture des sauvegardes par le PBS distant | + +Cette séparation des privilèges garantit que : +- Proxmox VE peut écrire ses sauvegardes (`DatastoreBackup`) et les lire (`DatastoreReader`) +- Le PBS distant peut uniquement lire (`DatastoreReader`), pas écrire, modifier ou supprimer + +### Configuration Proxmox VE + +#### Ajout du backend de stockage PBS + +![Configuration stockage PVE - Général](/img/homelab-actuel/pbs-instances/local_03_pve_storage_backend_general.png) + +**Paramètres** : +- **ID** : `PBS` +- **Server** : `192.168.100.40` (IP du PBS local) +- **Username** : `backup@pbs` +- **Datastore** : `nfs-storage` + +Proxmox VE peut maintenant sauvegarder directement vers le PBS local. + +#### Activation du chiffrement + +![Configuration chiffrement](/img/homelab-actuel/pbs-instances/local_04_pve_storage_backend_encryption.png) + +**Option choisie** : `Auto-generate a client encryption key` + +**Importance critique** : Le chiffrement côté client garantit que : +- Les données sont chiffrées **avant** de quitter l'hyperviseur +- Le PBS local et distant ne peuvent pas déchiffrer les données sans la clé +- La clé de chiffrement reste uniquement sur Proxmox VE + +Cette configuration est requise par la politique de sécurité du Sync Job distant (`Encrypted Only`). + +#### Configuration du Backup Job + +![Backup Job PVE](/img/homelab-actuel/pbs-instances/local_05_pve_backup_job.png) + +**Paramètres** : +- **Storage** : `PBS` +- **Schedule** : `00/6:00` (toutes les 6 heures) +- **Mode** : `Snapshot` +- **Compression** : `ZSTD` + +Les VMs sont sauvegardées automatiquement 4 fois par jour, garantissant un RPO (Recovery Point Objective) de 6 heures maximum. + +### Notifications PVE + +#### Configuration des cibles + +![Cibles de notification](/img/homelab-actuel/pbs-instances/local_06_pve_notification_targets.png) + +Proxmox VE envoie les notifications vers **Gotify** pour les notifications push mobiles. + +#### Règle d'alerte backup + +![Règle notification échec backup](/img/homelab-actuel/pbs-instances/local_07_pve_notification_backup_failure_rules.png) + +**Matcher : Backup-Failures** + +**Configuration** : +- **Match severity** : `error` +- **Match field** : `type=vzdump` + +Une alerte est envoyée immédiatement en cas d'échec d'une tâche de sauvegarde vzdump. + +![Types de notifications disponibles](/img/homelab-actuel/pbs-instances/local_08_notification_types_dropdown.png) + +Proxmox offre des types de notifications pour divers événements système : mises à jour, réplication, fencing, etc. + +## Instance distante PBS (VPS) + +### Prérequis + +Un VPS Debian 13 (Trixie) avec : +- Accès root SSH par clé publique uniquement +- Au moins 100 GB d'espace disque pour les sauvegardes +- IP publique fixe + +### Installation de Proxmox Backup Server + +#### Ajout du dépôt PBS + +Créer le fichier `/etc/apt/sources.list.d/pbs-no-subscription.sources` : + +``` +Types: deb +URIs: http://download.proxmox.com/debian/pbs +Suites: trixie +Components: pbs-no-subscription +Signed-By: /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg +``` + +#### Installation + +```bash +apt update +apt install proxmox-backup-server +``` + +#### Configuration initiale + +```bash +# Changer le mot de passe root +passwd +``` + +À ce stade, PBS est accessible sur le port 8007 depuis n'importe quelle IP. Il faut sécuriser l'accès immédiatement. + +### Sécurisation du VPS + +#### Installation du pare-feu + +```bash +apt install iptables-persistent -y +``` + +#### Configuration des règles iptables + +```bash +# Nettoyage +iptables -F +iptables -X +iptables -Z + +# Politique par défaut (DROP tout ce qui veut rentrer) +iptables -P INPUT DROP +iptables -P FORWARD DROP +iptables -P OUTPUT ACCEPT + +# Loopback (pour tunnel SSH :8007) +iptables -A INPUT -i lo -j ACCEPT + +# Connexions établies +iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT + +# Anti-bruteforce SSH +iptables -N SSH_CHECK +iptables -A INPUT -p tcp --dport 22 -j SSH_CHECK +iptables -A SSH_CHECK -m recent --set --name SSH +iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP +iptables -A SSH_CHECK -j ACCEPT + +# WireGuard +iptables -A INPUT -p udp --dport 51820 -j ACCEPT + +# Trafic interne WireGuard (Accès PBS via 10.x.x.x) +iptables -A INPUT -i wg0 -j ACCEPT + +# ICMP (ping et traceroute) +iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT + +# Sauvegarder +netfilter-persistent save +``` + +**Explications** : +- **SSH_CHECK** : Limite à 4 tentatives SSH par minute par IP +- **WireGuard port 51820** : Requis pour le tunnel VPN +- **wg0 accept** : Règle temporaire, sera verrouillée plus tard +- **Loopback** : Permet l'accès à PBS via tunnel SSH + +Redémarrer le VPS pour valider la configuration : +```bash +reboot +``` + +### Accès via tunnel SSH + +Maintenant que le port 8007 n'est plus exposé publiquement, l'accès se fait via tunnel SSH : + +```bash +ssh -L 8007:localhost:8007 root@ +``` + +L'interface PBS est accessible sur **https://localhost:8007** + +![Dashboard PBS distant](/img/homelab-actuel/pbs-instances/vps_01_dashboard.png) + +Le dashboard montre l'instance PBS nommée **TellPBS**, accessible via le tunnel SSH. + +### Configuration WireGuard + +WireGuard établit un tunnel VPN chiffré entre le PBS local et le VPS, permettant au VPS de tirer les sauvegardes de manière sécurisée. + +#### Topologie réseau + +- **Réseau WireGuard** : `10.200.0.0/24` +- **VPS (serveur)** : `10.200.0.1/24` +- **PBS homelab (client)** : `10.200.0.2/24` + +Le VPS est le serveur WireGuard, le PBS local est le client qui initie la connexion. + +#### Installation + +Sur les deux nœuds : +```bash +apt update +apt install wireguard -y +``` + +#### Configuration sur le VPS + +Génération des clés : +```bash +cd /etc/wireguard +umask 077 +wg genkey | tee vps-private.key | wg pubkey > vps-public.key + +echo "Private key VPS:" +cat vps-private.key +echo "Public key VPS:" +cat vps-public.key +``` + +Créer `/etc/wireguard/wg0.conf` : +```ini +[Interface] +Address = 10.200.0.1/24 +PrivateKey = +ListenPort = 51820 + +[Peer] +PublicKey = +AllowedIPs = 10.200.0.2/32 +PersistentKeepalive = 10 +``` + +#### Configuration sur le PBS local + +Génération des clés : +```bash +cd /etc/wireguard +umask 077 +wg genkey | tee pbs-private.key | wg pubkey > pbs-public.key + +echo "Private key PBS:" +cat pbs-private.key +echo "Public key PBS:" +cat pbs-public.key +``` + +Créer `/etc/wireguard/wg0.conf` : +```ini +[Interface] +Address = 10.200.0.2/24 +PrivateKey = + +[Peer] +PublicKey = +Endpoint = :51820 +AllowedIPs = 10.200.0.1/32 +PersistentKeepalive = 10 +``` + +#### Activation du tunnel + +**Sur le VPS** : +```bash +systemctl enable wg-quick@wg0 +systemctl start wg-quick@wg0 +systemctl status wg-quick@wg0 +wg show +``` + +**Sur le PBS local** : +```bash +systemctl enable wg-quick@wg0 +systemctl start wg-quick@wg0 +systemctl status wg-quick@wg0 +wg show +``` + +#### Tests de connectivité + +**Depuis le PBS local** : +```bash +ping 10.200.0.1 +curl -k https://10.200.0.1:8007 +``` + +**Résultat attendu** : Ping réussi (~97ms de latence), réponse HTTP du PBS distant. + +**Depuis le VPS** : +```bash +ping 10.200.0.2 +curl -k https://10.200.0.2:8007 +``` + +**Résultat attendu** : Ping réussi, réponse HTTP du PBS local. + +Si les deux tests fonctionnent, le tunnel WireGuard est opérationnel. + +### Verrouillage du tunnel WireGuard + +Par défaut, la règle `iptables -A INPUT -i wg0 -j ACCEPT` autorise tout le trafic sur le tunnel. Il faut appliquer le **principe du moindre privilège**. + +#### Flux réseau nécessaires + +C'est le PBS du VPS qui pull les sauvegardes, donc seul le trafic **initié par le VPS** est nécessaire : + +- **VPS → PBS local** : Port 8007/TCP (pull des backups) +- **Bidirectionnel** : ICMP (ping/debug) +- **Bidirectionnel** : Connexions établies (réponses aux requêtes initiées) + +Le PBS local ne doit **pas pouvoir accéder** au PBS distant : si le homelab est compromis, l'attaquant ne pourra pas modifier ou détruire les sauvegardes offsite. + +#### Pare-feu sur le VPS + +```bash +# Supprimer la règle générique wg0 +iptables -D INPUT -i wg0 -j ACCEPT + +# Connexions établies +iptables -A INPUT -i wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT + +# ICMP ping uniquement +iptables -A INPUT -i wg0 -s 10.200.0.2 -p icmp --icmp-type echo-request -j ACCEPT + +# Bloquer tout le reste sur wg0 +iptables -A INPUT -i wg0 -j DROP + +# Sauvegarder +netfilter-persistent save +``` + +#### Pare-feu sur le PBS local (nftables) + +Créer `/etc/nftables.conf` : +```nft +#!/usr/sbin/nft -f + +flush ruleset + +table inet filter { + chain input { + type filter hook input priority filter; policy drop; + + # Loopback + iif lo accept + + # Connexions établies + ct state established,related accept + + # Rejeter paquets invalides + ct state invalid drop + + # Administration depuis homelab + ip saddr { 192.168.100.0/24, 192.168.10.0/24 } tcp dport { 22, 8007 } accept + + # WireGuard : VPS peut accéder au port 8007 + iifname "wg0" ip saddr 10.200.0.1 tcp dport 8007 accept + iifname "wg0" ip saddr 10.200.0.1 icmp type echo-request accept + + # Bloquer le reste sur wg0 + iifname "wg0" drop + } + + chain forward { + type filter hook forward priority filter; policy drop; + } + + chain output { + type filter hook output priority filter; policy accept; + } +} +``` + +Appliquer la configuration : +```bash +systemctl enable nftables +systemctl start nftables +``` + +#### Validation de la sécurité + +**Test depuis le VPS** (doit fonctionner) : +```bash +ping 10.200.0.2 # ✅ Succès +curl -k https://10.200.0.2:8007 # ✅ Succès +``` + +**Test depuis le PBS local** (doit échouer) : +```bash +ping 10.200.0.1 # ✅ Succès (ICMP autorisé) +curl -k https://10.200.0.1:8007 # ❌ Timeout (aucune réponse) +``` + +**Résultat attendu** : Le PBS local peut ping le VPS, mais **ne peut pas** accéder à l'interface web. C'est le comportement voulu : si le homelab est compromis, l'attaquant ne peut pas accéder au PBS distant. + +### Configuration PBS distant + +#### Création de l'utilisateur local + +![Création utilisateur et permissions](/img/homelab-actuel/pbs-instances/vps_02_creation_user_permission.png) + +**Configuration** : +- **Utilisateur** : `remote@pbs` +- **Chemin** : `/datastore/remote-backup` +- **Rôle** : `DatastoreBackup` + +Cet utilisateur gérera les sauvegardes synchronisées depuis le homelab. + +#### Création du Datastore + +![Création datastore](/img/homelab-actuel/pbs-instances/vps_03_creation_datastore.png) + +**Paramètres** : +- **Name** : `remote-backup` +- **Backing Path** : `/mnt/hdd` +- **GC Schedule** : `Mon 03:00` (Garbage Collection le lundi à 3h) +- **Prune Schedule** : `none` (géré par un Prune Job séparé) + +Le datastore stocke les sauvegardes synchronisées. + +#### Ajout du Remote + +![Ajout remote homelab](/img/homelab-actuel/pbs-instances/vps_04_ajout_remote_homelab.png) + +**Menu** : Configuration → Remote → Add + +**Paramètres** : +- **Remote ID** : `homelab-pbs` +- **Host** : `10.200.0.2` (IP WireGuard du PBS local) +- **Auth ID** : `remote@pbs` +- **Password** : Mot de passe de `remote@pbs` +- **Fingerprint** : Fingerprint du certificat SSL du PBS local + +Le Remote définit la source depuis laquelle tirer les sauvegardes. L'utilisateur `remote@pbs` a le rôle `DatastoreReader` sur le PBS local, suffisant pour lire les sauvegardes sans pouvoir les modifier. + +#### Configuration du Sync Job + +![Sync Job - Options](/img/homelab-actuel/pbs-instances/vps_05_creation_sync_job_options.png) + +**Menu** : Configuration → Sync Jobs → Add + +**Paramètres obligatoires** : +- **Local Datastore** : `remote-backup` +- **Local Namespace** : `Root` +- **Local Owner** : `remote@pbs` +- **Source Remote** : `homelab-pbs` +- **Source Datastore** : `nfs-storage` +- **Source Namespace** : `Root` +- **Sync Schedule** : `Sun 01:00` (dimanche à 1h du matin) +- **Remove Vanished** : ✅ Coché (supprime les backups supprimés sur la source) + +![Sync Job - Sécurité](/img/homelab-actuel/pbs-instances/vps_06_creation_sync_job_security.png) + +**Paramètres de sécurité (CRITIQUES)** : +- **Transfer Last** : `1` (ne transfère que la dernière sauvegarde par VM) +- **Encrypted Only** : ✅ Coché (refuse les sauvegardes non chiffrées) +- **Verified Only** : ✅ Coché (refuse les sauvegardes non vérifiées) +- **Re-sync Corrupt** : ✅ Coché (re-synchronise automatiquement si corruption détectée) + +Ces paramètres garantissent que : +- Seules les sauvegardes chiffrées sont acceptées (pas de confiance envers le VPS pour la confidentialité) +- Seules les sauvegardes vérifiées sont acceptées (garantie d'intégrité) +- La synchronisation est limitée à la dernière sauvegarde (économie de bande passante) + +#### Configuration du Prune Job + +![Prune Job](/img/homelab-actuel/pbs-instances/vps_07_creation_prune_job.png) + +**Menu** : Datastore → remote-backup → Prune & GC → Add + +**Paramètres** : +- **Schedule** : `Mon 02:00` (lundi à 2h, après le sync du dimanche) +- **Keep Weekly** : `26` (garde 26 sauvegardes hebdomadaires ≈ 6 mois) +- **Namespace** : `/` + +**Commentaire** : "Garde une backup par semaine sur les 6 derniers mois" + +Le Garbage Collector nettoie automatiquement l'espace à `Mon 03:00`. + +#### Configuration du Verify Job + +![Verify Job](/img/homelab-actuel/pbs-instances/vps_08_creation_verify_job.png) + +**Menu** : Datastore → remote-backup → Verify Jobs → Add + +**Paramètres** : +- **Datastore** : `remote-backup` +- **Schedule** : `Tue 02:00` (tous les mardis à 2h) +- **Skip Verified** : ❌ Désactivé (vérifie toutes les sauvegardes à chaque fois) + +Le Verify Job garantit l'intégrité des sauvegardes en recalculant les checksums. + +### Configuration des notifications + +#### Notification échec Sync + +![Notification échec sync](/img/homelab-actuel/pbs-instances/vps_09_notification_echec_sync.png) + +**Configuration** : +- **Match severity** : `error` +- **Match field** : `type=sync` + +Alerte immédiate en cas d'échec de synchronisation. + +#### Notification échec Verify + +![Notification échec verify](/img/homelab-actuel/pbs-instances/vps_10_notification_echec_verify.png) + +**Configuration** : +- **Match severity** : `error` +- **Match field** : `type=verify` + +Alerte immédiate en cas d'échec de vérification (corruption de données). + +### Test de la synchronisation + +![Test Sync Job](/img/homelab-actuel/pbs-instances/vps_11_test_sync_job.png) + +**Menu** : Configuration → Sync Jobs → Sélectionner le job → Run Now + +Le premier sync prendra du temps (transfert complet), mais grâce à la **déduplication** de PBS, les prochaines synchronisations seront beaucoup plus rapides. + +Le log indique une synchronisation réussie. + +### Supervision Zabbix + +![Configuration Zabbix](/img/homelab-actuel/pbs-instances/vps_12_configuration_zabbix.png) + +Pour surveiller le PBS distant, un agent Zabbix est configuré en mode actif. + +**Configuration de l'agent** (`/etc/zabbix/zabbix_agent2.conf`) : +```ini +Hostname=PBS-remote +ServerActive=141.253.114.252:10051 +ListenIP=127.0.0.1 +# Server= est commenté (désactivé) +``` + +**Configuration dans Zabbix** : +- **Host name** : `PBS-remote` +- **Template** : `Linux by Zabbix agent active` +- **IP** : `127.0.0.1` +- **Port** : `10050` + +L'agent contacte le serveur Zabbix via le tunnel WireGuard et remonte les métriques système (CPU, RAM, disque, etc.). + +## Flux de sauvegarde complet + +### Timeline hebdomadaire + +**Toutes les 6 heures** : +- Proxmox VE sauvegarde les VMs vers PBS local (chiffrement client) + +**Dimanche 01:00** : +- PBS distant tire (pull) la dernière sauvegarde de chaque VM via WireGuard + +**Lundi 02:00** : +- Prune Job supprime les anciennes sauvegardes (garde 26 semaines) + +**Lundi 03:00** : +- Garbage Collector récupère l'espace disque libéré + +**Mardi 02:00** : +- Verify Job vérifie l'intégrité de toutes les sauvegardes + +### Chaîne de sécurité + +1. **Chiffrement à la source** : La clé de chiffrement ne quitte jamais Proxmox VE +2. **Transit sécurisé** : WireGuard chiffre le tunnel entre PBS local et distant +3. **Lecture seule depuis le VPS** : Le VPS peut uniquement lire les sauvegardes, jamais les modifier à la source +4. **Principe du moindre privilège** : Seul le port 8007 du PBS local est accessible depuis le VPS +5. **Isolation réseau** : Le homelab ne peut pas accéder au PBS distant + +## Avantages de cette architecture + +### Résilience + +- **Sauvegarde locale** : Restauration rapide des VMs (haute disponibilité) +- **Sauvegarde offsite** : Protection contre sinistre majeur (incendie, vol, inondation) +- **Rétention longue** : 6 mois d'historique sur le VPS + +### Sécurité + +- **Chiffrement end-to-end** : Aucune confiance envers le VPS pour la confidentialité +- **Protection contre compromission** : Le homelab ne peut pas accéder au PBS distant, empêchant la destruction des sauvegardes offsite +- **Accès en lecture seule** : Le VPS peut lire mais pas modifier les sauvegardes sources +- **Pare-feu strict** : Surface d'attaque minimale sur le tunnel WireGuard +- **Vérification automatique** : Détection précoce de la corruption + +### Automatisation + +- **Sauvegardes automatiques** : 4 fois par jour +- **Synchronisation hebdomadaire** : Bande passante économisée +- **Purge automatique** : Gestion de l'espace disque +- **Notifications** : Alertes en cas de problème + +## Ressources + +- [Documentation officielle Proxmox Backup Server](https://pbs.proxmox.com/docs/) +- [Proxmox VE Backup and Restore](https://pve.proxmox.com/wiki/Backup_and_Restore) +- [WireGuard Documentation](https://www.wireguard.com/quickstart/) +- [3-2-1 Backup Strategy](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) diff --git a/sidebars.ts b/sidebars.ts index 8b84c93..fd3f2e7 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -47,6 +47,7 @@ const sidebars: SidebarsConfig = { 'homelab-actuel/playbooks-ansible', 'homelab-actuel/docker-compose', 'homelab-actuel/traefik', + 'homelab-actuel/proxmox-backup-server', ], }, { diff --git a/static/img/homelab-actuel/pbs-instances/local_01_creation_user_backup.png b/static/img/homelab-actuel/pbs-instances/local_01_creation_user_backup.png new file mode 100644 index 0000000..a7c0256 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_01_creation_user_backup.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_02_permission_user_backup.png b/static/img/homelab-actuel/pbs-instances/local_02_permission_user_backup.png new file mode 100644 index 0000000..76dc9da Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_02_permission_user_backup.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_03_pve_storage_backend_general.png b/static/img/homelab-actuel/pbs-instances/local_03_pve_storage_backend_general.png new file mode 100644 index 0000000..9c18a0f Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_03_pve_storage_backend_general.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_04_pve_storage_backend_encryption.png b/static/img/homelab-actuel/pbs-instances/local_04_pve_storage_backend_encryption.png new file mode 100644 index 0000000..31b73a7 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_04_pve_storage_backend_encryption.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_05_pve_backup_job.png b/static/img/homelab-actuel/pbs-instances/local_05_pve_backup_job.png new file mode 100644 index 0000000..606d017 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_05_pve_backup_job.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_06_pve_notification_targets.png b/static/img/homelab-actuel/pbs-instances/local_06_pve_notification_targets.png new file mode 100644 index 0000000..3afe4fe Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_06_pve_notification_targets.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_07_pve_notification_backup_failure_rules.png b/static/img/homelab-actuel/pbs-instances/local_07_pve_notification_backup_failure_rules.png new file mode 100644 index 0000000..d3e1f48 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_07_pve_notification_backup_failure_rules.png differ diff --git a/static/img/homelab-actuel/pbs-instances/local_08_notification_types_dropdown.png b/static/img/homelab-actuel/pbs-instances/local_08_notification_types_dropdown.png new file mode 100644 index 0000000..e883b3c Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/local_08_notification_types_dropdown.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_01_dashboard.png b/static/img/homelab-actuel/pbs-instances/vps_01_dashboard.png new file mode 100644 index 0000000..96501e5 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_01_dashboard.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_02_creation_user_permission.png b/static/img/homelab-actuel/pbs-instances/vps_02_creation_user_permission.png new file mode 100644 index 0000000..69b603b Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_02_creation_user_permission.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_03_creation_datastore.png b/static/img/homelab-actuel/pbs-instances/vps_03_creation_datastore.png new file mode 100644 index 0000000..dea384e Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_03_creation_datastore.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_04_ajout_remote_homelab.png b/static/img/homelab-actuel/pbs-instances/vps_04_ajout_remote_homelab.png new file mode 100644 index 0000000..c097a15 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_04_ajout_remote_homelab.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_05_creation_sync_job_options.png b/static/img/homelab-actuel/pbs-instances/vps_05_creation_sync_job_options.png new file mode 100644 index 0000000..2fe1797 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_05_creation_sync_job_options.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_06_creation_sync_job_security.png b/static/img/homelab-actuel/pbs-instances/vps_06_creation_sync_job_security.png new file mode 100644 index 0000000..c05f410 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_06_creation_sync_job_security.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_07_creation_prune_job.png b/static/img/homelab-actuel/pbs-instances/vps_07_creation_prune_job.png new file mode 100644 index 0000000..7f225a2 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_07_creation_prune_job.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_08_creation_verify_job.png b/static/img/homelab-actuel/pbs-instances/vps_08_creation_verify_job.png new file mode 100644 index 0000000..a6cb329 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_08_creation_verify_job.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_09_notification_echec_sync.png b/static/img/homelab-actuel/pbs-instances/vps_09_notification_echec_sync.png new file mode 100644 index 0000000..5544cc8 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_09_notification_echec_sync.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_10_notification_echec_verify.png b/static/img/homelab-actuel/pbs-instances/vps_10_notification_echec_verify.png new file mode 100644 index 0000000..4587055 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_10_notification_echec_verify.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_11_test_sync_job.png b/static/img/homelab-actuel/pbs-instances/vps_11_test_sync_job.png new file mode 100644 index 0000000..78db23c Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_11_test_sync_job.png differ diff --git a/static/img/homelab-actuel/pbs-instances/vps_12_configuration_zabbix.png b/static/img/homelab-actuel/pbs-instances/vps_12_configuration_zabbix.png new file mode 100644 index 0000000..b7dad96 Binary files /dev/null and b/static/img/homelab-actuel/pbs-instances/vps_12_configuration_zabbix.png differ diff --git a/zen_586INu5evn.png b/zen_586INu5evn.png new file mode 100644 index 0000000..76dc9da Binary files /dev/null and b/zen_586INu5evn.png differ