Guide de déploiement

Héberger WordPress sur votre propre VPS

Déployer sur un VPS Cloud →

Tutoriel

Self-hosting

Héberger WordPress sur votre propre VPS

WordPress propulse plus de 40 % du web, mais l'hébergement mutualisé bride ses performances. Sur un VPS dédié avec Docker, vous obtenez vitesse, isolation et liberté totale de configuration. Voici un déploiement robuste, sécurisé et rapide.

7 min de lecture14 étapes
Sommaire· Pourquoi auto-héberger WordPress sur un VPS1/8
  1. 01Pourquoi auto-héberger WordPress sur un VPS
  2. 02Les gains d'un WordPress sur VPS
  3. 03Prérequis réalistes
  4. 04Déploiement pas à pas
  5. 05Alerte PHP du 21/10/2026 (PHP2Shell) : mettre à jour WordPress ne corrige pas PHP
  6. 06Vérifier puis corriger en cinq gestes
  7. 07Atténuation partielle, pas un correctif
  8. 08La documentation officielle

Pourquoi auto-héberger WordPress sur un VPS

L'hébergement mutualisé partage CPU, RAM et même la base de données avec des centaines d'autres sites : votre vitesse dépend des voisins, et l'accès SSH ou la configuration fine du serveur sont souvent verrouillés. Un VPS vous donne des ressources allouées à votre machine, le contrôle total de PHP-FPM, du serveur web, du cache objet (Redis) et du cache de pages. Pour une agence qui gère plusieurs sites clients, c'est aussi la possibilité de tout isoler en conteneurs sur une seule machine, avec des sauvegardes et des déploiements maîtrisés, là où le mutualisé impose ses limites et ses surcoûts.

Les gains d'un WordPress sur VPS

  • Ressources CPU/RAM allouées à votre machine : moins de ralentissements dus aux voisins
  • Contrôle total de PHP-FPM, du serveur web et des extensions
  • Cache objet Redis et cache de pages pour des temps de réponse divisés
  • Accès SSH/WP-CLI complet pour automatiser maintenance et déploiements
  • Isolation par conteneur : plusieurs sites clients sur un seul VPS
  • Sauvegardes et règles de sécurité définies par vous, sans surcoût par site

Prérequis réalistes

Un VPS 2 vCPU / 2 Go de RAM tient confortablement un site WordPress avec un trafic modéré ; passez à 4 Go avec Redis, WooCommerce ou plusieurs sites. Il vous faut Docker + Compose, une base MariaDB ou MySQL, idéalement Redis pour le cache objet, et un domaine votredomaine.com avec son certificat SSL. Prévoyez un peu de réglage PHP (upload_max_filesize, memory_limit) selon vos médias et extensions.

Déploiement pas à pas

  1. Composer WordPress, MariaDB et Redis

    Dans docker-compose.yml, déclarez wordpress:php8.3-fpm ou wordpress:apache, un service mariadb:11 et redis:alpine. Persistez wp-content et la base dans des volumes nommés, sur un réseau Docker interne.

  2. Renseigner la base et les secrets

    Passez WORDPRESS_DB_* et des mots de passe forts via variables d'environnement. Ajoutez les clés de sécurité (salts) générées depuis l'API officielle WordPress dans WORDPRESS_CONFIG_EXTRA.

  3. Lancer et installer WordPress

    Démarrez avec docker compose up -d puis ouvrez votre domaine pour l'assistant d'installation. Mieux : automatisez via WP-CLI (wp core install) pour des déploiements reproductibles d'un site à l'autre.

  4. Placer le reverse proxy et le SSL

    Configurez Nginx/Caddy en HTTPS devant WordPress. Ajustez client_max_body_size pour les uploads, activez la compression gzip/brotli et le cache des assets statiques (images, CSS, JS) avec des en-têtes Cache-Control longs.

  5. Activer le cache objet Redis

    Installez un plugin de cache objet (ex. Redis Object Cache), pointez-le vers le service redis, et activez-le : les requêtes répétées à la base sont servies depuis la mémoire, allégeant fortement MariaDB.

  6. Durcir et sauvegarder

    Désactivez l'édition de fichiers dans l'admin (DISALLOW_FILE_EDIT), limitez les tentatives de connexion, et planifiez une sauvegarde nocturne de wp-content + dump SQL vers un stockage objet distant.

  7. Se connecter la première fois

    Ouvrez l'URL du site : WordPress lance son installation en 5 minutes — langue, titre du site, puis création de VOTRE identifiant administrateur avec le mot de passe et l'e-mail de votre choix. Terminez-la sans attendre, une installation inachevée est offerte au premier visiteur.

Pour des performances qui rivalisent avec les plateformes managées les plus rapides, ajoutez un cache de pages complet en amont de PHP : un plugin générant des fichiers HTML statiques servis directement par Nginx (via try_files), ou un module FastCGI cache. Vos pages publiques ne touchent alors plus du tout PHP ni MariaDB, ce qui permet à un VPS modeste d'encaisser des milliers de visiteurs simultanés, tout en gardant le back-office et le panier (WooCommerce) exclus du cache.

