Installation sur le même serveur physique que Proxmox. Bien que pas recommandé.
Dépôts
https://pbs.proxmox.com/docs/installation.html#sysadmin-package-repositories
vi /etc/apt/sources.list.d/pbs.sources
Types: deb URIs: http://download.proxmox.com/debian/pbs Suites: trixie Components: pbs-no-subscription Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
apt update apt install proxmox-backup-server
Une nouvelle source apt sera créé pbs-enterprise.sources
Ajoutez à la fin de ce fichier
Enabled: false
Menu :
On peut backuper des systèmes de fichiers voir même des systèmes de block avec la commande proxmox-backup-client en gardant les avantages de sauvegarde incrémentielle, chiffré etc…
Mes exigences / contraintes :
Créer une paire de clés SSH dédié
ssh-keygen -t ed25519 -f ~/.ssh/id_pbs_backup
On peut restreindre l’utilisation de ssh sur le serveur distant en éditant ~/.ssh/authorized_keys
no-pty,no-X11-forwarding,no-agent-forwarding,command="/bin/echo 'Tunnel only'" ssh-ed25519 AAAAC3Nza... (votre clé)
Automatiser la connexion ssh sur le serveur PBS en éditant le fichier ~/.ssh/config
Host sauvegarde-distante
HostName IP_DU_SERVEUR_DISTANT
User utilisateur
IdentityFile ~/.ssh/id_pbs_backup
RemoteForward 8007 localhost:8007
Exemple d’un script qui permet de sauvegarder une machine distante
#!/bin/bash # --- Configuration --- REMOTE_USER="utilisateur" REMOTE_HOST="ip_du_serveur_distant" PBS_PASSWORD="ton_mot_de_passe_pbs" PBS_REPOSITORY="utilisateur@localhost:8007:datastore" BACKUP_PATH="/chemin/a/sauvegarder" WEBHOOK_URL="https://votre-url-webhook.com/..." # Internes SSH_CONTROL="~/.ssh/pbs_tunnel_control" REMOTE_PASS_FILE="/tmp/.pbs_pass_tmp" START_TIME=$(date +%s) # --- Fonction Webhook --- send_notification() { curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"$1\"}" "$WEBHOOK_URL" > /dev/null 2>&1 } send_notification "🚀 Début de la sauvegarde Proxmox pour **$REMOTE_HOST**." # 1. Ouverture du tunnel # -M : Mode maître / -S : Fichier de contrôle (socket) / -fN : Arrière-plan sans commande ssh -fN -M -S "$SSH_CONTROL" -R 8007:localhost:8007 "$REMOTE_USER@$REMOTE_HOST" # 2. Préparation du secret ssh -S "$SSH_CONTROL" "$REMOTE_USER@$REMOTE_HOST" "echo '$PBS_PASSWORD' > $REMOTE_PASS_FILE && chmod 600 $REMOTE_PASS_FILE" # 3. Sauvegarde ssh -S "$SSH_CONTROL" "$REMOTE_USER@$REMOTE_HOST" \ "proxmox-backup-client backup root.pxar:$BACKUP_PATH --repository $PBS_REPOSITORY --password-file $REMOTE_PASS_FILE" BACKUP_EXIT_CODE=$? END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) H_DURATION=$(printf '%02dh %02dm %02ds\n' $((DURATION/3600)) $((DURATION%3600/60)) $((DURATION%60))) # 4. Nettoyage ssh -S "$SSH_CONTROL" "$REMOTE_USER@$REMOTE_HOST" "rm -f $REMOTE_PASS_FILE" ssh -S "$SSH_CONTROL" -O exit "$REMOTE_USER@$REMOTE_HOST" # --- Notification de fin --- if [ $BACKUP_EXIT_CODE -eq 0 ]; then send_notification "✅ Sauvegarde réussie en **$H_DURATION**." else send_notification "❌ Échec de la sauvegarde sur **$REMOTE_HOST** après $H_DURATION (Code: $BACKUP_EXIT_CODE)." exit $BACKUP_EXIT_CODE fi