Configurer un serveur VPS Linux de A à Z pour son site

Dans cet article

  • Un VPS à 5-10 €/mois suffit pour héberger la majorité des sites WordPress ou PHP
  • La configuration complète prend environ 2 à 3 heures en suivant ce guide pas à pas
  • Nginx + PHP-FPM + MariaDB est le stack le plus performant pour 99 % des sites vitrine et e-commerce
  • Le certificat SSL gratuit Let’s Encrypt se renouvelle automatiquement avec Certbot
  • Les sauvegardes automatisées et le pare-feu UFW sont indispensables dès la mise en production
  • Un serveur bien configuré peut servir 10 à 50 fois plus de requêtes qu’un mutualisé classique

Passer d’un hébergement mutualisé à un VPS est une étape que j’ai franchie il y a plus de dix ans. Je me souviens encore de la première fois où j’ai tapé ssh root@mon-ip dans un terminal : un mélange d’excitation et de vertige. Depuis, j’ai configuré des dizaines de serveurs VPS Linux pour mes clients et mes propres projets. Je vais vous transmettre exactement la méthode que j’utilise aujourd’hui, en 2026, pour configurer un serveur VPS Linux de A à Z pour héberger un site web.

Ce guide est conçu pour les développeurs, les webmasters et les entrepreneurs qui veulent reprendre le contrôle total de leur hébergement. Pas besoin d’être administrateur système : si vous savez copier-coller des commandes dans un terminal, vous pouvez suivre chaque étape.

Pourquoi configurer son propre VPS

Avant de plonger dans la technique, clarifions pourquoi vous devriez envisager de configurer un serveur VPS Linux plutôt que de rester sur un hébergement classique.

Sur un mutualisé, vous partagez les ressources (CPU, RAM, bande passante) avec des centaines d’autres sites. Un pic de trafic chez votre voisin peut ralentir votre propre site. Sur un VPS, les ressources qui vous sont allouées sont garanties et dédiées. J’ai vu des sites WordPress passer de 3 secondes de temps de chargement à moins de 800 millisecondes simplement en migrant vers un VPS bien configuré.

Les avantages concrets d’un VPS :

  • Performance prévisible : vos ressources CPU et RAM sont isolées
  • Contrôle total : vous choisissez chaque logiciel, chaque version, chaque paramètre
  • Scalabilité : vous pouvez augmenter les ressources en quelques clics sans migration
  • Sécurité renforcée : vous n’êtes pas exposé aux failles des sites voisins
  • Coût maîtrisé : un VPS performant coûte entre 5 et 20 € par mois

Comme je l’explique dans mon comparatif hébergement dédié, VPS et mutualisé, le VPS représente le meilleur compromis entre puissance et budget pour la grande majorité des projets web.

Connexion SSH au serveur VPS depuis un terminal pour la configuration initiale
Connexion SSH au serveur VPS depuis un terminal pour la configuration initiale

Choisir son VPS et son système d’exploitation

Le choix du fournisseur et de la distribution Linux conditionne toute la suite. Voici mes recommandations basées sur des années de pratique.

Quel fournisseur VPS choisir

Pour un site destiné au public français, je privilégie les datacenters situés en France ou en Europe de l’Ouest. La latence réseau a un impact direct sur le temps de chargement.

Fournisseur VPS entrée de gamme RAM Stockage Datacenter France Prix/mois
OVHcloud (VPS Starter) 1 vCore 2 Go 20 Go SSD Gravelines, Strasbourg 3,50 €
Hetzner (CX22) 2 vCPU 4 Go 40 Go SSD Falkenstein (Allemagne) 4,35 €
Scaleway (DEV1-S) 2 vCPU 2 Go 20 Go SSD Paris 4,49 €
Contabo (VPS S) 4 vCPU 8 Go 50 Go SSD Non (Allemagne) 6,99 €
DigitalOcean (Basic) 1 vCPU 2 Go 50 Go SSD Amsterdam 12 $

Pour un site vitrine ou un blog WordPress, 2 Go de RAM et 1 à 2 vCPU suffisent largement. Pour un site e-commerce WooCommerce avec du trafic régulier, visez au minimum 4 Go de RAM. Mon article sur les hébergements VPS en 2026 détaille les critères de choix.

