Ghost est une plateforme entièrement open source pour la gestion et la publication de contenu. Elle permet notamment la gestion de rôles et utilisateurs pour collaborer à plusieurs, mais aussi la programmation de publication. Vous pouvez retrouver l'ensemble des fonctionnalités ici.

Dans cet article nous allons voir comment mettre en place son blog en HTTPS avec Ghost et Docker.

Pour y parvenir nous utiliserons docker-compose et notre stack sera composée des éléments suivants :

  • Ghost
  • MariaDB
  • NGINX
  • Let's Encrypt

Nous utiliserons les images de Bitnami pour Ghost et MariaDB, ensuite concernant NGINX et Let's Encrypt nous utiliserons nginx-proxy et docker-letsencrypt-nginx-proxy-companion comme nous avons pu le faire dans cet article ou celui ci.

Commençons par créer un dossier docker-ghost et ajoutons le fichier docker-compose.yml :

mkdir docker-ghost && cd docker-ghost   touch docker-compose.yml  

Ensuite nous ajoutons les services nginx-proxy et ssl-companion

version: '2'   services:    nginx-proxy:    image: jwilder/nginx-proxy    container_name: nginx-proxy    ports:      - '80:80'      - '443:443'    volumes:      - /var/run/docker.sock:/tmp/docker.sock:ro      - /etc/nginx/vhost.d      - /usr/share/nginx/html      - /apps/web/ssl:/etc/nginx/certs:ro  ssl-companion:    image: jrcs/letsencrypt-nginx-proxy-companion    container_name: ssl-companion    volumes:      - /apps/web/ssl:/etc/nginx/certs:rw      - /var/run/docker.sock:/var/run/docker.sock:ro    volumes_from:      - nginx-proxy    depends_on:      - nginx-proxy

Puis le service mariadb :

 mariadb:    image: 'bitnami/mariadb:latest'    environment:      - MARIADB_ROOT_USER=YOUR_ROOT_USER      - MARIADB_ROOT_PASSWORD=YOUR_PASSWORD      - MARIADB_DATABASE=ghost    volumes:      - ./ghost_data/db_data:/bitnami/mariadb
  1.  On définit l'image que l'on souhaite utiliser
  2. On définit l'utilisateur, le mot de passe et le nom de la base de données 
  3. On crée un volume pour pouvoir récupérer les données si l'on souhaite faire un backup.

Pour finir on rajoute le service ghost :

ghost:      image: bitnami/ghost:latest    depends_on:      - mariadb    ports:      - 2368    volumes:      - ./ghost_data/content_data:/bitnami/ghost    environment:      - VIRTUAL_HOST=blog.your_domain.fr      - LETSENCRYPT_HOST=blog.your_domain.fr      - LETSENCRYPT_EMAIL=contact@domain.fr      - GHOST_HOST=blog.your_domain.fr      - MARIADB_USER=YOUR_ROOT_USER      - MARIADB_PASSWORD=YOUR_PASSWORD
  1. On définit l'image que l'on souhaite utiliser
  2. On mappe le port 2368 entre la machine hôte et le container
  3. On lie le service au service mariadb
  4. On définit le volume pour la sauvegarde
  5. On définit les variables d'environnement nécessaires à NGINX et Let's Encrypt en définissant le domaine par lequel on souhaite accéder au service. Ensuite on définit le domaine pour ghost. Enfin on définit le nom d'utilisateur et le mot de passe pour se connecter à la base de données.

Vous pouvez consulter l'ensemble des variables d'environnement de ghost sur cette page.

Voici le fichier docker-compose.yml complet :

version: '2'   services:    nginx-proxy:    image: jwilder/nginx-proxy    container_name: nginx-proxy    ports:      - '80:80'      - '443:443'    volumes:      - /var/run/docker.sock:/tmp/docker.sock:ro      - /etc/nginx/vhost.d      - /usr/share/nginx/html      - /apps/web/ssl:/etc/nginx/certs:ro  ssl-companion:    image: jrcs/letsencrypt-nginx-proxy-companion    container_name: ssl-companion    volumes:      - /apps/web/ssl:/etc/nginx/certs:rw      - /var/run/docker.sock:/var/run/docker.sock:ro    volumes_from:      - nginx-proxy    depends_on:      - nginx-proxy  mariadb:    image: 'bitnami/mariadb:latest'    environment:      - MARIADB_ROOT_USER=YOUR_ROOT_USER      - MARIADB_ROOT_PASSWORD=YOUR_PASSWORD      - MARIADB_DATABASE=ghost    volumes:      - ./ghost_data/db_data:/bitnami/mariadb  ghost:    image: bitnami/ghost:latest    depends_on:      - mariadb    ports:      - 2368    volumes:      - ./ghost_data/content_data:/bitnami/ghost    environment:      - VIRTUAL_HOST=blog.your_domain.fr      - LETSENCRYPT_HOST=blog.your_domain.fr      - LETSENCRYPT_EMAIL=contact@domain.fr      - GHOST_HOST=blog.your_domain.fr      - MARIADB_USER=YOUR_ROOT_USER      - MARIADB_PASSWORD=YOUR_PASSWORD

Récupérez le fichier docker-compose.yml directement depuis votre serveur, remplacez les variables d'environnement et démarrez les services :

docker-compose up -d  

Ensuite rendez vous sur le domaine que vous avez saisie dans le fichier docker-compose.yml vous devriez voir cette page s'afficher :

ghost blog

Ensuite rendez-vous sur cette adresse votre-domaine/ghost. Maintenant vous allez devoir suivre les instructions pour configurer votre blog :

Créez un nouveau compte 

ghost blog création du compte

Saisissez vos informations utilisateur et le nom de votre blog 

ghost informations utilisateur

Invite d'autres personnes à collaborer avec vous. (étape facultative) 

ghost collaborateur

Et voila votre Blog Ghost est maintenant configuré et prêt à être utilisé.

ghost administration

Vous pouvez retrouver le fichier docker-compose.yml ici.

Abonnez vous à la newsletter pour recevoir chaque nouvel article dés sa sortie. 
Si cet article vous a plu partagez le.

Rejoindre la communauté DWA Studio

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.