Alerte PHP du 21/10/2026 (PHP2Shell) : mettre à jour WordPress ne corrige pas PHP

Le 21 octobre 2026, le projet PHP a publié des versions de sécurité pour deux failles d'exécution de code à distance, CVE-2026-109618 et CVE-2026-109619. Le correctif se trouve dans PHP lui-même : les versions corrigées sont 8.5.12, 8.4.27, 8.3.36 et 8.2.35. Votre WordPress peut donc être à jour (cœur, thèmes, extensions) tout en tournant sur un PHP vulnérable, puisque le tableau de bord de mises à jour ne touche jamais à l'interpréteur. Avec la stack de cet article, PHP vit dans l'image Docker wordpress : tant que vous n'avez pas récupéré une image reconstruite sur une version corrigée et recréé le conteneur, la faille reste ouverte. Pour le détail des deux failles, lisez l'article php2shell-cve-2026-109618-109619-mettre-a-jour-php ; pour la reconstruction des images, php2shell-docker-wordpress-reconstruire-images-php.

Vérifier puis corriger en cinq gestes

  1. Lire la version PHP réellement servie

    Le plus fiable est dans WordPress : Outils > Santé du site > Infos > Serveur affiche la version PHP qui exécute vos pages. Sur un VPS sans Docker, méfiez-vous de php -v : il interroge le binaire en ligne de commande, qui peut être une autre version que celle de PHP-FPM, laquelle sert vos visiteurs. Interrogez le service lui-même avec php-fpm -v (ou php-fpm8.3 -v sur Debian et Ubuntu).

  2. Contrôler la version dans le conteneur

    Avec Docker, lancez docker compose exec wordpress php -v : l'image embarque un seul PHP, donc ce résultat vaut pour le FPM ou le mod_php du conteneur. Comparez-le aux versions corrigées ci-dessus, en gardant la même branche (8.3.x doit atteindre 8.3.36, pas 8.4.27).

  3. Récupérer l'image à jour

    Exécutez docker compose pull && docker compose up -d. Le pull télécharge la dernière image publiée pour votre tag (par exemple wordpress:php8.3-fpm), et up -d recrée le conteneur dessus. Vos volumes nommés conservent wp-content et la base. Si php -v affiche encore une ancienne version, l'image corrigée n'est pas encore publiée pour ce tag : revenez-y plus tard, ou changez de branche PHP si votre site la supporte.

  4. Redémarrer PHP-FPM

    Une mise à jour de paquet ou de fichiers ne change pas le code déjà chargé par les processus en cours. Sur un serveur classique, redémarrez le service avec systemctl restart php8.3-fpm (adaptez le numéro de version) ; avec Docker, la recréation du conteneur suffit, sinon docker compose restart wordpress. Un simple reload est moins sûr qu'un restart pour être certain que tous les workers sont renouvelés.

  5. Chercher des traces d'exploitation

    Une mise à jour ferme la porte, elle ne dit pas si quelqu'un est déjà entré. Parcourez les journaux d'accès et d'erreur de Nginx ou d'Apache (docker compose logs --since 72h wordpress avec Docker) à la recherche de plantages de workers PHP-FPM, de messages « out of memory » répétés et de requêtes inhabituelles de gros volume. Dans wp-content, listez les fichiers .php modifiés récemment avec find wp-content -name '*.php' -mtime -7, surtout dans uploads, où aucun script ne devrait se trouver. Au moindre doute, restaurez depuis une sauvegarde saine et changez les mots de passe et les salts.

  6. Automatiser le contrôle avec WP-CLI et cron

    Notez que wp --info renvoie la version du PHP en ligne de commande, pas celle de PHP-FPM : gardez-le pour les scripts, pas pour juger l'exposition web. Planifiez plutôt une tâche cron hebdomadaire qui exécute docker compose pull puis compare le résultat de docker compose exec wordpress php -v à la version attendue, et vous prévient par e-mail en cas d'écart. Ainsi, la prochaine alerte de sécurité PHP ne dépend plus de votre mémoire.

  7. Vérifier de nouveau

    Rouvrez Santé du site et relancez php -v dans le conteneur : les deux doivent afficher une version corrigée. Notez la date de l'opération dans votre journal de maintenance, et recommencez à chaque nouvelle publication de sécurité PHP.

Atténuation partielle, pas un correctif

Pour CVE-2026-109619, l'avis PHP indique de désactiver session.upload_progress.enabled dans le php.ini ou le pool FPM, puis de redémarrer tous les workers ; ini_set() et .user.ini ne suffisent pas. Cela réduit l'exposition le temps de planifier la mise à jour, mais seule la mise à jour de PHP corrige réellement les deux failles.

La documentation officielle

Pour la configuration avancée et les options propres à l'outil, référez-vous à la documentation officielle de WordPress. Ce guide couvre la mise en ligne sur VPS ; la doc éditeur reste la référence pour les réglages fins, les mises à jour majeures et les cas d'usage spécifiques.

WordPress rapide, sur votre VPS

Le VPS Cloud ServOrbit vous donne des ressources chiffrées par offre, du SSD et Docker pour un WordPress bien plus rapide que le mutualisé. Template optimisé Redis + cache inclus.