/ Docker

Mon blog sous Ghost avec docker

Suite à un souci majeur sur mon blog Wordpress hébergé sur un VPS OVH à 3,99 /mois avec la fameuse stack Alpine Linux pour containeuriser les apps nécessaires à Wordpress, j'ai choisi de basculer vers un tout autre système de blog.

En effet, Wordpress est vraiment très agréable à utiliser car très complet avec toutes ses extensions et ses options de personnalisation, cependant il reste lourd car écrit en PHP, et surtout il s'avère beaucoup trop complet ;)

C'est très difficile de résister à la tentation de tester et d'installer tout un tas d'extensions, et ce même si certaines d'entre elles ont pour but de faciliter la navigation des internautes sur votre site (cache enabler, CDN, reverse-proxy etc...)

Malgré tous ses tests et toutes ses améliorations, je ne voyais pas d'améliorations significatives sur mon blog, au contraire je peinais à parvenir au 75% sur PageSpeed Insights ou sur Tools Pingdom...

Le blog restait donc sur de mauvaises notes et ce malgré un VPS boosté, une stack légère comme une plume grâce à la combinaise Docker + Alpine...

Puis j'ai craqué et j'ai tenté le pari Ghost.

Qu'est-ce que Ghost ?

Ghost est un moteur de blog libre et open source écrit en JavaScript et distribué sous licence MIT. Ghost est conçu pour simplifier le processus de publication en ligne par des blogueurs car codé en NodeJS côté serveur.

Avec Ghost, tout est simple. En fait, il n'y a rien à configurer, ou presque : le titre du blog, le nom de l'auteur, et éventuellement le thème en en choisissant un (gratuit ou payant) sur le Ghost MarketPlace. On est ensuite renvoyé sur une boutique en ligne type Themeforest.

Pour ma part j'ai chois le thème Casper qui s'avère plutôt sympa. Le concept de Ghost, c'est un style épuré qui plaira aux amateurs du genre mais peut apparaitre trop simpliste aux autres. Car cette plateforme n'est clairement pas concue pour les geeks en mal de bidouillage et de personnalisation.

Tant mieux, je recherche de la simplicité et de l'efficacité après avoir bidouillé sur Wordpress.

Quel choix technique ?

mono_vertical_large

J'ai fait le choix désormais habituel de Docker pour mon containeuriser mon blog sur un VPS OVH toujours.

Je me suis donc connecté sur mon VPS avec SSH

sudo ssh root@ip-du-serveur

Un coup de :

*passwd *

Pour modifier le mot de passe root, puis on installe Docker-compose via :

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose

et :

sudo chmod +x /usr/local/bin/docker-compose

J'ai crée un dossier blog à la racine de mon VPS.

mkdir blog

Puis j'ai tapé sudo nano docker-compose.yml pour créer mon fichier de configuration docker et j'y ai saisi ceci :

*version: '3.1'

services:

ghost:
image: ghost:1-alpine
restart: always
ports:
- 80:2368
environment:
# see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables
databaseclient: mysql
databaseconnectionhost: db
databaseconnectionuser: root
databaseconnectionpassword: example
databaseconnectiondatabase: ghost

db:
image: mysql:5.7
restart: always
environment:
MYSQLROOTPASSWORD: example*

Comme vous pouvez le constater, j'ai utilisé Alpine linux en backend pour faire tourner l'application Ghost, et mysql pour la base de données.

alpinelinux-logo

Puis j'ai lancé la magie :

sudo docker-compose up -d

Et ensuite :

*docker ps *

pour vérifier tout cela :

Capture-d-e-cran-2017-11-26-a--23.02.10

Ensuite j'ai lancé Glances pour superviser tout cela

docker pull nicolargo/glances

docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host -it docker.io/nicolargo/glances

et docker run -d --restart="always" -p 61208-61209:61208-61209 -e GLANCESOPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host docker.io/nicolargo/glances

et voilà le résultat :

Capture-d-e-cran-2017-11-27-a--21.31.00

Les conclusions techniques

Désormais nous avons un blog rapide, simple et efficace qui tourne sur un système léger et facilement maintenable. Pour preuves :

Tools Pingdom :

Capture-d-e-cran-2017-11-27-a--21.34.21

PageSpeedInsights :

Capture-d-e-cran-2017-11-27-a--21.35.46

et version PC :

Capture-d-e-cran-2017-11-27-a--21.36.24