Ghost est un CMS (Content Management System), c'est-à-dire un programme permettant de créer des sites web. La particularité de celui-ci est qu'il est orienté pour les créateurs de contenus et permet donc de publier facilement des posts ainsi que des newsletters et offre la possibilité de créer des abonnements (en se connectant à Stripe) avec des accès à certains posts, par exemple. Pour se défendre face au mastodonte des CMS qu'est Wordpress, le site a d'ailleurs créé une petite page totalement subjective, qui, bien entendu, ne révèle pas les vraies différences entre les deux services mais sert plutôt à se promouvoir dans son domaine.

J'essaierai donc de donner mon avis au fil de cet article sur les points que j'ai appréciés ou non, sachant que je n'ai jamais utilisé Wordpress car je suis un développeur. Toutefois, je pense vous faire un article plus tard comparant les deux CMS lorsque j'aurai réalisé quelques sites sur Wordpress.

L'Analyse

Choisir un CMS ou programmer

Étant programmeur, cela faisait un peu plus d'un an que je souhaitais créer un site full stack. J'ai donc d'abord eu l'idée de réaliser le site actuel avec Laravel, VueJs et Inertia pour faire le lien entre les deux frameworks. La tâche étant longue à réaliser, j'ai donc mis à plus tard la réalisation du site, mais un jour je suis tombé sur Ghost et, en voyant ce qu'on pouvait faire avec ce CMS, je me suis demandé s'il était nécessaire de passer autant de temps sur un projet alors qu'il y a un CMS qui fait mieux que ce que j'avais imaginé. Je me suis donc rendu à l'évidence qu'il était préférable d'utiliser Ghost au lieu de le regretter lorsque j'aurais atteint la moitié de mon projet full stack, en souffrant comme tout bon programmeur à la vue d'un énième bug.

Utiliser un thème préconçu ou créer son propre thème

Ghost utilise un système de "thème", chaque thème permettant de structurer et de designer le site de manière différente. Pour mon cas, j'ai cherché les thèmes qui me plaisaient (en l'occurrence, Liebling et Attila) puis j'ai décidé de les fusionner (appelé Attibling) pour obtenir le résultat que je souhaitais. Ce thème m'a pris un certain temps à être réalisé, mais une fois cela fait, il ne me restait plus qu'à déployer le site sur un serveur.

Déployé sur Ghost ou sur un serveur dédié

Comme tout CMS, Ghost propose une solution d'hébergement directement sur leur serveur, moyennant une certaine somme (plus élevée que si l'on faisait cela soi-même). Néanmoins, étant un projet open source, on peut le déployer sur son propre serveur, ce qui présente deux avantages et un inconvénient : c'est moins cher (je parlerai du prix à la fin de l'article) et on a un contrôle total sur notre site, ce qui signifie que l'on peut entre autres installer des thèmes personnalisés non présents dans leur galerie, mais en contrepartie, il faut faire l'installation et l'achat du serveur soi-même. Vous comprendrez donc que je me suis vite tourné vers l'auto-hébergement, ce qui m'a permis de me remémorer mes cours de système en IUT. Je vous laisse choisir la meilleure solution pour vous ici.

La mise en production

L'une des raisons qui m'a poussé à réaliser cet article provient des petites difficultés que j'ai rencontrées pendant la mise en production ainsi que des astuces qui sont bien à connaître lorsque l'on débute dans le déploiement d'un site internet utilisant un back-end.

Choisir le serveur

Premièrement, il faut héberger le site sur un serveur permettant d'accéder au root et de lancer NodeJS, cela élimine d'emblée une grosse partie des offres utilisées pour les CMS : les hébergements mutualisés. En d'autres termes, vous pouvez dire adieu à toute la partie hébergement dans Hostinger, pour O2Switch, cela marchait avant apparemment, mais depuis la mise à jour 5.0 de Ghost, il y a un problème, et dans un cas plus général, dès que le serveur n'est pas privé, il y a de fortes chances que cela ne puisse pas fonctionner pour la simple et bonne raison qu'il est dangereux de donner à une personne, que ce soit les droits de root ou la possibilité de lancer un programme qui peut affecter d'autres clients. Si vous voulez déployer Ghost, il faut donc à minima utiliser un VPS (Virtual Private System), c'est-à-dire un espace virtuellement privé (comme les VPN) bien que je pense qu'il ne le soit pas vraiment. Cela a aussi un autre impact : on doit tout faire nous-mêmes, les hébergeurs ne nous proposent que l'espace de stockage, mais rien d'autre n'est fait, que ce soit pour la gestion des mails ou pour la mise en place du SSL. Je cherche ici à vous expliquer qu'il faut être à l'aise avec la navigation dans le serveur via la console ainsi que la mise en place de logiciels web tels que Nginx et d'une base de données comme MySQL.

Installer le projet

Une fois que l'on a acheté le serveur et le nom de domaine par la même occasion, il nous faut installer le projet. Il se trouve que Ghost nous propose un guide détaillé disponible ici qui permet de faire étape par étape le déploiement du site, comprenant la création d'un nouvel utilisateur sur le serveur, l'installation de Nginx, l'installation de MySQL, la mise en place de NodeJS et l'installation de Ghost.

