Créer un blog avec Ghost hébergé sur AWS et Lightsail

Récemment j'ai décidé de tester un nouveau CMS (Content Management System). L'habituel Wordpress m'ennuyait, et Ghost me souriait. Je présente l'installation sous AWS Lightsail et une image Bitnami

Créer un blog avec Ghost hébergé sur AWS et Lightsail

Ghost est une superbe plateforme de publication de contenus. Elle existe depuis 2013, développée grâce à une campagne KickStarter qui rencontra un grand succès.

Sa mission est de créer le meilleur outil open source pour les journalistes et écrivains indépendants du monde entier, et d'avoir un impact réel sur l'avenir des médias en ligne.

We're a proud non-profit organisation building open source technology for journalism

Son statut d'organisation à but non lucratif permet aux équipes de se concentrer sur ce qui a réellement de la valeur pour leurs utilisateurs. Tous les bénéfices sont réinvestis dans la plateforme.

Les revenus sont assurés par une offre d'hébergement tout-en-un, baptisée Ghost(Pro) : facultative mais très utile pour ceux qui ne souhaitent ou ne peuvent pas héberger eux-mêmes le CMS.

Ghost en 2021 :

  • 2 500 000+ installations. ⚙️
  • 280 000 $ de revenus mensuels 💰
  • 7 500+ clients Ghost(Pro)
  • 2,8% de churn (indicateur de suivi du désabonnement), ce qui est excellent 🔥

Pourquoi je passe de Wordpress à Ghost ?

  • Ghost est incroyablement rapide 🚀
  • Gestion de membres 💁‍♂️
  • Publications réservées aux membres premium 🎟
  • Gestion de newsletter intégrée 📥
  • Pas besoin de plugin SEO (souvent payant sur wordpress) 🌈
  • Intègre nativement un design moderne 😍
  • Bibliothèque d'applications tierces
  • Ghost utilise Node.js, plus populaire (et performant ?) aujourd'hui que PHP.
De nombreux services tiers sont disponibles sur Ghost

Comment déployer Ghost sur AWS avec Lightsail

J'ai choisi de déployer Ghost sur Amazon Web Services (AWS) à l'aide d'une image Blueprint pré-configurée par Bitnami. C'est le + rapide, et le + simple.

Voici la marche à suivre :

  1. Créer une nouvelle instance et sélectionner Ghost dans "Applications + système d'exploitation".

Il est conseillé de sélectionner à minima l'offre présentant 1Go de RAM à 5$ /mois pour assurer un fonctionnement optimal de Ghost.

Plus bas on définit le nom de notre instance et l'on valide la création de l'instance. Le processus ne prend que 2/3 minutes.

Une fois créée, votre instance est accessible depuis l'IP indiquée sur cette page.

2.  Je préconise d'attribuer une IP fixe de suite à ce nouveau conteneur, car sinon à chaque redémarrage son IP changera. Et ça posera forcément problème à un moment. C'est gratuit. 💸

Pour le faire, on rentre dans notre instance nouvellement créée puis on attribue une IP fixe dans l'onglet "Mise en réseau".

3.  Une fois l'instance créée on se connecte en SSH afin de mettre à jour Ghost.

L'icône terminal en haut à droite de notre instance permet de se connecter rapidement en ssh

Mise à jour de Ghost CLI

cd /opt/bitnami/apps/ghost/lib/
qui permet de nous déplacer dans le répertoire où node est installé.
echo '{}' | sudo tee package.json
sudo npm i ghost-cli@latest
Mise à jour de Ghost CLI

Mise à jour de Ghost

cd /opt/bitnami/apps/ghost/htdocs/
on se déplace dans le répertoire principal de notre CMS
ghost update v3
On doit obligatoirement mettre à jour vers la dernière v3 disponible avant de passer à la 4.
ghost update
Puis nous démarrons la mise à jour vers la v4

Modifier l'URL de votre site paramétrée sur Ghost

Dans mon cas mon DNS est paramétré pour diriger le trafic de domotique123.fr sur la machine qui héberge Ghost (qui possède l'IP statique définie dans Lightsail).

Il faut indiquer à Ghost que l'URL à prendre en compte n'est pas l'IP de la machine, mais plutôt https://www.domotique123.fr

Pour cela il suffit de modifier  le fichier config.production.json qui se trouve ici '/home/bitnami/apps/ghost/htdocs/config.production.json' avec l'URL de notre site.

sudo vim /opt/bitnami/apps/ghost/htdocs/config.production.json
Pour modifier le fichier de config
{
"url": "https://www.domotique123.fr",
"server": {
"port": 2368,
"host": "127.0.0.1"
},
ne modifiez que l'url
sudo /opt/bitnami/ctlscript.sh restart
on relance l'instance avec cette commande

Configurer correctement HTTPS pour Ghost avec Bitnami

Pour obtenir le protocole HTTPS sur votre site, vous devez suivre deux étapes. Tout d'abord, vous devez configurer votre certificat SSL. En utilisant Bitnami, c'est très simple. Il vous suffit d'exécuter leur outil de configuration HTTPS :

sudo /opt/bitnami/bncert-tool
Exécutez la commande suivante et suivez les instructions

Le processus est très bien fait, il suffit de lire et suivre ce qui s'affiche à l'écran. En 2 minutes tout est prêt. 🥰

Mais en suivant ce processus, je n'ai fait que la moitié du chemin. J'ai remarqué que certains appels .js étaient effectués via HTTP, ce qui causait des problèmes de CORS et empêchait généralement les fonctionnalités de membre de fonctionner correctement. Heureusement on peut le régler simplement.

Arrêtez Ghost et ouvrez le fichier de configuration ci-dessous :

sudo /opt/bitnami/ctlscript.sh stop
Arrêtez Ghost
sudo vim /opt/bitnami/apps/ghost/conf/httpd-app.conf
Permet de modifier le fichier de configuration

Ajoutez ceci en haut du fichier :

RequestHeader set X-Forwarded-Proto "https"
sudo /opt/bitnami/ctlscript.sh restart

Voilà! Ghost est installé et fonctionne correctement sur la dernière version 🔥

Ghost est installé 🎉

Première connexion au back-end de Ghost

Désormais vous pouvez accéder au back-end de Ghost pour saisir vos premiers articles.

URL du back-end de Ghost : https://www.votredomaine.com/ghost/

Comment trouver vos identifiants ?

Mais quel est votre login et mot de passe ? Pour les trouver il suffit de suivre la commande shell suivante, à lancer à nouveau dans le terminal en SSH.

sudo cat /home/bitnami/bitnami_credentials/

Le login est le même pour tout le monde : "user@example.com". Et le mot de passe est indiqué dans la réponse du terminal.

À la première connexion pensez à modifier votre adresse email et le mot de passe!

Retirer le logo Bitnami

Ce logo s'affiche sur votre blog par défaut. Pour le désactiver il suffit d'utiliser la commande suivante :

sudo /opt/bitnami/apps/ghost/bnconfig --disable_banner 1