Table des matières
Pourquoi Docker ?
Docker s’est établi comme un outil essentiel, remplaçant efficacement les infrastructures physiques autrefois indispensables pour le déploiement d’applications. Aujourd’hui, une grande partie des applications accessibles sur le Web grâce au cloud fonctionne grâce à l’implémentation de Docker, offrant ainsi une solution plus agile et évolutive.
Je vais vous présenter une alternative pour mettre à disposition votre blog WordPress dans des conteneurs Docker sur un NAS Synology au moyen de docker-compose.
Pré-requis
Tous les NAS Synology ne permettent pas la prise en charge de Docker. Vous pouvez consulter la liste des NAS de Synology compatibles sur la page suivante: https://www.synology.com/fr-fr/dsm/packages/ContainerManager
A la rédaction de cet article, la liste des NAS compatibles est la suivante:

Cet article présume que vous avez déjà installé Container Manager ou que vous serez en mesure de l’installer dans le Centre de paquets. Son installation est des plus simples.
Afin que votre blog soit visible du monde entier, il vous sera nécessaire de disposer d’une adresse IP statique avec un nom de domaine déjà configuré pour pointer dessus ou d’utilisation d’une adresse IP dynamique (ou pseudo dynamique) de l’utilisation d’un service de DNS Dynamique (DuckDNS, FreeDNS, NO-IP, …), et de disposer d’une script de mise à jour de l’enregistrement A à partir de la nouvelle adresse IP.
Tous les sites nécessitent maintenant l’utilisation d’une connexion sécurisée. Pour éviter des frais supplémentaires, je vais utiliser la fonctionnalité Let’s Encrypt incluse dans le NAS Synology.
Le fichier docker-compose
Les NAS Synology permettent depuis la version 7.2 de DSM d’utiliser directement des fichiers docker-compose.yml ce qui facilite grandement le déploiement d’applications multi-conteneurs. Pour cela, Synology a ajouté une notion de “Projet”qui utilise justement des fichiers docker-compose.yml.

Pour fonctionner, WordPress a besoin d’une base de données MySQL ou MariaDB. La base de données va être intégrée dans le projet afin d’en permettre un redéploiement rapide si nécessaire. C’est l’avantage de docker compose qui va permettre de déployer tout les composants nécessaires d’une application en nous assurant que ceux-ci seront toujours compatibles entre eux et ce, dès l’environnement de développement jusqu’à l’environnement dit de “Production”.
Voici le fichier docker-compose.yml qui nous permettra de déployer à la fois MySQL et WordPress:
version: '3.8'
services:
db:
image: mysql:8.2
volumes:
- mysql_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:6.4.2
ports:
- "10081:80"
restart: always
volumes:
- wordpress_data:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
mysql_data: {
driver: local,
driver_opts: {
type: none,
device: ./volumes/mysql,
o: bind
}
}
wordpress_data: {
driver: local,
driver_opts: {
type: none,
device: ./volumes/wordpress,
o: bind
}
}
La chose importante à faire est de personnaliser les mots de passe de la base de données. Il existe 2 mots de passe: un mot de passe ROOT et un mot de passe utilisateur pour la base wordpress. Donc vous devez personnaliser les variables suivantes:
MYSQL_ROOT_PASSWORD | Le mot de passe ROOT de la base de données. |
MYSQL_PASSWORD WORDPRESS_DB_PASSWORD | Le mot de passe utilisateur de la base de données WordPress. |
Bien qu’il soit possible d’utiliser un mot de passe ROOT aléatoire pour la base de donnée au moyen de MYSQL_RANDOM_ROOT_PASSWORD, je préfère éviter cela car il pourrait être intéressant plus tard de pouvoir accéder à cette base pour de la maintenance.
Ce fichier de paramétrage utilise les dernières versions de WordPress et MySQL au moment de la rédaction de cet article, Veuillez utiliser les versions les plus à jour indiquées sur Docker Hub:
- pour WordPress : https://hub.docker.com/_/wordpress
- pour MySQL : https://hub.docker.com/_/mysql
Vous devez également personnaliser le port qui sera ouvert sur votre hôte. Cela se fait à la ligne 20 et est actuellement définit à la valeur 10081, mais ce port est peut-être déjà utilisé sur votre NAS. Dans ce cas, vous devez le personnaliser à une valeur supérieure à 1023, inférieure à 65536 et non déjà utilisée. Cela laisse pas mal de possibilités.
Si vous disposez de Docker Desktop sur votre PC, vous pouvez tester le fichier le local pour vérifier que tout fonctionne bien comme vous le souhaitez.
Déploiement sur le NAS Synology
J’arrive maintenant à la partie déploiement sur le NAS. Pour commencer, je vais préparer les répertoires car les conteneurs aurons besoin de volumes pour y stocker les données de la base de données ainsi que le contenu utilisateur (le votre) pour WordPress: cache, traductions, extensions, thèmes, mises à jour, médias, …
Lors de la création d’un projet Container Manager il est nécessaire d’y indiquer un répertoire de stockage pour le fichier docker-compose.yml. Compte tenu de la configuration des volumes donnés plus haut, ceux-ci seront créés dans un répertoire volumes de ce répertoire de stockage (indiqué par ./).
Le plus simple est d’utiliser File Station pour créer les arborescences nécessaires. Dans mon cas, dans le répertoire docker, j’ai créé un répertoire mon-blog, un sous répertoire volumes et 2 sous-répertoires wordpress et mysql:

