WikiJs/applications/ghost.md

167 lines
4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Untitled Page
description:
published: true
date: 2025-08-28T18:07:31.592Z
tags:
editor: markdown
dateCreated: 2025-08-28T18:07:31.592Z
---
[Ghost](https://ghost.org/) est un CMS open-source, rapide et moderne, orienté **blogging** et **publication de contenu**.
Ce guide décrit comment déployer Ghost dans un environnement conteneurisé avec **Docker Compose**, en utilisant une base de données **MySQL** et un reverse proxy **Traefik** pour la gestion du HTTPS.
---
## 📂 Arborescence du projet
```
ghost/
│── docker-compose.yml
│── content/ # Contenu Ghost (thèmes, images, config)
│── db/ # Données MySQL
│── .env # Variables denvironnement
```
---
## ⚙️ Fichier `docker-compose.yml`
```yaml
services:
ghost:
image: ghost:alpine
container_name: ${SERVICE}
restart: always
environment:
database__client: mysql
database__connection__host: ghost_db
database__connection__user: ${MYSQL_USER}
database__connection__password: ${MYSQL_PASSWORD}
database__connection__database: ${MYSQL_DATABASE}
mail__from: ${MAIL_FROM}
mail__transport: SMTP
mail__options__host: ${MAIL_HOST}
mail__options__port: ${MAIL_PORT}
mail__options__secure: ${MAIL_SECURE}
mail__options__auth__user: ${MAIL_USER}
mail__options__auth__pass: ${MAIL_PASS}
url: https://${DOMAIN}
volumes:
- ./content:/var/lib/ghost/content
networks:
- traefik_net
- ghost_net
depends_on:
- ghost_db
labels:
- "traefik.enable=true"
- "traefik.http.routers.${SERVICE}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${SERVICE}.entrypoints=websecure"
- "traefik.http.routers.${SERVICE}.tls=true"
- "traefik.http.routers.${SERVICE}.tls.certresolver=http"
- "traefik.http.routers.${SERVICE}.service=${SERVICE}"
- "traefik.http.services.${SERVICE}.loadbalancer.server.port=2368"
- "traefik.docker.network=traefik_net"
ghost_db:
image: mysql:8
container_name: ${SERVICE}_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
volumes:
- ./db:/var/lib/mysql
networks:
- ghost_net
networks:
traefik_net:
external: true
ghost_net:
name: ghost_net
driver: bridge
```
---
## 🔐 Variables denvironnement (`.env`)
Exemple de fichier `.env` :
```env
SERVICE=ghost_blog
# Domaine
DOMAIN=blog.example.com
# Base de données
MYSQL_ROOT_PASSWORD=superpassword
MYSQL_USER=ghost
MYSQL_PASSWORD=ghostpass
MYSQL_DATABASE=ghostdb
# Mail (SMTP)
MAIL_FROM="Ghost Blog <noreply@example.com>"
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_SECURE=false
MAIL_USER=smtp_user
MAIL_PASS=smtp_pass
```
---
## 🚀 Déploiement
1. Créez les répertoires nécessaires :
```bash
mkdir -p ghost/content ghost/db
```
2. Placez le fichier `docker-compose.yml` et `.env` dans le dossier `ghost/`.
3. Lancez le déploiement :
```bash
docker compose up -d
```
4. Vérifiez que les conteneurs tournent :
```bash
docker ps
```
---
## 🌍 Accès
* Linterface Ghost sera disponible à :
**[https://blog.example.com](https://blog.example.com)**
* Ladministration est accessible via :
**[https://blog.example.com/ghost](https://blog.example.com/ghost)**
---
## ✨ Points importants
* **Sauvegardes** :
* `./content` contient tous les fichiers Ghost (images, thèmes, config).
* `./db` contient la base de données MySQL.
* **Traefik** gère automatiquement les certificats SSL via Lets Encrypt.
* **Scalabilité** : Ghost est prévu pour un usage monolithique, mais peut être déployé derrière un load balancer.
---
## 📌 Conclusion
Avec cette configuration, vous disposez dun **CMS Ghost auto-hébergé**, sécurisé avec HTTPS grâce à **Traefik**, et supportant une **base MySQL persistante**.
Idéal pour héberger un blog personnel ou professionnel tout en gardant la maîtrise complète de vos données.