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,84 @@
# Créer l'utilisateur d'hébergement
Dans HestiaCP, **chaque utilisateur du panel est un vrai utilisateur Linux**. PHP-FPM, les tâches cron et la connexion SSH de ses sites tournent sous ce même compte.
Tous les fichiers d'un site appartiennent donc à un seul utilisateur. Les problèmes de droits connus sous ISPConfig (`webX:clientY`, ACL, `chmod 777` sur le cache Symfony) disparaissent.
| Élément | Emplacement |
|---|---|
| Fichiers d'un site | `/home/{{CLIENT}}/web/<domaine>/public_html/` |
| Fichiers privés (hors web) | `/home/{{CLIENT}}/web/<domaine>/private/` |
| Journaux du site | `/home/{{CLIENT}}/web/<domaine>/logs/` |
| Boîtes mail | `/home/{{CLIENT}}/mail/<domaine>/` |
| Sauvegardes | `/backup/` |
## Créer un forfait « projets »
Un **forfait** (*package*) définit les limites et les réglages par défaut d'un utilisateur. Le forfait `default` interdit le SSH et ne garde qu'une sauvegarde : on en crée un plus adapté à partir de lui.
```bash
sudo cp /usr/local/hestia/data/packages/default.pkg /tmp/projets.pkg
sudo sed -i "s/^SHELL=.*/SHELL='bash'/; s/^BACKUPS=.*/BACKUPS='7'/" /tmp/projets.pkg
sudo v-add-user-package /tmp/projets.pkg projets
sudo rm /tmp/projets.pkg
sudo v-list-user-package projets
```
> [!CHECK]
> Dans la sortie, la ligne `SHELL` indique `bash`, la ligne `BACKUPS` indique `7` et la ligne `NS` indique `ns1.{{DOMAINE}},ns2.{{DOMAINE}}`.
> [!NOTE]
> `BACKUPS='7'` garde 7 sauvegardes quotidiennes locales. Sur un petit disque, réduisez ce nombre. Le forfait se modifie aussi dans le panel : **roue dentée › Forfaits**.
## Créer l'utilisateur {{CLIENT}}
Choisissez un mot de passe fort, que vous notez dans votre gestionnaire de mots de passe. L'espace avant la commande l'empêche d'être enregistré dans l'historique du shell :
```bash
sudo v-add-user {{CLIENT}} 'MOT_DE_PASSE_FORT' {{EMAIL}} projets
```
> [!WARNING]
> Depuis HestiaCP 1.10, un nom qui existe déjà comme utilisateur Linux est refusé. {{CLIENT}} doit donc être différent de {{USER}} et de {{ADMIN}}.
## Vérifier les serveurs de noms de l'utilisateur
Les zones DNS créées par {{CLIENT}} utiliseront ces serveurs de noms :
```bash
sudo v-change-user-ns {{CLIENT}} ns1.{{DOMAINE}} ns2.{{DOMAINE}}
sudo v-list-user {{CLIENT}} json | grep -E '"(PACKAGE|SHELL|NS)"'
```
> [!CHECK]
> `"PACKAGE": "projets"`, `"NS": "ns1.{{DOMAINE}},ns2.{{DOMAINE}}"`, `"SHELL": "bash"`.
## Autoriser votre clé SSH pour {{CLIENT}}
Pour déployer vos projets, vous vous connecterez directement en {{CLIENT}}. Ajoutez votre clé publique, celle du fichier `~/.ssh/id_ed25519.pub` de votre ordinateur :
```bash
sudo v-add-user-ssh-key {{CLIENT}} "$(cat /home/{{USER}}/.ssh/authorized_keys | head -1)"
```
> [!CHECK]
> Depuis votre ordinateur, `ssh -p {{SSH_PORT}} {{CLIENT}}@{{IP}}` ouvre une session dans `/home/{{CLIENT}}`.
## Installer Composer pour {{CLIENT}}
```bash
sudo v-add-user-composer {{CLIENT}}
```
Cette commande installe Composer 2 dans `/home/{{CLIENT}}/.composer/` et crée l'alias `composer` pour cet utilisateur.
## Choisir la version de PHP en ligne de commande
Par défaut, la commande `php` utilise la version la plus récente installée. Pour que {{CLIENT}} utilise PHP 8.4 en SSH :
```bash
sudo v-change-user-php-cli {{CLIENT}} 8.4
```
> [!WARNING] Cron et scripts : chemin complet obligatoire
> Cette commande crée seulement un **alias** dans `~/.bash_aliases`, que les tâches cron et les scripts ne lisent pas. Dans ces cas, écrivez toujours le chemin complet : `/usr/bin/php8.4`.