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
- On définit l’image que l’on souhaite utiliser
- On définit l’utilisateur, le mot de passe et le nom de la base de données
- 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
- On définit l’image que l’on souhaite utiliser
- On mappe le port 2368 entre la machine hôte et le container
- On lie le service au service mariadb
- On définit le volume pour la sauvegarde
- 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 :
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
Saisissez vos informations utilisateur et le nom de votre blog
Inviter d’autres personnes à collaborer avec vous. (étape facultative)
Et voila votre Blog Ghost est maintenant configuré et prêt à être utilisé.
Vous pouvez retrouver le fichier docker-compose.yml ici.