# 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//public_html/` | | Fichiers privés (hors web) | `/home/{{CLIENT}}/web//private/` | | Journaux du site | `/home/{{CLIENT}}/web//logs/` | | Boîtes mail | `/home/{{CLIENT}}/mail//` | | 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`.