Installer Ghost avec Docker
Au sommaire :
- 1-Qu'est-ce que Ghost ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
1-Qu'est-ce que Ghost ?
Ghost est un CMS (Content Management System), un moteur de blog libre et open-source écrit en JavaScript et distribué sous licence MIT.
C'est le CMS que j'utilise pour mes blog car il est épuré, très économe en ressources et très facile à déployer.
Il y a Tech2Rue évidemment qui me permet de partager mes modestes connaissances en informatique au plus grand nombre mais aussi RetroHack plus axé sur la modification de consoles rétro et l'émulation (autre pendant de la virtualisation).
Bref, Ghost me rend de grand services au quotidien et c'est peu de le dire.
Pour ceux qui ont des connaissances en informatique, n'oubliez pas que internet est un espace de partage donc après avoir suivi ce guide et déployé votre première instance, commencez à rédiger vos premiers tutoriels.
Vous êtes prêts ? YIIIIHIIIII!!!!!
2-Prérequis
Il vous faudra une machine virtuelle sous Ubuntu Server 22.04 LTS.
Voici le guide pour ceux qui veulent repartir de zéro.
Si vous voulez gagner du temps, utilisez un template cloud-init.
Ensuite, suivez ce guide pour installer Docker, Docker Compose et préparer vos variables d'environnement.
Enfin, pour exposer l'application sur l'internet public, il vous faudra déployer Traefik.
3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
version: "3.9"
networks:
web:
services:
traefik:
container_name: traefik
image: traefik:latest
restart: always
network:
web:
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/logs:/logs
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
labels:
- traefik.enable=true
- traefik.http.routers.traefik-dash.entrypoints=websecure
- traefik.http.routers.traefik-dash.rule=Host(`traefik.<votredomaine>.ovh`)
- traefik.http.routers.traefik-dash.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
ghost:
image: ghost
container_name: ghost
hostname: ghost
restart: unless-stopped
network:
- web
# ports:
# - 2368:2368
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ${APPDATA}/ghost:/var/lib/ghost/content
environment:
NODE_ENV: production
url: <url_du_blog>
database__client: sqlite3
database__connection__filename: "content/data/ghost.db"
database__useNullAsDefault: true
database__debug: false
labels:
- traefik.enable=true
- traefik.http.routers.ghost.entrypoints=websecure
- traefik.http.routers.ghost.rule=Host(`ghost.votrenomdedomaine`)
- traefik.http.routers.ghost.service=ghost-svc
- traefik.http.services.ghost-svc.loadbalancer.server.port=2368
- traefik.http.routers.ghost.tls.certresolver=letsencrypt
- image : l'image officielle de Ghost dans sa dernière version
- container_name : le nom du conteneur
- hostname : le nom d'hôte à l'intérieur du conteneur
- restart : unless-stopped
- ports : 2368
- volumes : accés en lecture à l'horloge et au fuseau horaire du serveur et création d'un dossier pour l'application
- environment : on indique que le blog est en mode production, l'url du blog, le type de base de données (sqlite3 pour plus de simplicité), le chemin de la base de données, useNullAsDefautlt activé (optionnel, seulement pour SQLite) et mode débug désactivé
- labels : le blog passera bien sûr par Traefik en HTTPS avec comme nom de domaine celui que vous souhaitez. Puis vous créez un service et vous indiquez le numéro du port ainsi que l'autorité de certification
Téléchargez l'image et déployez le conteneur.
docker compose pull && docker compose create
Puis démarrez le conteneur.
docker start ghost
Accédez à votre blog via l'adresse IP locale ou le nom de domaine, vous devriez tomber sur la page d'accueil.
4-Configuration
Pour configurer le blog, ajoutez "/ghost" à la suite de l'adresse IP/nom de domaine.
- Site title : le nom du blog qui sera affiché en page d'accueil
- Full name : votre pseudo
- Email address : votre adresse mail
- Password : votre mot de passe
Dés que vous avez fini, cliquez sur "Create account & start publishing".
En bas à gauche, cliquez sur l'icône du rouage pour accédez aux réglages du blog.
General
Cliquez sur "General" :
- Title & description : changez le titre de la page d'accueil et la description si besoin
- Site timezone : sélectionnez votre fuseau horaire
- Publication language : mettez "fr"
Si vous êtes présent sur les réseaux sociaux, n'oubliez pas d'aller dans "SITE META SETTINGS".
Staff
Si vous souhaitez qu'une autre personne rédige pour le blog, c'est par ici pour créé un compte.
Intégration
Pour ajouter de nouvelles fonctionnalités comme un espace commentaire, analyser le trafic de votre blog et j'en passe.
Membership
Pas encore testé mais si vous souhaitez monétiser votre blog, Ghost vous propose de connecté ce dernier à votre compte Stripe (concurrent de Paypal).
Design
Ensuite cliquez sur "Design" et "Change theme". Vous allez pouvoir choisir le thème qui vous correspond ou bien charger un thème téléchargé sur le marketplace.
Voici le lien du marketplace qui propose davantage de choix.
Pour rédiger votre premier article, cliquez sur "Posts" et "New Post"
Comme vous pouvez le voir, c'est simple à déployer et surtout économe en ressources comme vous pouvez le constater avec l'image ci-dessous.
On explorera davantage lorsque j'aurai customisé mon instance dans les moindres détails.
See yaaa!!!!!!!!!!