guides/serveur/vps-setup-rapide.md
isUnknown 8268a7b24a Fix : ajouter sudo devant toutes les commandes ufw
ufw est dans /usr/sbin/ qui n'est pas dans le PATH utilisateur.
Sans sudo, bash affiche "command not found" au lieu d'erreur de permissions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 15:02:41 +01:00

8.7 KiB

Setup VPS rapide

Configuration sécurisée d'un VPS en 30-45 minutes.

Vous voulez comprendre en détail ?vps-setup-complet.md


🎯 Vue d'ensemble

1. Connexion SSH         (5 min)
2. Mises à jour          (5 min)
3. Utilisateur           (5 min) - Type A uniquement
4. Clés SSH              (10 min)
5. Sécuriser SSH         (5 min)
6. Pare-feu UFW          (5 min)
7. Fail2ban              (5 min)
8. Mises à jour auto     (5 min)
9. Apache                (5 min)
10. SSL (Let's Encrypt)  (5 min)
────────────────────────────────
Total: 30-50 min

Prérequis

  • VPS avec IP publique
  • Terminal (macOS/Linux)
  • Vim basics : i pour éditer, Esc :wq pour sauvegarder

Types d'accès :

  • Type A (OVH, Hetzner) : accès root direct
  • Type B (Infomaniak) : utilisateur debian/ubuntu avec sudo → Sautez étape 3

1. Première connexion (5 min)

# Type A
ssh root@IP-DU-VPS

# Type B
ssh debian@IP-DU-VPS  # ou ubuntu, admin selon l'hébergeur

Type A seulement - Changer le mot de passe root :

passwd  # Mot de passe fort (20+ caractères)

2. Mises à jour (5 min)

# Type A
apt update && apt upgrade -y && apt autoremove -y

# Type B
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

3. Créer un utilisateur (5 min)

⚠️ Type B : SAUTEZ cette étape

Type A uniquement :

# Créer l'utilisateur (remplacez "monuser")
adduser monuser

# Ajouter au groupe sudo
usermod -aG sudo monuser

# Vérifier
groups monuser  # Doit afficher : monuser sudo

4. Clés SSH (10 min)

Sur votre machine locale :

# Vérifier si vous avez déjà une clé
ls ~/.ssh/id_*.pub

# Si non, créer une clé
ssh-keygen -t ed25519 -C "votre-email@example.com"
# Appuyez sur Entrée 3 fois

# Afficher la clé
cat ~/.ssh/id_ed25519.pub
# Copiez la ligne complète

Sur le VPS :

# Type A - passer à votre utilisateur
su - monuser

# Type B - déjà votre utilisateur

# Créer le dossier .ssh
mkdir -p ~/.ssh && chmod 700 ~/.ssh

# Ajouter la clé
vim ~/.ssh/authorized_keys
# Appuyez sur 'i', collez la clé, Esc puis :wq

# Droits
chmod 600 ~/.ssh/authorized_keys

# Type A - retour à root
exit

Tester (nouveau terminal) :

ssh monuser@IP-DU-VPS  # Doit marcher SANS mot de passe

5. Sécuriser SSH (5 min)

# Éditer la config
# Type A
vim /etc/ssh/sshd_config

# Type B
sudo vim /etc/ssh/sshd_config

Modifier ces lignes :

PermitRootLogin no
PasswordAuthentication no

Redémarrer SSH :

# Type A
systemctl restart sshd

# Type B
sudo systemctl restart sshd

⚠️ IMPORTANT : Tester dans un NOUVEAU terminal avant de fermer l'ancien !

ssh monuser@IP-DU-VPS  # Doit marcher

6. Pare-feu UFW (5 min)

# Type A (root)
apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

# Type B (utilisateur sudo)
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

💡 Note : ufw nécessite toujours sudo (même en root) car il est dans /usr/sbin/


7. Fail2ban (5 min)

# Installer
# Type A
apt install fail2ban -y

# Type B
sudo apt install fail2ban -y

# Configuration minimale
# Type A
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

# Type B
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local

Dans le fichier, trouver et vérifier :

[DEFAULT]
bantime  = 600
findtime  = 600
maxretry = 5

[sshd]
enabled = true

Démarrer :

# Type A
systemctl start fail2ban
systemctl enable fail2ban
fail2ban-client status

# Type B
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
sudo fail2ban-client status

8. Mises à jour automatiques (5 min)

# Installer
# Type A
apt install unattended-upgrades -y
dpkg-reconfigure -plow unattended-upgrades

# Type B
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

# Sélectionnez "Oui"

9. Apache (5 min)

# Installer
# Type A
apt install apache2 -y
systemctl start apache2
systemctl enable apache2

# Type B
sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2

Tester :

  • Allez sur http://IP-DU-VPS dans votre navigateur
  • Vous devriez voir "Apache2 Debian Default Page"

10. Configurer un site (10 min)

DNS

Chez votre registrar :

Type    Nom    Valeur
A       @      IP-DU-VPS
A       www    IP-DU-VPS

Attendre 5-30 min, puis vérifier :

nslookup monsite.com  # Doit retourner votre IP

VirtualHost Apache

# Créer le dossier
# Type A
mkdir -p /var/www/monsite.com
chown -R monuser:monuser /var/www/monsite.com
echo "<h1>Ça marche !</h1>" > /var/www/monsite.com/index.html

# Type B (remplacez debian par votre user)
sudo mkdir -p /var/www/monsite.com
sudo chown -R debian:debian /var/www/monsite.com
echo "<h1>Ça marche !</h1>" > /var/www/monsite.com/index.html

# Créer le VirtualHost
# Type A
vim /etc/apache2/sites-available/monsite.com.conf

# Type B
sudo vim /etc/apache2/sites-available/monsite.com.conf

Contenu du fichier :

<VirtualHost *:80>
    ServerName monsite.com
    ServerAlias www.monsite.com
    DocumentRoot /var/www/monsite.com

    <Directory /var/www/monsite.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/monsite.com_error.log
    CustomLog ${APACHE_LOG_DIR}/monsite.com_access.log combined
</VirtualHost>

Activer le site :

# Type A
a2enmod rewrite
a2ensite monsite.com.conf
a2dissite 000-default.conf
apache2ctl configtest  # Doit dire "Syntax OK"
systemctl reload apache2

# Type B
sudo a2enmod rewrite
sudo a2ensite monsite.com.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

Tester :

  • Allez sur http://monsite.com
  • Vous devriez voir "Ça marche !"

11. SSL (Let's Encrypt) (5 min)

# Installer Certbot
# Type A
apt install certbot python3-certbot-apache -y
certbot --apache -d monsite.com -d www.monsite.com

# Type B
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d monsite.com -d www.monsite.com

# Répondre aux questions :
# Email : votre-email@example.com
# Terms : (A)gree
# Redirect : 2 (forcer HTTPS)

Tester :

  • Allez sur http://monsite.com → redirige vers https://monsite.com 🔒

Checklist finale

  • Connexion SSH par clé fonctionne
  • Mot de passe SSH désactivé
  • Root SSH désactivé
  • UFW actif (ports 22, 80, 443)
  • Fail2ban actif
  • Apache fonctionne
  • Site accessible en HTTP
  • SSL installé et HTTPS fonctionne
  • Redirection HTTP → HTTPS active

🚀 Prochaines étapes

Déployer votre site

  • Kirby CMSkirby-vps-deploy.md
  • Autre site statique → Utilisez rsync :
    rsync -avhP ./mon-site/ user@IP:/var/www/monsite.com/
    

Maintenance de base

# Voir les logs Apache
sudo tail -f /var/log/apache2/monsite.com_error.log

# Voir les IPs bannies par Fail2ban
sudo fail2ban-client status sshd

# Espace disque
df -h

# Mettre à jour
sudo apt update && sudo apt upgrade -y

📚 Pour aller plus loin


Commandes de référence rapide

# SSH
ssh user@host
ssh -i ~/.ssh/cle user@host

# UFW
sudo ufw status
sudo ufw allow 8080/tcp
sudo ufw delete 3

# Fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip IP

# Apache
sudo systemctl status apache2
sudo systemctl reload apache2
sudo apache2ctl configtest
sudo a2ensite site.conf
sudo a2dissite site.conf

# Certbot
sudo certbot certificates
sudo certbot renew --dry-run

# Logs
sudo tail -f /var/log/apache2/error.log
sudo journalctl -u apache2 -n 50

# Système
df -h
du -sh /var/www/*
systemctl list-units --type=service --state=running

Temps total : 30-50 minutes pour un VPS sécurisé et fonctionnel ! 🎉