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
This commit is contained in:
Zana
2026-09-10 20:01:59 +02:00
parent acbe11489c
commit 2e18724685
31 changed files with 2419 additions and 44 deletions

View File

@@ -0,0 +1,120 @@
# 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}} :
```bash
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 :
```bash
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 :
```bash
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
```bash
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 :
```bash
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` :
```bash
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) :
```bash
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 :
```bash
sudo v-list-user-backups {{CLIENT}}
```
Restaurer **un seul** site, une base ou un domaine mail, depuis une archive locale ou distante :
```bash
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éé) :
```bash
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à.