Je vais maintenant créer le projet de conteneurs dans le Container Manager. Pour cela, pressez le bouton “Créer” pour arriver sur la fenêtre suivante:

Je donne le nom du projet, je sélectionne le répertoire racine du projet et je télécharge le fichier docker-compose.yml créé au dessus au moyen du bouton “Parcourir”:

Si tout est OK, je clique sur le bouton “Suivant” pour arriver sur l’écran ci-dessous:

Cette écran permet d’exposer les ports publiques des conteneurs dans la Web Station de Synology. Je coche donc la case. Par contre, je sélectionne HTTP (et non HTTPS) car le HTTPS ne se fera qu’à partir du service Web (qui fait office de nouveau Reverse Proxy simplifié), le conteneur WordPress n’étant pas lui même en HTTPS. Mais on verra cela plus tard.
En cliquant “Suivant”, nous avons un résumé de ce qui va être créé:

Cliquez le bouton “Effectuer” pour lancer la création des conteneurs:

Comme indiqué, nous arrivons ensuite sur le paramétrage de la Web Station et d’un portail pour notre WordPress. Le type de portail est sur le nom de domaine que vous avez dû acheté ou créé sur un service de DNS dynamique. Activez ensuite le port 80/443 ainsi que HSTS qui va permettre de rediriger du port 80 vers le 443 lorsque le visiteur n’aura pas de lui même utilisé HTTPS:

Les autres options peuvent être laissées par défaut. Cliquez “Créer”.
Petite vérification pour valider que cette installation est fonctionnelle. Vous ouvrez un navigateur Internet et rentrez l’adresse locale de votre NAS suivie de deux points et du port (dans notre cas par défaut 10081) et vous arrivez sur la page d’installation de WordPress. N’allez pas plus loin pour le moment.
Je rentre donc pour mon NAS http://files1:10081. A vous bien entendu d’adapter.

Il nous reste le certificat.
Création et paramétrage du certificat Let’s Encrypt
Un certificat Let’s Encrypt permet d’avoir un certificat signé TLS vous permettant d’avoir une connexion chiffrée sécurisée entre votre serveur et le visiteur. On appelle communément cela pour les connexions: HTTPS.
Dans le DSM de votre Synology, ouvrez le panneau de configuration, sélectionnez “Sécurité” et enfin l’onglet “Certificat”:

Cliquez “Ajouter” pour arriver sur la fenêtre suivante:

On va ajouter un certificat, cliquez “Suivant”:

Comme description, ajouter le nom de domaine, ce sera plus facile à retrouver si nécessaire plus tard et indiquez que vous souhaitez vous procurer un certificat Let’s Encrypt.
Cliquez “Suivant”:

Renseignez à nouveau avec votre nom de domaine. Il vous est également demandé une adresse email valide pour vérifier qu’il s’agisse d’une demande légitime et vous contacter en cas de besoin.
Cliquez “Effectuer”. Après quelques secondes d’échanges avec Let’s Encrypt, le fenêtre devrait se fermer et vous devriez avoir une ligne dans la fenêtre des certificats avec ce nouveau certificat:

Nous devons encore attacher ce certificat au service Web créé plus haut. Cliquez le bouton paramètre et recherchez votre service Web pour sélectionner le certificat que l’on vient de créer:

Après acceptation d’un message d’information indiquant que les services seront arrêtés temporairement, on constate en effet que le site est maintenant accessible en HTTPS:

Il ne reste qu’à se faire plaisir avec WordPress !
Aucun Commentaire! Soyez le premier.