Certificat SSL pour WordPress sous Docker : sécurisez votre site en quelques étapes

[userinfo]

Lorsque l’on veut déployer un WordPress via Docker, le certificat SSL n’est plus une option, c’est une nécessité. En quelques minutes, il est possible d’allier la souplesse de Docker et la puissance de nginx pour proposer un site WordPress chiffré, compatible Let’s Encrypt et facile à maintenir. Nous passons ici en revue les prérequis, la création du projet, la configuration du docker‑compose.yml et les astuces pour activer le SSL sans complexité.

Vous avez déjà installé WordPress sur un serveur classique ? Vous avez testé Docker et docker‑compose pour d’autres services ? Alors vous verrez que l’ajout d’un SSL certificate à votre WordPress container ne demande qu’une bonne organisation du docker environment et la mise en place d’un nginx proxy adapté. Suivez le guide, vous serez opérationnel en moins d’une heure.

Conditions préalables à l’installation de WordPress avec Docker

Avant de démarrer, assurez‑vous que votre serveur possède Docker et Docker Compose à jour. La version minimale recommandée est Docker 20.10 et Docker‑Compose 2.5. L’accès en root ou via sudo est obligatoire pour créer les docker volumes et exposer les ports. Ensuite, prévoyez un nom de domaine valide, par exemple cms.monsite.fr, qui pourra recevoir le défi Let’s Encrypt pour le SSL enable.

Un autre point crucial: MySQL. Le serveur de base de données sera lui aussi containerisé, avec un mysql database persistant grâce à un volume dédié. Enfin, pensez à réserver les ports 80 et 443 sur le serveur ; ils seront interceptés par nginx qui jouera le rôle de reverse proxy et terminera le SSL support.

Installer Docker et Docker Compose

Sur Ubuntu, la procédure est simple :

  • Mettre à jour les paquets : apt update && apt upgrade -y
  • Installer Docker : apt install docker.io -y
  • Installer Docker‑Compose : curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

Vérifiez les versions : docker --version et docker compose version. Une fois confirmé, passez à la création du projet.

Créer votre répertoire de projet

Dans le répertoire /var/www, créez un dossier cms dédié à votre WordPress docker. Cette arborescence contiendra le docker‑compose.yml, un Dockerfile pour le wordpress container, ainsi que les dossiers nginx et data pour les configurations et les volumes. Exemple de structure :

DossierContenu
cms/Projet principal
cms/docker‑compose.ymlDéfinition des services
cms/nginx/Configuration de nginx
cms/data/mysql/Données MySQL persistantes

Cette séparation facilite la gestion du docker service et la mise à jour indépendante de chaque composant.

Certificat SSL wordpress docker : sécurisez votre site en quelques étapes

Créer un fichier Docker Compose

Le cœur du docker environment réside dans le fichier docker‑compose.yml. Voici un modèle minimal :

version: '3.8'

services:
  db:
    image: mysql:8.0
    restart: unless‑stopped
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: strong_password
      MYSQL_ROOT_PASSWORD: root_password
    volumes:
      - ./data/mysql:/var/lib/mysql

  wordpress:
    image: wordpress:6.4‑php8.2
    depends_on:
      - db
    restart: unless‑stopped
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: strong_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./data/wp:/var/www/html
    expose:
      - "80"

  nginx:
    image: nginx:1.25
    depends_on:
      - wordpress
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs:/etc/ssl/certs
    restart: unless‑stopped

Notez que le service nginx expose à la fois les ports 80 et 443, ce qui permettra d’ajouter ensuite le certificate généré par Let’s Encrypt. Le répertoire certs contiendra les fichiers .crt et .key une fois le défi accompli.

Démarrer le conteneur Docker

Dans le répertoire du projet, lancez la commande :

docker compose up -d

Docker créera trois conteneurs : db, wordpress et nginx. Vous pouvez vérifier leur statut avec docker ps. Les logs du conteneur wordpress montrent le progrès de l’installation WordPress ; le moment où il indique “Ready to accept connections” signifie que la base de données MySQL est bien liée.

Accéder à l’installation de WordPress

Ouvrez votre navigateur à l’adresse http://cms.monsite.fr. L’assistant d’installation WordPress apparaît : choisissez la langue, le titre du site, le compte administrateur, etc. Aucun WordPress plugin n’est requis à ce stade. Une fois les informations saisies, WordPress crée les tables dans la MySQL database et vous redirige vers le tableau de bord.

À ce stade, le site fonctionne en HTTP. Il est temps d’ajouter le chiffrement SSL pour passer en HTTPS.

Ajouter le support SSL à votre stack Docker

Le moyen le plus simple d’obtenir un SSL certificate gratuit est d’utiliser Let’s Encrypt. L’outil certbot peut être exécuté directement dans le conteneur nginx ou via un petit conteneur dédié. Nous optons pour la seconde solution, afin de garder le nginx configuration propre.

Créer le conteneur certbot

