[Tuto] Installation de Ghost 5 + MySQL 8 en Docker

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 203
1 572
278
/var/run/docker.sock
Bonjour,
Voici un petit tuto, pour ceux qui souhaiterai installer Ghost 5 + MySQL 8 en Docker.

43974508-b64b2fe8-9cd2-11e8-8e58-707254b8817c.png

Ghost c'est quoi ? :giggle:
Ghost est une plateforme de blogs gratuite et open source écrite en JavaScript et distribuée sous la licence MIT.

Retrouvez plus d'informations sur le site officiel.


Disclamer :
Le but de ce tuto sera de rendre cette installation facile et accessible a tous, bien que loin d’être un expert de docker/docker compose, n’hésiter pas à répondre à ce sujet avec vos interrogations, .. Pour ceux qui sont plus a l'aise avec ce genre d'installation, n'hésiter pas a proposer des améliorations, ou des conseils, ...

Pour un support sur Ghost ou MySQL ne concernant pas une installation via ce tutoriel, merci de poster votre question dans Applications.


Pré-requis :
Avoir Docker et Docker Compose installé sur sa machine, voir [Tuto] Installation de Docker, Docker-compose et Portainer sur Debian 11
Ce connecter en SSH à votre Serveur/NAS, si vous ne savez pas le faire, vous trouverez ici un tuto explicatif : [Tuto] Acceder à son NAS en lignes de commande.

A modifier selon votre installation :
Toute mon installation, va ce faire dans un dossier "blog" inclut dans mon dossier "docker"
Je vais donc installer Ghost 5 + MySQL 8 dans docker/blog

Sommaire :
1/ Créer les dossiers nécessaires
2/ Configuration et Création du fichier "docker-compose.yml"
3/ Création et démarrage des conteneurs
4/ Accès à Ghost
5/ Aller plus loin

a/ Paramétrer un serveur SMTP pour l'envoi des mails

Aller go :)



1/ Créer les dossiers nécessaires
Sur le NAS nous allons devoir créer un dossier blog contenant un dossier ghost_content pour le contenu de notre blog et un dossier ghost_db, ce dernier contiendra notre base de données.

En SSH, avec la commande cd nous allons accéder au dossier ou vous souhaitez installer les fichiers de configuration du conteneur. Dans mon cas c'est /home/tuto/docker, j’exécute donc la commande suivante pour accéder au dossier docker :

cd /home/tuto/docker

Vous pouvez créer le dossier blog et les sous-dossier avec cette commande : mkdir -p blog/{ghost_content,ghost_db}

Ensuite, avec la commande cd blog, rendez-vous dans le dossier principal que nous venons de créer.

Note : A partir de maintenant, toutes les commandes du tutoriel partirons du principe que vous les exécuter depuis le dossier /blog




2/ Configuration et Création du fichier "docker-compose.yml"
Dans le dossier blog, vous allez créer un fichier docker-compose.yml, soit en ligne de commande via les étapes données si dessous, ou alors sur votre PC depuis votre éditeur de texte, puis une fois compléter, vous le placerai dans le dossier avec la méthode de votre choix ( SFTP, ... ).

Nous allons donc créer un fichier docker-compose.yml avec la commande suivante : nano docker-compose.yml

Dont nous allons coller le contenu suivant :
YAML:
version: '3.1'

services:
  ghost:
    container_name: blog_ghost
    image: ghost:5-alpine
    restart: unless-stopped
    ports:
      - 2368:2368
    volumes:
      - ./ghost_content:/var/lib/ghost/content
    environment:
      url: https://blog.ndd.fr
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: PASSWORD_SUPER_FORT
      database__connection__database: ghost
    depends_on:
      - db
    mem_limit: 512m

  db: 
    container_name: blog_db
    image: mysql:8-debian 
    restart: unless-stopped 
    environment:
      MYSQL_ROOT_PASSWORD: PASSWORD_SUPER_FORT
    volumes:
      - ./ghost_db:/var/lib/mysql
    mem_limit: 768m

Vous devez modifier :
- Dans url: https://blog.ndd.fr, https://blog.ndd.fr est a remplacer par l'url de votre blog.
- Dans database__connection__password: PASSWORD_SUPER_FORT, PASSWORD_SUPER_FORT est à modifier par un mot de passe de votre choix.
- Dans MYSQL_ROOT_PASSWORD: PASSWORD_SUPER_FORT, PASSWORD_SUPER_FORT est a remplacer le même mot de passe que celui choisi juste avant ( database__connection__password ).


