- 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
5.2 KiB
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.tarapparaît dans/backup/. Le nombre de sauvegardes conservées est celui du forfait (7 pourprojets).
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, donthestia-{{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}}.….tardu 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 scriptbackup-systeme.shles inclut déjà.