Outils pour utilisateurs

Outils du site


Panneau latéral

linux:proxmox-backup-server (lu 6558 fois)

Ceci est une ancienne révision du document !


Proxmox Backup Server

Installation

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

Certificats ssl

Comme il y a déjà un certificat ssl letsencrypt géré par Proxmox VE, on va les utiliser pour PBS

Les certificats PVE se trouvent dans /etc/pve/nodes/<nom du node>/pveproxy-ssl.key et pveproxy-ssl.pem

Les certificats PBS se trouvent dans /etc/proxmox-backupproxy.key et proxy.pem

Supprimons les fichiers de PBS et créons un lien symbolique de PVE vers PBS

rm /etc/proxmox-backup/proxy.key
rm /etc/proxmox-backup/proxy.pem
ln -s /etc/pve/nodes/<nom du node>/pveproxy-ssl.key /etc/proxmox-backup/proxy.key
ln -s /etc/pve/nodes/<nom du node>/pveproxy-ssl.pem /etc/proxmox-backup/proxy.pem
systemctl restart proxmox-backup-proxy.service

Bon, pour une histoire de droit, la solution avec les liens symboliques ne fonctionne pas. Soit ajuster les droits, soit faire une copie en étant synchro avec la mise à jour des certificats.

Ajouter un server proxmox

Menu :

  • Configuration / Remotes
  • bouton Add
  • Auth ID : root@pam (par exemple)
  • FingerPrint
    • Aller sur le server proxmox
    • Menu System / Certificates
    • Sélectionnez pveproxy-ssl.pem
    • Bouton View certificate et copier le fingerprint

proxmox-backup-client

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 :

  • Je ne veux pas que mon serveur distant puisse se connecter à mon serveur PBS (pour des raisons de sécurité)
  • Je met le password dans un fichier pour qu’il ne s’affiche pas dans les process
  • Installation obligatoire du binaire proxmox-backup-client sur le serveur distant
  • Connexion ssh par clé
  • Tunnel ssh pour bénéficier de la déduplication de PBS

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
linux/proxmox-backup-server.1771500934.txt.gz · Dernière modification : de edmc73