Ajoutez le service suivant dans le docker‑compose.yml :

  certbot:
    image: certbot/certbot
    depends_on:
      - nginx
    volumes:
      - ./certs:/etc/letsencrypt
      - ./nginx/conf.d:/etc/nginx/conf.d
    command: certonly --webroot --webroot-path=/var/www/html -d cms.monsite.fr --email [email protected] --agree-tos --non-interactive

Après le docker compose up -d certbot, le conteneur contacte les serveurs Let’s Encrypt, crée une challenge HTTP dans /var/www/html/.well-known/acme-challenge et, dès validation, dépose les fichiers fullchain.pem et privkey.pem dans le dossier certs.

Configurer nginx en mode reverse proxy SSL

Dans nginx/conf.d/default.conf, remplacez le bloc server par :

server {
    listen 80;
    server_name cms.monsite.fr;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name cms.monsite.fr;

    ssl_certificate /etc/ssl/certs/fullchain.pem;
    ssl_certificate_key /etc/ssl/certs/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://wordpress:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

Cette configuration nginx redirige tout le trafic HTTP vers HTTPS, utilise le certificate généré et agit comme nginx reverse proxy vers le conteneur WordPress. Redémarrez nginx avec docker compose restart nginx. Accédez enfin à https://cms.monsite.fr : le cadenas apparaît, le SSL support est effectif.

Personnaliser votre configuration Docker

Au fil du temps, vous pouvez ajouter des docker volumes supplémentaires, par exemple un volume dédié aux sauvegardes de la MySQL database. Un script cron exécuté dans un conteneur “backup” peut régulièrement exporter les tables vers un stockage externe. De même, vous pouvez installer des WordPress plugins directement dans le volume ./data/wp pour qu’ils soient persistants entre les mises à jour du conteneur.

Pour optimiser les performances, pensez à activer le cache nginx sur les fichiers statiques (wp‑content, images, CSS) en ajoutant les directives expires et cache‑control. Cela réduit la charge du conteneur wordpress et améliore la rapidité perçue par les visiteurs.

Gérer et faire évoluer WordPress avec Docker

Le réel avantage de Docker réside dans la modularité : vous pouvez ajouter un service redis pour la mise en cache d’objets, ou un conteneur php‑fpm plus récent pour profiter des dernières fonctionnalités de PHP. Le fichier docker‑compose.yml accepte naturellement l’ajout de nouvelles sections, sans impacter le service existant.

Un point de vigilance : chaque fois que vous modifiez le docker file du conteneur wordpress, n’oubliez pas de relancer docker compose up -d --build. Ainsi, le nouveau build prendra en compte les extensions PHP ou les réglages de mémoire dont votre site a besoin.

Questions fréquentes

Comment renouveler automatiquement le certificat Let’s Encrypt dans Docker ?

Le conteneur certbot peut être planifié avec cron (ou docker‑compose.yml avec restart: unless‑stopped) pour exécuter la commande certbot renew tous les 12 jours. Après chaque renouvellement, il suffit de redémarrer le service nginx pour qu’il prenne le nouveau certificat.

Est‑il possible d’utiliser un domaine secondaire avec le même certificat ?

Oui. Ajoutez le domaine additionnel à la commande certbot : certbot certonly --webroot -d cms.monsite.fr -d blog.monsite.fr. Le fichier fullchain.pem contiendra alors les deux noms de domaine, et la même configuration nginx les servira grâce à la directive server_name cms.monsite.fr blog.monsite.fr;.

Quel impact a le SSL sur les performances de WordPress ?

Le chiffrement ajoute un léger coût CPU, surtout sur les serveurs peu puissants. Toutefois, grâce au nginx reverse proxy, les requêtes HTTPS sont terminées avant d’atteindre le conteneur wordpress, ce qui minimise l’impact. En plus, les navigateurs modernes utilisent le protocole HTTP/2, qui compense largement la surcharge du SSL.

Peut‑on migrer un site WordPress existant vers Docker sans perte de données ?

Oui. Exportez la base de données depuis l’ancienne instance MySQL, copiez le répertoire wp‑content dans le volume ./data/wp, puis lancez la stack Docker. Modifiez le docker‑compose.yml pour pointer vers la même MySQL database. Après démarrage, WordPress détectera la configuration et restaurera le site.

Comment sauvegarder automatiquement les volumes Docker ?

Un conteneur dédié, par exemple backup, peut monter les volumes data/mysql et data/wp, puis exécuter mysqldump et créer une archive tar. Programmez l’exécution avec cron à l’intérieur du conteneur ou utilisez la fonction docker run --rm -v depuis l’hôte.

Vers une infrastructure WordPress résiliente et sécurisée

En résumé, l’alliance de Docker, de nginx et de Let’s Encrypt permet de mettre rapidement en place un WordPress Docker avec un certificat SSL fiable, tout en conservant la souplesse d’évolution propre à l’environnement conteneurisé. L’installation WordPress devient alors un processus reproductible, adaptable aux besoins de chaque client, qu’il s’agisse d’un petit site vitrine ou d’une plateforme à fort trafic.

Vous avez besoin de
conseils ou d'assistance ?

Articles WordPress

Nos prestations dédiées

Retour en haut