From 8466a0eb42407e8148ed706dacede70e6b37bd2d Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:07:35 +0000 Subject: [PATCH 1/9] docs: create applications/ghost --- applications/ghost.md | 167 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 applications/ghost.md diff --git a/applications/ghost.md b/applications/ghost.md new file mode 100644 index 0000000..e8ea2c2 --- /dev/null +++ b/applications/ghost.md @@ -0,0 +1,167 @@ +--- +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 d’environnement +``` + +--- + +## ⚙️ 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 d’environnement (`.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 " +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 + +* L’interface Ghost sera disponible à : + **[https://blog.example.com](https://blog.example.com)** + +* L’administration 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 Let’s 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 d’un **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. From b95b1d3a068e69a7b3b46d4a2359063cd132cb06 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:31:44 +0000 Subject: [PATCH 2/9] docs: update applications/ghost --- applications/ghost.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index e8ea2c2..6b8dc0f 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -2,7 +2,7 @@ title: Untitled Page description: published: true -date: 2025-08-28T18:07:31.592Z +date: 2025-08-28T18:31:42.689Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z @@ -36,18 +36,18 @@ services: restart: always environment: database__client: mysql - database__connection__host: ghost_db + database__connection__host: ${SERVICE}_db database__connection__user: ${MYSQL_USER} database__connection__password: ${MYSQL_PASSWORD} database__connection__database: ${MYSQL_DATABASE} + mail__transport: "SMTP" 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__user: ${MAIL_SECURE} mail__options__auth__pass: ${MAIL_PASS} - url: https://${DOMAIN} + url: "https://${DOMAIN}/" volumes: - ./content:/var/lib/ghost/content networks: @@ -57,12 +57,12 @@ services: - 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.http.routers.ghost.rule=Host(`echo.blasseye.fr`)" + - "traefik.http.routers.ghost.entrypoints=websecure" + - "traefik.http.routers.ghost.tls=true" + - "traefik.http.routers.ghost.tls.certresolver=http" + - "traefik.http.routers.ghost.service=ghost" + - "traefik.http.services.ghost.loadbalancer.server.port=2368" - "traefik.docker.network=traefik_net" ghost_db: @@ -83,7 +83,7 @@ networks: traefik_net: external: true ghost_net: - name: ghost_net + name: ${SERVICE}_net driver: bridge ``` From 37ae5fb077f40d56139a3f78331a0453a9555906 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:33:20 +0000 Subject: [PATCH 3/9] docs: update applications/ghost --- applications/ghost.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index 6b8dc0f..a4377a0 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -2,7 +2,7 @@ title: Untitled Page description: published: true -date: 2025-08-28T18:31:42.689Z +date: 2025-08-28T18:33:18.549Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z @@ -13,7 +13,7 @@ Ce guide décrit comment déployer Ghost dans un environnement conteneurisé ave --- -## 📂 Arborescence du projet +## Arborescence du projet ``` ghost/ @@ -25,7 +25,7 @@ ghost/ --- -## ⚙️ Fichier `docker-compose.yml` +## Fichier `docker-compose.yml` ```yaml services: @@ -116,7 +116,7 @@ MAIL_PASS=smtp_pass --- -## 🚀 Déploiement +## Déploiement 1. Créez les répertoires nécessaires : @@ -140,7 +140,7 @@ docker ps --- -## 🌍 Accès +## Accès * L’interface Ghost sera disponible à : **[https://blog.example.com](https://blog.example.com)** @@ -150,7 +150,7 @@ docker ps --- -## ✨ Points importants +## Points importants * **Sauvegardes** : @@ -161,7 +161,7 @@ docker ps --- -## 📌 Conclusion +## Conclusion Avec cette configuration, vous disposez d’un **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. From c65a15f1c94533dd77b35e3f12a4ff7baadc1adf Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:33:54 +0000 Subject: [PATCH 4/9] docs: update applications/ghost --- applications/ghost.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index a4377a0..5c8b033 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -1,8 +1,8 @@ --- -title: Untitled Page +title: Ghost description: published: true -date: 2025-08-28T18:33:18.549Z +date: 2025-08-28T18:33:53.128Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z From f1cf956dd42fd66e61b60fc479d81d1167200617 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:34:20 +0000 Subject: [PATCH 5/9] docs: update applications/ghost --- applications/ghost.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index 5c8b033..726ecd7 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -1,14 +1,13 @@ --- title: Ghost -description: +description: Ghostest un CMS open-source, rapide et moderne, orienté blogging et publication de contenu. published: true -date: 2025-08-28T18:33:53.128Z +date: 2025-08-28T18:34:18.399Z 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. --- From de925af6c576b1dce174cd894d5d4c2a86866566 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:34:32 +0000 Subject: [PATCH 6/9] docs: update applications/ghost --- applications/ghost.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index 726ecd7..9a581fe 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -1,8 +1,8 @@ --- title: Ghost -description: Ghostest un CMS open-source, rapide et moderne, orienté blogging et publication de contenu. +description: Ghost est un CMS open-source, rapide et moderne, orienté blogging et publication de contenu. published: true -date: 2025-08-28T18:34:18.399Z +date: 2025-08-28T18:34:30.453Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z From 713a005a8215a6844c40cdc964ee9478a34fb1a3 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:36:01 +0000 Subject: [PATCH 7/9] docs: update applications/ghost --- applications/ghost.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index 9a581fe..1480f7b 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -2,7 +2,7 @@ title: Ghost description: Ghost est un CMS open-source, rapide et moderne, orienté blogging et publication de contenu. published: true -date: 2025-08-28T18:34:30.453Z +date: 2025-08-28T18:35:59.647Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z @@ -88,7 +88,7 @@ networks: --- -## 🔐 Variables d’environnement (`.env`) +## Variables d’environnement (`.env`) Exemple de fichier `.env` : From 9730d194db075bcecfe274bd94665ebaf92340b9 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:36:57 +0000 Subject: [PATCH 8/9] docs: update applications/ghost --- applications/ghost.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index 1480f7b..0a26c68 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -2,7 +2,7 @@ title: Ghost description: Ghost est un CMS open-source, rapide et moderne, orienté blogging et publication de contenu. published: true -date: 2025-08-28T18:35:59.647Z +date: 2025-08-28T18:36:55.728Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z @@ -56,12 +56,12 @@ services: - ghost_db labels: - "traefik.enable=true" - - "traefik.http.routers.ghost.rule=Host(`echo.blasseye.fr`)" - - "traefik.http.routers.ghost.entrypoints=websecure" - - "traefik.http.routers.ghost.tls=true" - - "traefik.http.routers.ghost.tls.certresolver=http" - - "traefik.http.routers.ghost.service=ghost" - - "traefik.http.services.ghost.loadbalancer.server.port=2368" + - "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=ghost" + - "traefik.http.services.${SERVICE}.loadbalancer.server.port=2368" - "traefik.docker.network=traefik_net" ghost_db: From ce8851c603529abad1f08fa51ff476cb915e4b81 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 28 Aug 2025 18:51:03 +0000 Subject: [PATCH 9/9] docs: update applications/ghost --- applications/ghost.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/applications/ghost.md b/applications/ghost.md index 0a26c68..0a80d52 100644 --- a/applications/ghost.md +++ b/applications/ghost.md @@ -2,7 +2,7 @@ title: Ghost description: Ghost est un CMS open-source, rapide et moderne, orienté blogging et publication de contenu. published: true -date: 2025-08-28T18:36:55.728Z +date: 2025-08-28T18:51:01.848Z tags: editor: markdown dateCreated: 2025-08-28T18:07:31.592Z @@ -117,21 +117,15 @@ MAIL_PASS=smtp_pass ## Déploiement -1. Créez les répertoires nécessaires : +1. Placez vous dans le dossier `ghost/`. -```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 : +2. Lancez le déploiement : ```bash docker compose up -d ``` -4. Vérifiez que les conteneurs tournent : +3. Vérifiez que les conteneurs tournent : ```bash docker ps