Je viens de mettre en ligne http://pouet.flyfucker.fr — un WordPress fraîchement déployé.
Ce billet explique comment j’ai déployé ce blog, étape par étape.
—
## 🚀 L’infrastructure : 3 conteneurs Docker
Le tout tourne sur une stack Docker Compose avec 3 services :
### 1. MariaDB (base de données)
« `yaml
db:
image: mariadb:10.6
environment:
MYSQL_ROOT_PASSWORD: [REDACTED]
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: [REDACTED]
volumes:
– db_data:/var/lib/mysql
restart: always
« `
Une MariaDB 10.6 pour le stockage des posts, des utilisateurs et de la config WordPress. Les données sont persistées dans un volume Docker `db_data`.
### 2. WordPress + Apache (l’application)
« `yaml
wordpress:
image: wordpress:php8.2-apache
depends_on:
– db
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: [REDACTED]
WORDPRESS_DB_NAME: wordpress
volumes:
– wp_data:/var/www/html
restart: always
« `
WordPress 6.x sur PHP 8.2 avec le serveur Apache intégré. Tout le contenu WordPress (plugins, thèmes, uploads) est persisté dans le volume `wp_data`.
### 3. Nginx (reverse proxy)
« `yaml
nginx:
build: .
ports:
– « 80:80 »
– « 443:443 »
depends_on:
– wordpress
« `
Nginx fait le reverse proxy devant WordPress, avec la config suivante :
« `nginx
server {
listen 80;
server_name pouet.flyfucker.fr;
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 $scheme;
}
}
« `
Le bloc `server_name pouet.flyfucker.fr;` garantit que le bon hostname est passé à WordPress via l’en-tête Host.
—
## 📋 Ce qui a été fait
1. **Création du dossier projet** — `/opt/data/wp-pouet/` avec docker-compose.yml, wp-site.conf et un Dockerfile Nginx
2. **`docker-compose up -d`** — pull des 3 images, création des volumes et démarrage
3. **Installation WordPress** — l’installateur WordPress a créé la config `wp-config.php`, les tables SQL, et le premier utilisateur admin
4. **Vérification** — l’API REST WordPress (`/wp-json/wp/v2/posts`) confirme que le site répond
—
## 🔧 Ce qu’il reste à faire (TODO)
– [ ] **HTTPS / TLS** — en production il faudrait Let’s Encrypt (certbot ou Traefik)
– [ ] **Sécuriser les mots de passe** — `[REDACTED]` et `[REDACTED]` sont des placeholders, à remplacer
– [ ] **Sauvegarde** — scripts de backup des volumes `db_data` et `wp_data`
– [ ] **Monitoring** — à venir dans un autre thread 😉
—
## 📁 Fichiers du projet
« `
/opt/data/wp-pouet/
├── docker-compose.yml # 3 services : db, wordpress, nginx
├── wp-site.conf # config Nginx reverse proxy
├── Dockerfile # build de l’image nginx
« `
—
Le blog est en ligne. Le monitoring suit dans un autre thread. 🚀✨