Une fois le sujet choisi, une des étapes importantes dans le lancement d’un blog est le choix du système de gestion de contenu (CMS – Content Management System). Si vous souhaitez héberger votre blog, de nombreuses possibilités s’offrent à vous comme WordPress, Drupal, Joomla ou encore Ghost pour ne citer que ceux-là. C’est justement de ce dernier, Ghost, dont nous allons parler dans cet article.
Ghost est une alternative intéressante pour ceux qui souhaitent se concentrer sur l’écriture d’articles. En effet, ce CMS, développé en Node.Js, est particulièrement efficace et efficient. De plus, nous allons voir qu’avec Docker, nous allons pouvoir lancer notre blog en quelques minutes (et quelques lignes de commandes) seulement.
Pour en savoir plus sur Docker (introduction, installation, fonctionnement), je vous renvoie aux excellents articles de Raymond sur le sujet.
A partir de là, je considère que vous avez Docker d’installé sur votre machine (votre serveur ou votre ordinateur pour un test en local).
Fichier de configuration de Ghost
La première étape consiste à créer un fichier de configuration « `config.production.json« ` pour notre blog contenant entre autres l’url de notre futur blog et notre compte email (ici nous prendrons l’exemple d’un compte Gmail) :
{ "url": "http://monfrugalblog.com", "server": { "port": 2368, "host": "0.0.0.0" }, "database": { "client": "sqlite3", "connection": { "filename": "/var/lib/ghost/content/data/ghost.db" } }, "mail": { "transport": "SMTP", "options": { "service": "Gmail", "auth": { "user": "monfrugalmail@gmail.com", "pass": "MonFrugalPassword" } } }, "logging": { "transports": [ "file", "stdout" ] }, "process": "systemd", "paths": { "contentPath": "/var/lib/ghost/content" } }
Attention à bien nommer ce fichier « `config.production.json« `. Aucune autre information (mis à part l’URL de votre site et les informations sur votre compte mail) n’est à modifier dans ce fichier.
Voilà tout pour cette étape. Par la suite nous allons créer le fichier Dockerfile contenant les instructions pour la création de notre image Docker.
Création du Dockerfile
Nous devons donc créer un fichier « `Dockerfile« ` (dans le même dossier que le fichier de configuration créé précédemment) qui va chercher la dernière image Ghost dans le répertoire officiel d’images en ligne et inclure notre fichier « `config.production.json« ` afin que ce dernier écrase la configuration générique existante.
Cela paraît compliqué mais en réalité rien de plus simple : ce « `Dockerfile« ` tient sur deux lignes
FROM ghost:latest COPY config.production.json /var/lib/ghost
La première ligne demande à Docker de récupérer la dernière image de Ghost. La seconde copie notre fichier de configuration dans l’image Ghost que nous venons de récupérer à l’emplacement prévu pour ce fichier.
Il ne nous reste plus qu’à lancer la commande de création de notre image et de lancer le container Docker sur base de cette image.
Création de l’image Docker
Depuis votre terminal (ou invité de commande), naviguez vers le dossier ou se trouve les fichiers « `Dockerfile« ` et « `config.production.json« ` que vous avez créés. Ensuite, lancez la commande suivante (bien entendu vous devez au préalable avoir installé Docker sur votre machine).
docker image build -t frugal-ghost-image .
J’ai nommé l’image « frugal-ghost-image » mais libre à vous de la nommer comme vous le souhaitez. À la fin de cette commande, il y a un « `.« ` ; ce point est le lien vers notre fichier « `Dockerfile« ` à savoir dans notre cas : le dossier courant.
La dernière étape est maintenant de lancer le container sur la base de cette image.
Lancement de notre container
Pour ce faire, toujours depuis votre terminal, entrez la commande suivante :
docker run --restart always -d --name frugal-ghost -p 3000:2368 -v "/lien vers un dossier pour la persistance de vos données/":/var/lib/ghost/content frugal-ghost-image
Pas d’inquiétude, je vais expliciter cette commande. Nous demandons à docker de lancer le container via la commande « `docker run« ` en précisant plusieurs paramètres :
- « `–restart always« ` demande à Docker de toujours redémarrer notre container quoi qu’il arrive ;
- « `-d« ` permet de laisser tourner notre container en tâche de fond ;
- « `name« ` comme vous le devinez, nous permet de nommer notre container ;
- « `-p« ` précise la redirection des ports entre celui du container et celui de notre machine. Ainsi le container basé sur une image Ghost tourne sur le port 2368 que nous exposerons sur le port 3000 de notre machine ;
- « `-v« ` ce paramètre nous permet de préciser un emplacement sur notre machine dans lequel nous conserverons les données (bases de données, images). De la sorte, même si nous redémarrons notre container, les données persistent. La deuxième partie après le « `:« ` est le lien vers la source des données à conserver dans le container. En l’occurrence dans le cas de Ghost, il s’agit de « `/var/lib/ghost/content« ` ;
- Enfin, le dernier paramètre est le nom de l’image qui servira à lancer le container. Attention à bien prendre le même nom que celui choisi lors de la création de votre image.
Si tout se passe bien, votre blog est désormais lancé. Si vous avez développé en local sur votre ordinateur, vous le retrouverez en tapant l’adresse « `http://localhost:3000« ` dans votre navigateur. Dans le cas, ou vous êtes sur un serveur, votre blog sera disponible à l’adresse « `http:// »ip de votre serveur »:3000« `.
De mon côté, vous trouverez le résultat à l’adresse https://ghostblog.frugalprototype.com.
Pour démarrer l’écriture des articles, il suffit de se créer un compte (lors de la première connexion) en se rendant sur l’adresse de votre blog suivi de « `/ghost« `. Pour moi c’est donc https://ghostblog.frugalprototype.com/ghost.
Si vous avez des questions ou des remarques, n’hésitez pas à laisser un commentaire. Comme d’habitude, si des erreurs se sont glissées dans l’article, n’hésitez pas à nous en faire part.
Pour être informé des prochains articles, rendez-vous sur Twitter.
Merci, et à très bientôt sur Frugal Prototype
Ali Benfattoum
Intrapreneur, Tech Enthusiast, IoT Expert, Smart City Specialist…
Suivez moi sur @alifrugal