# 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/`, 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 ALL` | | Renouveler un certificat | `sudo v-add-letsencrypt-domain {{CLIENT}} www.` | | 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--.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 ` doit répondre {{IP}}, et `dig +short AAAA ` 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}}-.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 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 : . 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 |