01 - Serveur initial : utilisateur, SSH, pare-feu, durcissement
Objectif : ne plus jamais utiliser root en direct, sécuriser l'accès SSH, et
préparer le terrain. À faire une seule fois, en tout premier.
1. Récupérer les infos du VPS
Dans le panneau Hostinger (hPanel → VPS), note :
- l'adresse IP du VPS (IPv4),
- le mot de passe root initial (ou la clé si tu en as fourni une à la création).
1bis. ⚠️ Vérifier le pare-feu hPanel (en plus d'UFW)
Piège fréquent chez Hostinger : en plus du pare-feu UFW sur le serveur, hPanel propose un pare-feu cloud séparé (hPanel → VPS → Firewall), appliqué devant le serveur. Si un profil de pare-feu est attaché à ton VPS avec des règles restrictives, un port peut être ouvert dans UFW et quand même injoignable depuis Internet - c'est la cause n°1 d'un « Coolify ne répond pas sur IP:8000 ».
Va dans hPanel → VPS → Firewall :
- Aucun pare-feu attaché → rien à faire, tout passe (par défaut).
- Un pare-feu est attaché → vérifie/ajoute des règles TCP autorisant
au minimum :
22(SSH),80(HTTP),443(HTTPS), et temporairement8000(UI Coolify pendant l'installation, voir 06-coolify.md). Source :0.0.0.0/0(n'importe où) sauf si tu veux restreindre le SSH à ton IP.
Garde ça en tête à chaque nouveau port que tu ouvres côté UFW plus tard : il faut aussi l'ouvrir ici si un pare-feu hPanel est attaché.
2. Générer une clé SSH sur TON PC (Windows)
Si tu n'as pas déjà de clé SSH, ouvre PowerShell sur ta machine :
ssh-keygen -t ed25519 -C "engwe-vps"
- Appuie sur Entrée pour l'emplacement par défaut (
C:\Users\<toi>\.ssh\id_ed25519). - Mets une passphrase (recommandé) ou laisse vide.
Affiche ta clé publique (c'est elle qu'on met sur le serveur) :
Get-Content $HOME\.ssh\id_ed25519.pub
Copie toute la ligne (commence par ssh-ed25519 AAAA...). Tu en auras besoin à l'étape 4.
3. Première connexion en root
ssh root@IP_DU_VPS
Accepte l'empreinte (yes) et entre le mot de passe root.
4. Lancer le script de durcissement
Sur le VPS (en root), crée le script. Le plus simple : ouvre nano et colle le
contenu de scripts/01-bootstrap.sh :
nano 01-bootstrap.sh
Avant de sauvegarder, vérifie/édite en haut du fichier :
NEW_USER="engwe-seer"- le nom de ton utilisateur non-root,SSH_PUBKEY="..."- colle ta clé publique (étape 2) entre les guillemets.
Sauvegarde (Ctrl+O, Entrée) et quitte (Ctrl+X). Puis :
chmod +x 01-bootstrap.sh
./01-bootstrap.sh
Le script crée l'utilisateur, installe ta clé (pour lui et pour root),
désactive le mot de passe en SSH (root ne reste joignable que par clé,
jamais par mot de passe), configure UFW (ports 22/80/443), fail2ban, les mises
à jour auto et un swap de 2 Go.
Pourquoi laisser
rootjoignable par clé plutôt que le couper totalement ? Parce que Coolify (doc 06) a besoin de gérer son propre serveur via SSH en root - sans ça, son proxy et sa validation interne échouent en cascade avec des erreursPermission denied. Ça reste sûr : sans mot de passe root valide et sans ta clé privée, personne ne peut s'y connecter. Toi, au quotidien, tu continues d'utiliser exclusivement ton utilisateur non-root.
5. ⚠️ Vérifier AVANT de fermer la session root
Ouvre un NOUVEAU PowerShell (garde l'ancien ouvert au cas où) :
ssh engwe-seer@IP_DU_VPS
Tu dois te connecter sans mot de passe (grâce à la clé). Vérifie sudo :
sudo whoami # doit répondre : root
✅ Si ça marche, tu peux fermer la session root. À partir de maintenant tu te
connectes toujours avec ssh engwe-seer@IP_DU_VPS.
❌ Si la connexion
engwe-seer@échoue, ne ferme pas la session root : relis la variableSSH_PUBKEY(clé mal collée = cause n°1) et corrige/home/engwe-seer/.ssh/authorized_keys.
6. (Confort) Alias de connexion côté Windows
Pour taper juste ssh engwe-vps, crée/édite C:\Users\<toi>\.ssh\config :
Host engwe-vps
HostName IP_DU_VPS
User engwe-seer
IdentityFile ~/.ssh/id_ed25519
Vérifications de fin d'étape
sudo ufw status # doit montrer 22, 80, 443 ALLOW
sudo systemctl status fail2ban --no-pager
free -h # doit montrer 2 Go de swap
Depuis ton PC, vérifie aussi que les ports répondent bien de l'extérieur (et pas seulement selon UFW) - utile pour détecter un blocage côté pare-feu hPanel (§1bis) :
Test-NetConnection -ComputerName IP_DU_VPS -Port 22
Test-NetConnection -ComputerName IP_DU_VPS -Port 80
TcpTestSucceeded : True attendu. Si c'est False alors qu'UFW montre le port
ALLOW, retourne vérifier hPanel → VPS → Firewall.
➡️ Étape suivante :
- 🟢 Parcours A (recommandé) → 06-coolify.md (Docker inclus)
- Parcours B → 02-docker.md
🩹 Bloqué sur une erreur ? → 08-erreurs-connues.md
