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:
120
hestiacp/chapitres/13-sauvegardes.md
Normal file
120
hestiacp/chapitres/13-sauvegardes.md
Normal 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à.
|
||||
Reference in New Issue
Block a user