Installation du CMS Ghost: Partie 1

Conditions d'installation "Machine Virtuelle"
L’installation est réalisée selon les critères suivants:
La machine virtuelle s'appuie entièrement sur son Hôte en l’occurrence Proxmox, elle permet d'affiner les réglages , elle peut aussi utiliser le matériel directement par le "passtrough"", Elle est plus gourmande en ressource qu'un conteneur.
- Proxmox PVE 8.3
- Machine Virtuelle 4 cœurs, 4GB
- Utilisateur non root avec privilège
- Debian12
- Node.js
- MariaDb
J'ai choisi de déployer le CMS Ghost en utilisant la méthode Ghost-cli qui
s'appuie sur la plateforme Node.js.
Ghost-cli permet une installation sur serveur, conteneur et cloud pour la production, mais aussi sur les Os, tel que Linux, Apple MacOs et Windows. Pour ces derniers, elle s'effectue en mode local et est implicitement dédiée au développement d'un site. Il possède aussi des outils de post-installation intéressants.
Pour une mise en production, il faudra avoir un accès à une base de données MySQL, c'est MariaDB qui est fortement recommandé à partir de la version 8.0
Node.js est un support orienté JavaScript[1] qui propose de créer des logiciels fonctionnant en réseau ou sur serveur. On obtient des applications évolutives et rapides. Ce projet est open source [2]
Les chapitres
1-Installation de MariaDB
2-Installation de Node.js
3-Installation de Ghost
1-Installation de MariaDB

