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:
115
hestiacp/chapitres/14-maintenance.md
Normal file
115
hestiacp/chapitres/14-maintenance.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Maintenance et dépannage
|
||||
|
||||
## Faire les mises à jour mensuelles
|
||||
|
||||
HestiaCP et les correctifs de sécurité d'Ubuntu s'installent seuls. Une fois par mois, mettez aussi à jour le reste (PHP, Nginx, MariaDB, Docker) :
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade
|
||||
[ -f /var/run/reboot-required ] && echo "Redémarrage nécessaire"
|
||||
sudo v-list-sys-hestia-updates
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> Si apt demande quoi faire d'un fichier de configuration modifié, répondez **N** (garder la version actuelle). HestiaCP gère lui-même ces fichiers.
|
||||
|
||||
Mettez à jour les conteneurs de la même façon : `docker compose pull && docker compose up -d` dans chaque dossier `/opt/<appli>`, ou le bouton de mise à jour de Portainer.
|
||||
|
||||
## Mémo des commandes utiles
|
||||
|
||||
| Besoin | Commande |
|
||||
|---|---|
|
||||
| État des services | `sudo v-list-sys-services` |
|
||||
| Redémarrer un service | `sudo v-restart-service nginx` (ou `apache2`, `php-fpm`, `exim4`, `dovecot`, `mariadb`, `bind9`) |
|
||||
| Lister les utilisateurs / sites | `sudo v-list-users` · `sudo v-list-web-domains {{CLIENT}}` |
|
||||
| Reconstruire la config des sites | `sudo v-rebuild-web-domains {{CLIENT}}` |
|
||||
| Reconstruire tout un utilisateur | `sudo v-rebuild-user {{CLIENT}}` |
|
||||
| Pare-feu, IP bannies | `sudo v-list-firewall` · `sudo v-list-firewall-ban` |
|
||||
| Débannir une IP | `sudo v-delete-firewall-ban <IP> ALL` |
|
||||
| Renouveler un certificat | `sudo v-add-letsencrypt-domain {{CLIENT}} <domaine> www.<domaine>` |
|
||||
| Aide d'une commande | ouvrir le script, ex. `head -12 /usr/local/hestia/bin/v-add-web-domain` |
|
||||
|
||||
## Où trouver les journaux
|
||||
|
||||
| Journal | Emplacement |
|
||||
|---|---|
|
||||
| Actions HestiaCP | `/var/log/hestia/system.log`, `/var/log/hestia/error.log` |
|
||||
| Connexions au panel | `/var/log/hestia/auth.log` |
|
||||
| Let's Encrypt | `/var/log/hestia/LE-<utilisateur>-<domaine>.log` |
|
||||
| Sites (Nginx / Apache) | `/var/log/nginx/domains/`, `/var/log/apache2/domains/` |
|
||||
| Mail envoyé et reçu | `/var/log/exim4/mainlog` |
|
||||
| IMAP / POP3 | `/var/log/dovecot.log` |
|
||||
| Fail2ban | `/var/log/fail2ban.log` |
|
||||
| SSH | `/var/log/auth.log` |
|
||||
| Installation | `/root/hst_install_backups/` |
|
||||
|
||||
## Résoudre les problèmes fréquents
|
||||
|
||||
### Le certificat Let's Encrypt échoue
|
||||
|
||||
1. `dig +short <domaine>` doit répondre {{IP}}, et `dig +short AAAA <domaine>` ne doit **rien** répondre (chapitre 1).
|
||||
2. Le port 80 doit être ouvert (`sudo v-list-firewall | grep WEB`).
|
||||
3. Lisez le journal `/var/log/hestia/LE-{{CLIENT}}-<domaine>.log`.
|
||||
4. Après trop d'échecs, Let's Encrypt bloque le domaine pendant une heure : attendez avant de réessayer.
|
||||
|
||||
### Erreur 502 ou 503 sur un site
|
||||
|
||||
PHP-FPM est arrêté ou saturé :
|
||||
|
||||
```bash
|
||||
sudo v-restart-service php-fpm
|
||||
sudo tail -n 50 /var/log/apache2/domains/{{SITE}}.error.log
|
||||
```
|
||||
|
||||
### Erreur 500 sur une application Symfony
|
||||
|
||||
Connecté en {{CLIENT}} :
|
||||
|
||||
```bash
|
||||
tail -n 50 ~/web/{{SITE}}/public_html/var/log/prod.log
|
||||
cd ~/web/{{SITE}}/public_html && php bin/console cache:clear
|
||||
```
|
||||
|
||||
### Les mails arrivent en spam
|
||||
|
||||
1. Testez sur <https://www.mail-tester.com> et suivez ses indications.
|
||||
2. Vérifiez le PTR : `dig +short -x {{IP}}` doit répondre `{{FQDN}}.`.
|
||||
3. Vérifiez que l'IP n'est pas sur liste noire : <https://check.spamhaus.org>.
|
||||
4. Vérifiez SPF, DKIM et DMARC : `sudo v-list-dns-records {{CLIENT}} {{DOMAINE}}`.
|
||||
|
||||
### Vous êtes bloqué dehors (SSH refusé)
|
||||
|
||||
Votre IP a sans doute été bannie par Fail2ban. Connectez-vous par la **console VNC** du panel Contabo, puis :
|
||||
|
||||
```bash
|
||||
sudo v-list-firewall-ban
|
||||
sudo v-delete-firewall-ban VOTRE_IP ALL
|
||||
```
|
||||
|
||||
### Le disque se remplit
|
||||
|
||||
```bash
|
||||
df -h /
|
||||
sudo du -sh /backup /home/* /var/lib/docker /var/log 2>/dev/null | sort -h
|
||||
docker system prune
|
||||
```
|
||||
|
||||
Réduisez si besoin le nombre de sauvegardes locales dans le forfait (`BACKUPS`), puisqu'une copie existe sur le serveur distant.
|
||||
|
||||
## Vérifier que tout est en place
|
||||
|
||||
| ✓ | Vérification |
|
||||
|---|---|
|
||||
| ☐ | Panel accessible en HTTPS avec certificat valide et double authentification |
|
||||
| ☐ | SSH uniquement par clé, sur le port {{SSH_PORT}}, root interdit |
|
||||
| ☐ | IPv6 entrante bloquée (`sudo ip6tables -S INPUT`) |
|
||||
| ☐ | UFW absent, pare-feu HestiaCP et Fail2ban actifs |
|
||||
| ☐ | `dig NS {{DOMAINE}}` renvoie `ns1` et `ns2.{{DOMAINE}}` |
|
||||
| ☐ | PTR de {{IP}} = {{FQDN}} |
|
||||
| ☐ | Sites en HTTPS forcé, sans enregistrement AAAA |
|
||||
| ☐ | mail-tester.com : 10/10 ; Gmail : SPF, DKIM et DMARC en PASS |
|
||||
| ☐ | Conteneurs Docker publiés uniquement sur 127.0.0.1 (`ss -tlnp`) |
|
||||
| ☐ | Sauvegarde HestiaCP présente sur {{BACKUP_HOST}} |
|
||||
| ☐ | Sauvegarde système (`/var/log/backup-systeme.log` sans erreur) |
|
||||
| ☐ | Uptime Kuma et une surveillance externe actifs |
|
||||
| ☐ | Une restauration de test réussie |
|
||||
Reference in New Issue
Block a user