- 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
174 lines
4.6 KiB
Markdown
174 lines
4.6 KiB
Markdown
# 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\<vous>\.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.
|