Créer son blog avec Ghost, Docker et NGINX

Créer son blog avec Ghost, Docker et NGINX

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.