2-Installation de Node.js
On installe Node.js en version 18 Lts (version recommandée) :
Mise à jour du système :
sudo apt update && sudo apt upgrade -y
On installe le paquet permettant à Debian d'utiliser le HTTPS pour les dépôts ; à ce jour, il est normalement installé par défaut, on vérifie quand même :
# sudo apt-get install -y ca-certificates curl gnupg
On va créer un répertoire dans apt (répertoire des dépôts[1]) pour stocker les clés (elles valident l'authenticité du logiciel) :
# sudo mkdir -p /etc/apt/keyrings
Om importe la clé pour l'installation :
# curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
On va installer le dépôt qui va permettre de télécharger Node.js
en précisant la version 18 :
# NODE_MAJOR=18
# echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
La réponse :
deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main
On met à jour les dépôts :
# sudo apt update
On installe Node.js :
# sudo apt-get install nodejs -y
Un dépôt ou "repository" en anglais (généralement un serveur à distance) est un ensemble des paquets (logiciels) exécutables, de code source, etc., Tous ces éléments sont organisés à l'intérieur d'un répertoire. ↩︎
3-Installation de Ghost
A : On installe Ghost-cli :
Il va nous permettre de déployer Ghost :
# sudo npm install ghost-cli@latest -g
La réponse :
156 packages are looking for funding
run `npm fund` for details
npm notice
npm notice New minor version of npm available! 10.5.0 -> 10.6.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.6.0
npm notice Run npm install -g npm@10.6.0 to update!
npm notice
- NPN est le gestionnaire de paquet de node.js, "g" indique d'installer dans sa globalité :
B: On crée le répertoire d'installation :
# sudo mkdir -p /opt/ghost
On attribue les droits de propriétés et les permissions à notre utilisateur et son groupe sur ce répertoire :
# sudo chown userse:userse /opt/ghost
[1]
# sudo chmod 775 /opt/ghost
[2]
"chown" permet de changer la propriété de l'utilisateur et du groupe sur les répertoires et les fichiers. ↩︎
"chmod" change les permissions ou droits sur un répertoire ou un fichier, 775: "7" indique lecture, écriture et exécution et "5" indique lecture et exécution:
Les deux "7" sont pour le propriétaire et son groupe et le "5" pour les autres. ↩︎
C: On installe Ghost dans notre répertoire :
- Avant de commencer l'installation de Ghost, il faut vous assurer que la base de données MariaDB est en place !!!
Info: si vous vous trompez, vous pouvez soit désinstaller très simplement en exécutant "ghost uninstall" et recommencer.
Soit attendre la fin de l'installation et relancer avec la commande suivante:
# ghost setup
# cd /opt/ghost
# ghost install
Il démarre par une check-list pour voir si tout est ok pour l'installation, s'il manque quelque chose, il l'indiquera !
✔ Checking current folder permissions
✔ Checking memory availability
✔ Checking free space
✔ Checking for latest Ghost version
Il continue son installation, une fois terminé , il va vous demander de vous de lui indiquer certains éléments :
Votre adresse ou URL, si vous avez déjà votre nom domaine prêt, vous pouvez l'indiquer, sinon, précisez votre IP locale avec le port 2368 :
Enter your blog URL : http://votre IP locale :2368
Ensuite, l'adresse IP de la base de données MariaDB :
Enter your MySQL hostname : IP de votre instance MariaDB
(on n'indique pas le port sinon ça va créer une erreur)
On vous demande le nom d'utilisateur (exemple) de la base de donnée :
Enter your MySQL username: userghost
Ensuite le mot de passe (exemple) de cet utilisateur de la base de donnée "ghost".
- Attention, on ne voit pas ce que l'on inscrit comme mot de passe :
Enter your MySQL password: [hidden]
le nom de la base de données (exemple "ghost") :
Enter your Ghost database name: ghost
Il va vous demander votre mot de passe sudo de votre système :
? Sudo Password [hidden]
Il valide un certain nombre de choses, et vous indique que vous n'avez pas installé Nginx pour la demande de certificat SSL, c'est normal puisqu'on utilise un "reverse proxy" en amont.
Il vous demande ensuite si vous voulez configurer "systemd": oui bien sur
? Do you wish to set up Systemd? (Y/n) Y
[1]
Il vous demande enfin si vous voulez lancer Ghost: Vous faites comme voulez, mais moi, je réponds Yeeeeeessssss!!!!
? Do you want to start Ghost? Yes
SystemD est le gestionnaire de processus par excellence, il est utilisé majoritairement dans toutes les distributions Linux et donc recommandé dans notre cas. ↩︎
Tout se passe bien, on obtient ceci 😃🤗😄😊😉🤩😎 :
+ sudo systemctl is-enabled ghost_10-0-0-22
+ sudo systemctl enable ghost_10-0-0-22 --quiet
✔ Starting Ghost
Ghost uses direct mail by default. To set up an alternative email method read our docs at https://ghost.org/docs/config/#mail
------------------------------------------------------------------------------
Ghost was installed successfully! To complete setup of your publication, visit:
http://10.0.0.22:2368/ghost/
Tout se passe mal, on obtient cela 😐🙄😏🤐😤😭😭 :
Message: Ghost was able to start, but errored during boot with: Invalid database host.
Help: Please double check your database config.
Suggestion:
Pas de panique !!!
Déjà, il vous indique le problème.
Si c'est confus, vous pouvez accéder à un journal de logs de ce type
# sudo journalctl -u ghost_10-0-0-22 -n 50
Les erreurs les plus communes sont :
- Vérifiez que vous êtes dans le bon répertoire.
- Vérifiez Les permissions du dossier d'installation.
- Vérifiez l'accès à la base de données :
l'accès à distance est bien actif et que votre utilisateur peut se connecter de n'importe où (voir la note № 16 sur MariaDB). - Vous avez aussi la possibilité d'exécuter un diagnostic intégré à Ghost-cli par la commande suivante :
# ghost doctor
Vous aurez peut-etre un message en jaune sur la version du système utilisé puisqu'il est recommandé Ubuntu à l'instar de Debian, mais ce n'est pas un problème.
A ce propos, Ghost-cli possède un certain nombre de commandes très utile pour gérer votre installation, il suffit de taper :
# ghost help
Avant de vous lancer sur la page web de votre site, On édite le fichier de configuration "json" qui se trouve dans votre répertoire d'installation :
# sudo nano /opt/ghost/config.production.json
"url": "http://10.0.0.22:2368/",
"server": {
"port": 2368,
"host": "10.0.0.22" # il faut ici changer par votre ip
},
"database": {
"client": "mysql",
"connection": {
"host": "10.0.0.7",
"user": "userghost",
"password": "ghost",
"database": "ghost"
}
},
"mail": {
"transport": "Direct"
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/opt/ghost/content"
}
}
Il faut modifier le host, il n'est pas résolu et indiquer plutôt votre IP locale.
Vous pouvez désormais vous rendre sur l'instance web de votre blog Ghost:
C'est terminé pour cette note. Dans la seconde partie, on examinera de plus près le blog, sa configuration principalement.