Attention cependant, si jamais lors de l'installation de Ghost, vous obtenez cette erreur :

Message: Ghost was able to start, but errored during boot with: Access denied for user '<username>'@'localhost' (using password: YES) Help: Unknown database error

Cela signifie peut-être que le programme d'installation n'a pas ajouté le nom d'utilisateur dans MySQL. Pour régler ce problème, il faut suivre les étapes suivantes :

Dans un premier temps il faut accéder à MySQL en tapant le code ci-dessous

mysql

Une fois dans l'éditeur de MySQL, représenté par mysql>, il faut alors écrire ceci en remplaçant <username> par le nom donné dans le setup et en choisissant un mot de passe à la place de <password>

CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';

Ensuite, il faut donner les mêmes privilèges à notre utilisateur que ceux de root.

GRANT ALL PRIVILEGES ON * . * TO '<username>'@'localhost';

Puis, enfin, indiquer à la base de données d'actualiser les privilèges afin qu'ils prennent effet immédiatement.

FLUSH PRIVILEGES;

Je recommande également de ne pas utiliser le nom d'utilisateur “root” (celui par défaut si l'on ne met rien dans le setup) car j'ai aussi eu des problèmes avec.

Gérer la redirection www et le HTTPS

La dernière chose que j’ai dû faire pour la mise en production du site fut de créer une redirection avec nginx de www.geekly.blog vers geekly.blog. En effet le www que l’on connaît tous n’est en fait pas quelque chose d’innée sur les sites web ou bien les navigateurs web, Il s’agit d’un sous-domaine c’est à dire d’un nom présent avant le nom de domaine et séparé par un point. Afin que les personnes qui mettent www par habitude ne tombent pas sur une erreur, il faut donc faire une redirection. Attention ici je parle bien d’une redirection c’est a dire le CNAME lorsque l’on est sur notre DNS et le “return” sur NGINX. Personnellement, j’ai fait les deux :

Pour le DNS, il faut aller là où on a acheté le nom de domaine, en l’occurrence Google Domains pour moi et ajouter le CNAME comme ceci

Section DNS dans Google Domains

Pour NGINX il faut modifier dans le dossier/etc/nginx/sites-enabled le fichier comprenant le nom de domaine de notre site et rajouter ceci puis redémarrer nginx (ici pour le HTTP) :

server {
	listen 80;
	server_name www.nomdedomaine.com;
	return 301 http://nomdedomaine.com$request_uri;
}
nomdedomaine.com.conf

Une fois arrivé à ce stade, vous vous rendrez compte d'un problème : lorsque vous entrez l'URL avec "www", vous recevez une alerte vous indiquant que le site est en HTTP de la part de votre navigateur, celui-ci vous empêchant de continuer pour votre “sécurité”. Pour résoudre ce problème, il suffit d'installer Certbot et de suivre les commandes proposées ici afin de sécuriser votre URL avec SSL, c'est-à-dire HTTPS. Certbot s'occupera de tout à votre place, y compris de la gestion des fichiers .conf avec l'ajout de la partie SSL et du port 443.

Attention : faites bien une redirection car si cela n'est pas le cas, alors le robot de Google va détecter deux sites web avec la même URL et va donc sanctionner le référencement de ceux-ci. Une autre chose qui peut être faite est de mettre la balise canonical dans l'en-tête de notre site avec le lien principal du site.

Coût du site

La création du thème a été faite par mes soins à partir de thèmes gratuits, mais sachez qu'il y a des thèmes qui peuvent coûter jusqu'à plus de 100€. Pour le nom de domaine, sachez qu'il m'a coûté près de 29€, principalement en raison du fait qu'il s'agissait d'un nom court ne disposant plus des extensions ".com" ou ".fr", mais je vous rassure, il y avait d'autres noms de domaines à des prix plus bas. Je voulais simplement une extension représentant réellement l'activité du site. Enfin, pour le VPS, il me coûte 4,20€ par mois sur OVH avec l'offre starter. C'est l'un des moins chers que j'ai trouvé et, contrairement à Hostinger qui est au même prix pour moins de RAM, je n'ai pas d'engagement. Enfin, je n'ai pas encore opté pour un hébergement de mail et il me reste à voir si cela est possible sur mon VPS actuel ou s'il me faut prendre un abonnement chez OVH ou Google.

Cela me coûte un total de 30€ + 4,20€ x 12 mois = 80,4€ par an, soit 6,7€ par mois d'abonnement pour que vous puissiez accéder à ce site (ce qui n'est pas beaucoup comparé aux 9€ minimum de l'offre de Ghost sans le nom de domaine).

Conclusion

Merci d'avoir lu cet article jusqu'au bout, j'espère que cela vous a permis d'apprendre des choses, que ce soit en matière de création de projet ou de mise en production et des choix à effectuer pour voir son site sur le web...