3/ Création et démarrage des conteneurs
Maintenant que tous en prêt, nous allons lancer la création du conteneur.
Pour cela, toujours dans notre dossier "ghost", nous exécutons la commande suivante :
Code:
sudo docker compose up -d

Note : Si vous êtes sur la version 1 de docker-compose, la commande sera : sudo docker compose up -d


4/ Accès à Ghost
Une fois le conteneur créé, il faut encore attendre quelques minutes avant que ghost soit disponible.
Ensuite rendez-vous a l'url de votre machine + le port 2368 pour afficher ghost, ( celle que vous avez indiqué dans le compose )
Exemple : http://192.168.1.10:2368

Pour accéder a l'interface de gestion, il suffit de rajouter /ghost a la fin de l'url.
Exemple : http://192.168.1.10:2368/ghost


5/ Aller plus loin
a/ Paramétrer un serveur SMTP pour l'envoi des mails
Pour configurer un serveur SMTP ( pour l'envoi des mails ) vous devez rajouter un ensemble de variables d'environnement a votre fichier-compose.yml.

Les voici :
YAML:
      mail__transport: SMTP
      mail__from: monmail@ndd.fr
      mail__options__service: SMTP
      mail__options__host: serveur.smtp.net
      mail__options__port: <PORT_SMTP>
      mail__options__auth__user: nom_utilisateur
      mail__options__auth__pass: mon_mot_de_passe

Si on reprend le compose d'exemple plus haut, l'intégration donnerai alors ceci

YAML:
version: '3.1'

services:
  ghost:
    container_name: blog_ghost
    image: ghost:5-alpine
    restart: unless-stopped
    ports:
      - 2368:2368
    volumes:
      - ./ghost_content:/var/lib/ghost/content
    environment:
      url: https://blog.ndd.fr
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: PASSWORD_SUPER_FORT
      database__connection__database: ghost
      mail__transport: SMTP
      mail__from: monmail@ndd.fr
      mail__options__service: SMTP
      mail__options__host: serveur.smtp.net
      mail__options__port: <PORT_SMTP>
      mail__options__auth__user: nom_utilisateur
      mail__options__auth__pass: mon_mot_de_passe
    depends_on:
      - db
    mem_limit: 512m

  db: 
    container_name: blog_db
    image: mysql:8-debian 
    restart: unless-stopped 
    environment:
      MYSQL_ROOT_PASSWORD: PASSWORD_SUPER_FORT
    volumes:
      - ./ghost_db:/var/lib/mysql
    mem_limit: 768m

Vous allez devoir pratiquement a la configuration de celui-ci en modifiant les champs :
- Dans mail__from: monmail@ndd.fr, monmail@ndd.f est a remplacer par votre adresse mail.
- Dans mail__options__host: serveur.smtp.net, serveur.smtp.net[/ est à modifier par l'adresse du serveur SMTP de votre fournisseur mail.
- Dans mail__options__port: <PORT_SMTP>, <PORT_SMTP> est à modifier par le port du serveur SMTP de votre fournisseur mail.
- Dans mail__options__auth__user: nom_utilisateur, nom_utilisateur est à modifier par le nom d'utilisateur de votre boite mail.
- Dans mail__options__auth__pass: mon_mot_de_passe, mon_mot_de_passe est à modifier par le mot de passe de votre boite mail.[/SIZE]


2022-08-15 - Ajout de la section 7/a/ Paramétrer un serveur SMTP pour l'envoi des mails
2022-08-14 - Mise en forme, adaptation pour l'utilisation de MySQL
 
Dernière édition:
Est-ce que Ghost est le nouveau WordPress ? Pas sûr, mais il semble pourtant performant, léger et très complet. A suivre...
Merci EVOTk pour ce nouveau Tuto !
 
Nouveau wordpress, je ne pense pas non plus.
Mais par contre il est effectivement tres léger et tres performant.

Très adapté pour un petit blog, il est encore loin d'un wordpress, par exemple, pas de module de commentaire intégré, ...
 
@EVOTk
Je pense essayer ce conteneur ;)
Pourrais-tu me confirmer que cette application permet de publier du contenu ? Genre pour ma femme créatrice ? (arts : peinture, aquarelle, etc...)
Un peu à la wordpress, mais pour ce dernier, c'est trop galère de trouver un theme sympa pas payant...