Quelle distribution Linux installer

Je recommande Ubuntu 24.04 LTS (ou la dernière version LTS disponible). C’est la distribution la plus documentée, avec le plus grand écosystème de paquets. Debian 12 est une excellente alternative si vous préférez un système plus minimaliste.

Évitez CentOS (abandonné par Red Hat) et les distributions exotiques pour un serveur de production. La stabilité et la disponibilité des mises à jour de sécurité priment sur tout le reste.

Lors de la commande de votre VPS, sélectionnez Ubuntu 24.04 LTS 64 bits dans le panneau de votre fournisseur. Vous recevrez par email l’adresse IP du serveur et le mot de passe root.

Sécuriser l’accès au serveur dès la première connexion

La sécurisation est la toute première étape, avant même d’installer quoi que ce soit. Un serveur exposé sur Internet reçoit des tentatives de connexion brute force en quelques minutes.

Première connexion et mise à jour

Connectez-vous à votre serveur depuis votre terminal :

ssh root@VOTRE_IP_SERVEUR

Première chose à faire, mettre à jour tous les paquets :

apt update && apt upgrade -y

Créer un utilisateur non-root

Travailler en root en permanence est une mauvaise pratique. Créez un utilisateur dédié :

adduser deploy
usermod -aG sudo deploy

Le nom « deploy » est une convention que j’utilise sur tous mes serveurs. Choisissez un mot de passe robuste d’au moins 16 caractères.

Configurer l’authentification par clé SSH

Sur votre machine locale, générez une paire de clés si vous n’en avez pas encore :

ssh-keygen -t ed25519 -C "[email protected]"

Copiez la clé publique sur le serveur :

ssh-copy-id deploy@VOTRE_IP_SERVEUR

Puis désactivez la connexion par mot de passe et l’accès root direct. Éditez le fichier de configuration SSH :

sudo nano /etc/ssh/sshd_config

Modifiez ces lignes :

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222

Changer le port SSH par défaut (22) vers un port personnalisé comme 2222 réduit considérablement les tentatives automatisées. Redémarrez le service SSH :

sudo systemctl restart sshd

Attention : avant de fermer votre session actuelle, ouvrez un nouveau terminal et vérifiez que vous pouvez vous connecter avec le nouvel utilisateur et le nouveau port :

ssh -p 2222 deploy@VOTRE_IP_SERVEUR

Configurer le pare-feu UFW

UFW (Uncomplicated Firewall) est le pare-feu standard d’Ubuntu. Configurez-le pour n’autoriser que les ports nécessaires :

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Vérifiez le statut :

sudo ufw status verbose

Installer Fail2Ban contre le brute force

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Fail2Ban surveille les logs de connexion et bannit automatiquement les adresses IP qui échouent trop de tentatives. La configuration par défaut est déjà efficace pour SSH.

Infrastructure réseau d'un datacenter où sont hébergés les serveurs VPS
Infrastructure réseau d’un datacenter où sont hébergés les serveurs VPS

Installer et configurer Nginx comme serveur web

J’utilise Nginx plutôt qu’Apache sur tous mes VPS depuis 2016. Nginx consomme moins de mémoire, gère mieux les connexions simultanées et offre des performances supérieures pour servir des fichiers statiques.

Installation de Nginx

sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Vérifiez que Nginx fonctionne en accédant à http://VOTRE_IP_SERVEUR dans votre navigateur. Vous devriez voir la page par défaut de Nginx.

Configuration d’un virtual host

Créez un fichier de configuration pour votre site :

sudo nano /etc/nginx/sites-available/monsite.fr

Voici la configuration de base que j’utilise sur mes projets :

server {
    listen 80;
    server_name monsite.fr www.monsite.fr;
    root /var/www/monsite.fr/public;
    index index.php index.html;

    # Logs
    access_log /var/log/nginx/monsite.fr.access.log;
    error_log /var/log/nginx/monsite.fr.error.log;

    # Sécurité headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Gzip
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    location ~ /\. {
        deny all;
    }
}

Activez le site et testez la configuration :

