# Préparer le système On part d'un Ubuntu 24.04 neuf, connecté en **root**. Ce chapitre prépare le terrain sans rien installer qui gênerait HestiaCP. ## Mettre le système à jour ```bash apt update && apt full-upgrade -y apt autoremove -y ``` Si un nouveau noyau a été installé, redémarrez puis reconnectez-vous : ```bash [ -f /var/run/reboot-required ] && reboot ``` ## Définir le nom du serveur ```bash hostnamectl set-hostname {{FQDN}} ``` Ajoutez le nom du serveur dans `/etc/hosts` : ```bash cat >> /etc/hosts << 'EOF' {{IP}} {{FQDN}} {{HOST}} {{IPV6}} {{FQDN}} {{HOST}} EOF ``` Les images Contabo utilisent **cloud-init**, qui peut remettre l'ancien nom du serveur au redémarrage. Bloquez ce comportement : ```bash [ -d /etc/cloud/cloud.cfg.d ] && echo 'preserve_hostname: true' > /etc/cloud/cloud.cfg.d/99-preserve-hostname.cfg ``` > [!CHECK] > `hostname -f` doit afficher {{FQDN}}. ## Régler le fuseau horaire Adaptez la zone à votre pays. La liste complète s'obtient avec `timedatectl list-timezones`. ```bash timedatectl set-timezone Africa/Abidjan timedatectl ``` ## Supprimer UFW HestiaCP gère son propre pare-feu (iptables + Fail2ban). L'installeur considère UFW comme un paquet en conflit : supprimez-le avant. ```bash ufw disable apt purge -y ufw ``` ## Vérifier les noms réservés HestiaCP crée un compte Linux pour son administrateur. Le nom {{ADMIN}} ne doit exister **ni comme utilisateur, ni comme groupe**, et doit être différent de {{USER}}. ```bash getent passwd {{ADMIN}}; getent group {{ADMIN}} ``` > [!CHECK] > Aucune ligne ne doit s'afficher. > [!NOTE] Pourquoi pas « admin » ? > Sur les images Ubuntu de Contabo, un **groupe `admin` existe déjà**, et l'installeur refuse un nom déjà pris. Choisissez un nom personnel (ex. `hadmin`, `skadmin`) : c'est aussi un nom de moins à deviner pour les robots. ## Éviter le blocage IPv6 pendant l'installation Sur certains VPS, l'installeur se bloque en téléchargeant ses paquets par IPv6. Dites au système de préférer l'IPv4 pour les connexions sortantes (l'IPv6 reste active) : ```bash sed -i 's|^#precedence ::ffff:0:0/96 100|precedence ::ffff:0:0/96 100|' /etc/gai.conf grep "^precedence" /etc/gai.conf ``` > [!CHECK] > La commande `grep` affiche `precedence ::ffff:0:0/96 100`. ## Vérifier la configuration réseau (Netplan) L'installeur s'attend à trouver la configuration réseau dans `/etc/netplan`. ```bash ls /etc/netplan/ ip -6 addr show scope global ``` > [!CHECK] > Au moins un fichier `.yaml` dans `/etc/netplan/`, et votre IPv6 {{IPV6}} dans la sortie de `ip`. ## Ajouter un fichier d'échange (swap) HestiaCP ne crée un swap que sur les très petits serveurs. Un swap de 4 Go évite qu'un pic de mémoire ne fasse planter MariaDB ou ClamAV. ```bash swapon --show ``` Si rien ne s'affiche : ```bash fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab echo 'vm.swappiness = 10' > /etc/sysctl.d/99-swap.conf sysctl --system > /dev/null ``` > [!CHECK] > `free -h` affiche une ligne `Swap:` de 4,0 Gi. ## Installer les outils de base Uniquement des outils sans conflit avec HestiaCP : ni serveur web, ni base de données, ni serveur mail. ```bash apt install -y curl wget git micro htop tmux unzip ca-certificates gnupg lsb-release dnsutils ``` Faites de `micro` l'éditeur par défaut : ```bash update-alternatives --install /usr/bin/editor editor /usr/bin/micro 60 update-alternatives --set editor /usr/bin/micro ``` ## Créer votre utilisateur sudo Vous ne vous connecterez plus en root après le chapitre 4. Créez votre compte d'administration système : ```bash adduser {{USER}} usermod -aG sudo {{USER}} ``` Autorisez `sudo` sans mot de passe pour ce compte. C'est pratique, mais cela suppose une connexion par **clé SSH uniquement** (chapitre 4). ```bash echo '{{USER}} ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/010-{{USER}} chmod 440 /etc/sudoers.d/010-{{USER}} visudo -c ``` > [!CHECK] > `visudo -c` répond `parsed OK` pour chaque fichier. ## Installer votre clé SSH **Sur votre ordinateur** (pas sur le serveur), créez une clé si vous n'en avez pas : ```bash ssh-keygen -t ed25519 -C "{{USER}}@{{HOST}}" ``` Puis envoyez-la au serveur : ```bash ssh-copy-id {{USER}}@{{IP}} ``` Sous Windows sans `ssh-copy-id`, copiez le contenu de `C:\Users\\.ssh\id_ed25519.pub` dans le fichier `/home/{{USER}}/.ssh/authorized_keys` du serveur. > [!CHECK] > Dans un **nouveau** terminal, `ssh {{USER}}@{{IP}}` vous connecte sans mot de passe, puis `sudo whoami` répond `root`. Gardez la session root ouverte tant que ce test n'est pas réussi.