Files
vps-docs/hestiacp/chapitres/13-sauvegardes.md
Zana 2e18724685 Ajout du guide PDF HestiaCP réutilisable (HestiaCP 1.10.4)
- 14 chapitres + annexe en Markdown (chapitres/), 99 étapes
- Générateur WeasyPrint (build/build.py) : PDF générique ou
  personnalisé via --vars fichier.conf
- PDF générique + PDF personnalisé srv1.skglobalinstitute.com
- Commandes v-* vérifiées contre le code source HestiaCP 1.10.4
- 03-bis-hestiacp.md pointe vers le nouveau guide

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018J2PsVQ28oW4xEkWJpcU9G
2026-09-10 20:01:59 +02:00

5.2 KiB
Raw Blame History

Sauvegardes

HestiaCP sauvegarde chaque utilisateur tous les jours à 05h10. La sauvegarde contient ses sites, bases de données, boîtes mail, zones DNS, tâches cron, certificats et son dossier personnel.

Deux compléments sont indispensables :

  • une copie hors du serveur, car une sauvegarde qui reste sur le serveur disparaît avec lui ;
  • la sauvegarde de la configuration système, que HestiaCP ne sauvegarde pas : /etc, la configuration de HestiaCP, vos modèles, les volumes Docker.

Vérifier la sauvegarde locale

Lancez une sauvegarde manuelle de {{CLIENT}} :

sudo v-backup-user {{CLIENT}} yes
sudo v-list-user-backups {{CLIENT}}
ls -lh /backup/

[!CHECK] Un fichier {{CLIENT}}.AAAA-MM-JJ_HH-MM-SS.tar apparaît dans /backup/. Le nombre de sauvegardes conservées est celui du forfait (7 pour projets).

Note

Pour exclure un dossier volumineux (cache, fichiers temporaires) : Sauvegardes › Exclusions, dans le compte de l'utilisateur.

Préparer une clé SSH pour le serveur de sauvegarde

La copie distante se fait en SFTP vers {{BACKUP_HOST}}, avec une clé SSH dédiée, sans mot de passe :

sudo ssh-keygen -t ed25519 -f /root/.ssh/hestia-backup -N "" -C "backup@{{FQDN}}"
sudo cat /root/.ssh/hestia-backup.pub

Ajoutez cette clé publique au fichier ~/.ssh/authorized_keys du compte {{BACKUP_USER}} sur {{BACKUP_HOST}}. Sur un hébergement mutualisé, passez par l'interface (cPanel : Accès SSH › Gérer les clés SSH › Importer, puis Autoriser).

Testez la connexion et créez le dossier de destination :

sudo ssh -i /root/.ssh/hestia-backup -p {{BACKUP_PORT}} {{BACKUP_USER}}@{{BACKUP_HOST}} "mkdir -p hestia-{{HOST}}/systeme && ls"

[!CHECK] Répondez yes à la question sur l'empreinte du serveur. La commande affiche le contenu du dossier distant, dont hestia-{{HOST}}, sans demander de mot de passe.

Envoyer les sauvegardes HestiaCP hors du serveur

sudo v-add-backup-host sftp {{BACKUP_HOST}} {{BACKUP_USER}} /root/.ssh/hestia-backup hestia-{{HOST}} {{BACKUP_PORT}}
sudo v-list-backup-host sftp

Les sauvegardes sont maintenant copiées aussi vers hestia-{{HOST}}/ sur {{BACKUP_HOST}}, avec la même durée de conservation. Testez tout de suite :

sudo v-backup-user {{CLIENT}} yes
sudo ssh -i /root/.ssh/hestia-backup -p {{BACKUP_PORT}} {{BACKUP_USER}}@{{BACKUP_HOST}} "ls -lh hestia-{{HOST}}"

[!CHECK] L'archive {{CLIENT}}.….tar du jour est présente sur le serveur distant, et {{EMAIL}} reçoit un e-mail de confirmation de la sauvegarde.

Sauvegarder la configuration système

Ce script copie chaque nuit vers le serveur distant (qui doit disposer de rsync) /etc, la configuration et les modèles de HestiaCP, les volumes Docker et /opt :

sudo tee /usr/local/sbin/backup-systeme.sh > /dev/null << 'EOF'
#!/bin/bash
# Copie de la configuration système vers le serveur de sauvegarde
set -euo pipefail
DEST="{{BACKUP_USER}}@{{BACKUP_HOST}}:hestia-{{HOST}}/systeme/"
SSH="ssh -i /root/.ssh/hestia-backup -p {{BACKUP_PORT}}"
SOURCES=()
for p in /etc /usr/local/hestia/conf /usr/local/hestia/data /usr/local/sbin \
         /opt /var/lib/docker/volumes /root/.ssh; do
  if [ -e "$p" ]; then SOURCES+=("$p"); fi
done
rsync -aR --delete -e "$SSH" "${SOURCES[@]}" "$DEST"
EOF
sudo chmod 700 /usr/local/sbin/backup-systeme.sh
sudo /usr/local/sbin/backup-systeme.sh && echo "Sauvegarde système OK"

Programmez-le chaque nuit à 04h30 (avant la sauvegarde HestiaCP) :

echo '30 4 * * * root /usr/local/sbin/backup-systeme.sh > /var/log/backup-systeme.log 2>&1' | sudo tee /etc/cron.d/backup-systeme

Warning

Ces copies contiennent des secrets : clés SSH, mots de passe de bases dans /usr/local/hestia/conf, fichiers .env.local. Le compte de sauvegarde doit être protégé comme le serveur lui-même.

Restaurer

Lister les sauvegardes d'un utilisateur :

sudo v-list-user-backups {{CLIENT}}

Restaurer un seul site, une base ou un domaine mail, depuis une archive locale ou distante :

sudo v-restore-web-domain {{CLIENT}} {{CLIENT}}.AAAA-MM-JJ_HH-MM-SS.tar {{SITE}}
sudo v-restore-database {{CLIENT}} {{CLIENT}}.AAAA-MM-JJ_HH-MM-SS.tar {{CLIENT}}_app
sudo v-restore-mail-domain {{CLIENT}} {{CLIENT}}.AAAA-MM-JJ_HH-MM-SS.tar {{DOMAINE}}

Restaurer tout l'utilisateur (sur ce serveur ou sur un nouveau serveur HestiaCP, où l'utilisateur sera recréé) :

sudo v-restore-user {{CLIENT}} {{CLIENT}}.AAAA-MM-JJ_HH-MM-SS.tar

[!TIP] Testez une restauration Une sauvegarde jamais testée n'est pas une sauvegarde. Une fois par trimestre, restaurez une base dans une base de test, ou le site complet sur un VPS temporaire.

[!NOTE] Pour aller plus loin : sauvegardes incrémentales Depuis la version 1.9, HestiaCP sait aussi faire des sauvegardes incrémentales avec restic (commande v-add-backup-host-restic), vers un stockage compatible rclone (S3, Backblaze B2…). Elles prennent beaucoup moins de place que des archives complètes quotidiennes. Pensez alors à sauvegarder les fichiers /usr/local/hestia/data/users/*/restic.conf, sans lesquels la restauration est impossible : le script backup-systeme.sh les inclut déjà.