sudo ln -s /etc/nginx/sites-available/monsite.fr /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Cette configuration inclut déjà la compression Gzip, le cache navigateur pour les fichiers statiques et les headers de sécurité essentiels. Ce sont des optimisations que la plupart des hébergeurs mutualisés n’activent pas par défaut.

Installer PHP-FPM et MariaDB pour votre stack

Pour faire tourner WordPress, Symfony ou tout CMS PHP, vous avez besoin de PHP et d’une base de données.

Installer PHP 8.3 et ses extensions

sudo apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip php8.3-gd php8.3-intl php8.3-bcmath php8.3-opcache -y

Optimisez la configuration PHP pour la production. Éditez /etc/php/8.3/fpm/php.ini :

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
memory_limit = 256M
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000

L’activation d’OPcache est cruciale : elle met en cache le bytecode PHP compilé et peut réduire le temps de réponse de 40 à 70 % sur un site dynamique.

sudo systemctl restart php8.3-fpm

Installer et sécuriser MariaDB

MariaDB est un fork de MySQL, plus performant et totalement compatible. C’est mon choix par défaut depuis plusieurs années :

sudo apt install mariadb-server -y
sudo mysql_secure_installation

Le script mysql_secure_installation vous guide pour définir un mot de passe root, supprimer les bases de test et désactiver l’accès root distant. Répondez oui à toutes les questions.

Créez ensuite une base de données et un utilisateur dédié pour votre site :

sudo mysql -u root -p
CREATE DATABASE monsite_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'monsite_user'@'localhost' IDENTIFIED BY 'VotreMotDePasseRobuste2026!';
GRANT ALL PRIVILEGES ON monsite_db.* TO 'monsite_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Ne donnez jamais les privilèges root à l’utilisateur de votre application. Chaque site doit avoir son propre utilisateur de base de données avec des droits limités à sa seule base.

Déployer votre site et activer le certificat SSL

Préparer le répertoire du site

Créez l’arborescence pour votre site :

sudo mkdir -p /var/www/monsite.fr/public
sudo chown -R deploy:www-data /var/www/monsite.fr
sudo chmod -R 755 /var/www/monsite.fr

Pour un site WordPress, téléchargez et installez les fichiers :

cd /var/www/monsite.fr/public
wget https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
sudo chown -R deploy:www-data /var/www/monsite.fr/public
sudo find /var/www/monsite.fr/public -type d -exec chmod 755 {} \;
sudo find /var/www/monsite.fr/public -type f -exec chmod 644 {} \;

Pointer le nom de domaine

Dans l’interface de gestion de votre nom de domaine, créez un enregistrement DNS de type A pointant vers l’adresse IP de votre VPS :

monsite.fr.     A     VOTRE_IP_SERVEUR
www.monsite.fr. CNAME monsite.fr.

La propagation DNS prend généralement entre 5 minutes et 24 heures. Vous pouvez vérifier avec la commande dig monsite.fr. Si vous avez besoin de transférer votre nom de domaine, faites-le avant cette étape.

Installer le certificat SSL avec Let’s Encrypt

Un certificat SSL gratuit Let’s Encrypt est indispensable. Google pénalise les sites sans HTTPS et vos visiteurs verront un avertissement de sécurité dans leur navigateur.

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d monsite.fr -d www.monsite.fr

Certbot modifie automatiquement votre configuration Nginx pour rediriger le HTTP vers HTTPS et configure le renouvellement automatique. Vérifiez que le timer de renouvellement est actif :

sudo systemctl status certbot.timer

Le certificat se renouvelle automatiquement tous les 60 à 90 jours. Vous n’avez rien d’autre à faire.

Surveillance des performances du serveur VPS via un tableau de bord de monitoring
Surveillance des performances du serveur VPS via un tableau de bord de monitoring

Sauvegardes, monitoring et maintenance au quotidien

Un serveur sans sauvegarde est une bombe à retardement. J’ai vu des clients perdre des mois de travail parce qu’ils pensaient que « le fournisseur s’en occupait ». La réalité : sur un VPS, vous êtes responsable de vos données.

Mettre en place des sauvegardes automatiques

Créez un script de sauvegarde dans /usr/local/bin/backup.sh :

#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/var/backups/monsite"

mkdir -p $BACKUP_DIR

# Sauvegarde base de données
mysqldump -u monsite_user -p'VotreMotDePasse' monsite_db | gzip > $BACKUP_DIR/db_$DATE.sql.gz

# Sauvegarde fichiers
tar czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/monsite.fr/public

# Supprimer les sauvegardes de plus de 30 jours
find $BACKUP_DIR -type f -mtime +30 -delete

Rendez-le exécutable et planifiez-le avec cron :

sudo chmod +x /usr/local/bin/backup.sh
sudo crontab -e

Ajoutez cette ligne pour une sauvegarde quotidienne à 3h du matin :

0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Pour une protection maximale, synchronisez vos sauvegardes vers un stockage externe (S3, un autre serveur, ou un espace de stockage objet). Mon guide pour sauvegarder WordPress automatiquement détaille les différentes stratégies.

Configurer les mises à jour automatiques de sécurité

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

Cela installe automatiquement les correctifs de sécurité sans intervention de votre part. Les mises à jour majeures restent manuelles, ce qui vous laisse le contrôle.

Monitoring basique avec des outils en ligne de commande

Surveillez votre serveur régulièrement avec ces commandes essentielles :

  • htop : visualiser la charge CPU et mémoire en temps réel
  • df -h : vérifier l’espace disque disponible
  • sudo tail -f /var/log/nginx/error.log : surveiller les erreurs Nginx
  • sudo journalctl -u php8.3-fpm --since today : consulter les logs PHP

Installez htop si ce n’est pas déjà fait :

sudo apt install htop -y

Pour un monitoring plus avancé, des outils comme Netdata (gratuit et open source) fournissent un tableau de bord web complet avec alertes. Une simple commande suffit pour l’installer :

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Optimiser les performances de votre VPS

Une fois votre site en ligne, quelques ajustements permettent d'extraire le maximum de votre serveur.

Activer le cache FastCGI dans Nginx

Le cache FastCGI stocke les pages PHP générées et les sert directement depuis Nginx, sans repasser par PHP. C'est l'optimisation la plus impactante pour un site dynamique.

Ajoutez cette configuration dans le bloc http de /etc/nginx/nginx.conf :

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

Puis dans votre virtual host, ajoutez dans le bloc location ~ \.php$ :

fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

Avec cette configuration, les pages en cache sont servies en moins de 10 millisecondes au lieu de 200 à 500 ms.

Configurer le swap pour éviter les crashs mémoire

Si votre VPS a peu de RAM (2 Go), un fichier swap empêche le kernel de tuer vos processus quand la mémoire est saturée :

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Réglez le swappiness pour que le swap ne soit utilisé qu'en dernier recours :

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Optimiser les workers Nginx et PHP-FPM

Dans /etc/nginx/nginx.conf, ajustez le nombre de workers selon vos vCPU :

worker_processes auto;
worker_connections 1024;

Pour PHP-FPM, éditez /etc/php/8.3/fpm/pool.d/www.conf :

pm = dynamic
pm.max_children = 15
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 8
pm.max_requests = 500

Ces valeurs sont calibrées pour un VPS avec 2 à 4 Go de RAM. Chaque processus PHP-FPM consomme environ 30 à 50 Mo de mémoire. Adaptez pm.max_children en fonction de votre RAM disponible.

Activer HTTP/2 pour des chargements plus rapides

HTTP/2 est activé automatiquement par Certbot lors de l'installation SSL. Vérifiez que cette ligne est présente dans votre configuration Nginx :

listen 443 ssl http2;

HTTP/2 permet le multiplexage des requêtes, la compression des headers et le server push. Le gain est particulièrement visible sur les pages chargées en ressources (CSS, JavaScript, images).

Pour aller plus loin dans l'optimisation de votre site une fois le serveur configuré, consultez mon guide technique d'optimisation WordPress pour le SEO. Si vous envisagez de gérer plusieurs sites sur votre VPS, la solution WordPress multisite peut être pertinente.

Pour ceux qui hésitent encore entre gérer leur propre VPS ou opter pour un hébergement WordPress managé comme Kinsta ou WP Engine, la réponse dépend de votre temps disponible et de votre appétence technique. Un VPS auto-géré coûte 3 à 5 fois moins cher qu'un hébergement managé premium, mais demande de la maintenance régulière.

Si vous partez de zéro et que vous souhaitez créer une boutique en ligne avec WooCommerce, un VPS bien configuré avec au moins 4 Go de RAM est le socle idéal. Pensez également à choisir un hébergement adapté au e-commerce si le trafic de votre boutique est important.

À retenir

  • Sécurisez votre VPS avant toute autre installation : clé SSH, port personnalisé, pare-feu UFW et Fail2Ban
  • Utilisez le stack Nginx + PHP-FPM + MariaDB pour des performances optimales sur un VPS Linux
  • Activez OPcache et le cache FastCGI pour diviser le temps de réponse par 5 à 10
  • Mettez en place des sauvegardes automatiques quotidiennes avec synchronisation vers un stockage externe
  • Configurez les mises à jour de sécurité automatiques avec unattended-upgrades pour ne jamais rater un patch critique

Questions fréquentes


Combien de temps faut-il pour configurer un VPS Linux complet ?

En suivant ce guide pas à pas, comptez entre 2 et 3 heures pour une configuration complète incluant la sécurisation, l'installation du stack web et le déploiement de votre site. Avec l'habitude, je configure un nouveau serveur en moins d'une heure. L'utilisation de scripts d'automatisation comme Ansible peut réduire ce temps à quelques minutes pour les configurations récurrentes.

Quelle configuration VPS minimum pour héberger un site WordPress ?

Pour un site WordPress standard avec un trafic modéré (jusqu'à 10 000 visiteurs par mois), un VPS avec 1 vCPU et 2 Go de RAM suffit. Pour un site WooCommerce ou un site recevant plus de 30 000 visiteurs mensuels, je recommande au minimum 2 vCPU et 4 Go de RAM. Le stockage SSD de 20 Go couvre la majorité des besoins, sauf si vous hébergez beaucoup de médias.

Faut-il utiliser un panel comme Plesk ou cPanel sur son VPS ?

Ce n'est pas nécessaire et je le déconseille pour des raisons de performances et de sécurité. Les panels de gestion consomment entre 500 Mo et 1 Go de RAM supplémentaire, ce qui est significatif sur un VPS d'entrée de gamme. La configuration manuelle via la ligne de commande, comme décrite dans ce guide, offre un contrôle total et des performances supérieures. Si vous tenez absolument à une interface graphique, préférez des solutions légères comme Webmin ou Virtualmin.

Comment migrer mon site existant vers mon nouveau VPS ?

La migration implique trois étapes : exporter votre base de données avec mysqldump, transférer vos fichiers via rsync ou scp, puis modifier la configuration DNS pour pointer vers la nouvelle IP. Pour WordPress, des plugins comme Duplicator ou All-in-One WP Migration simplifient le processus. Mon guide de migration WordPress sans downtime détaille la procédure complète pour éviter toute interruption de service.

Mon VPS est-il vulnérable aux attaques DDoS ?

Tout serveur connecté à Internet est potentiellement exposé aux attaques DDoS. Cependant, les mesures décrites dans ce guide (pare-feu UFW, Fail2Ban, headers de sécurité) protègent contre les attaques les plus courantes. Pour une protection DDoS avancée, placez votre site derrière Cloudflare (gratuit pour le plan de base) qui filtre le trafic malveillant avant qu'il n'atteigne votre serveur. La plupart des fournisseurs VPS comme OVHcloud incluent également une protection anti-DDoS de base dans leurs offres.

Comment héberger plusieurs sites sur un seul VPS ?

C'est l'un des grands avantages du VPS. Créez simplement un virtual host Nginx distinct pour chaque site dans /etc/nginx/sites-available/, avec son propre répertoire dans /var/www/ et sa propre base de données. Un VPS avec 4 Go de RAM peut confortablement héberger 5 à 10 sites WordPress à trafic modéré. Pensez à ajuster les paramètres pm.max_children de PHP-FPM en conséquence pour répartir la mémoire entre les sites.


Damien Roux
Damien Roux

Ingénieur système et expert hébergement web. Fondateur de web-city.fr, il partage guides pratiques, comparatifs objectifs et outils gratuits pour choisir le bon hébergeur et créer son site WordPress.

Retour en haut