Configuration de Jekyll : lancer le serveur de développement et créer du contenu
Configurez votre environnement de développement Jekyll axé sur Docker. Démarrez le serveur de développement, créez du contenu et personnalisez votre thème.
Configuration de Jekyll
Démarrez votre serveur de développement Jekyll basé sur Docker et créez votre premier contenu. Aucune installation locale de Ruby requise — tout s’exécute à l’intérieur du conteneur.
flowchart LR
A([Repo cloned]) --> B[docker compose up]
B --> C{First run?}
C -->|Yes| D[bundle install\n~2 min]
C -->|No| E[Gems already cached]
D --> E
E --> F[Jekyll server starts]
F --> G([localhost:4000 🎉])
Prérequis
Complétez d’abord Configuration de la machine (Docker Desktop, Git, GitHub CLI).
Étape 1 — Cloner le dépôt
Si vous n’avez pas encore cloné :
gh repo clone bamr87/zer0-mistakes
cd zer0-mistakes
Ou si vous avez utilisé l’assistant d’installation, vous êtes déjà dans le bon répertoire.
Étape 2 — Démarrer le serveur de développement
docker compose up
Au premier lancement, Docker :
- Télécharge l’image Jekyll (≈ 1–2 min)
- Exécute
bundle installà l’intérieur du conteneur - Démarre Jekyll avec le rechargement à chaud
Les statistiques de contenu ne sont pas régénérées au démarrage —
_data/content_statistics.ymlest validé et lu directement. Actualisez-les avecrake stats:generate(ou_data/generate_statistics.sh) après avoir ajouté du contenu.
Votre site est disponible à l’adresse http://localhost:4000.

Étape 3 — Vérifier l’état du site
docker compose exec jekyll bundle exec jekyll doctor \
--config '_config.yml,_config_dev.yml'

Sortie attendue :
Configuration file: /site/_config.yml
Configuration file: /site/_config_dev.yml
Source: /site
Destination: /site/_site
Incremental build: enabled
Generating... done in X seconds.
Incremental build: enabled provient de _config_dev.yml ; sans cette seconde configuration, la ligne est absente.
Commandes essentielles
# Start server (foreground — shows live logs)
docker compose up
# Start detached
docker compose up -d && docker compose logs -f
# Stop server
docker compose down
# Force rebuild (after Gemfile or Dockerfile changes)
docker compose down && docker compose up --build
# Shell into the container
docker compose exec jekyll bash
# Build for production (no watch)
docker compose exec -T jekyll bundle exec jekyll build \
--config '_config.yml,_config_dev.yml'
Fichiers de configuration
Le thème utilise deux configurations superposées — le développement surcharge la production :
_config.yml (production)
title: "Your Site Title"
description: "Your site description"
url: "https://yourdomain.com"
baseurl: ""
remote_theme: "bamr87/zer0-mistakes"
plugins:
- github-pages
- jekyll-remote-theme
- jekyll-feed
- jekyll-sitemap
- jekyll-seo-tag
- jekyll-paginate
- jekyll-relative-links
- jekyll-redirect-from
- jekyll-include-cache
_config_dev.yml (surcharges de développement)
url: "http://localhost:4000"
baseurl: ""
# Use local theme files instead of remote
theme: "jekyll-theme-zer0"
remote_theme: false
livereload: true
incremental: true
show_drafts: true
future: true
Bootstrap 5.3.3 est intégré dans
assets/vendor/— il n’y a pas de clés de configurationbootstrap:.
Créez votre premier article
Les articles se trouvent dans pages/_posts/. Format du nom de fichier : YYYY-MM-DD-slug.md.
cat > pages/_posts/$(date +%Y-%m-%d)-my-first-post.md << 'EOF'
---
title: "My First Post"
description: "Hello from zer0-mistakes"
date: 2026-05-30T00:00:00.000Z
layout: article
tags: [hello-world]
categories: [Blog]
---
Hello, world! This is my first post.
EOF
Jekyll le prend en compte immédiatement (le rechargement à chaud actualise le navigateur).
Structure du projet
zer0-mistakes/
├── _config.yml # Production config
├── _config_dev.yml # Dev overrides (loaded by docker compose)
├── docker-compose.yml # Container definition
├── pages/
│ ├── _posts/ # Blog posts
│ ├── _docs/ # Documentation pages
│ └── _quickstart/ # This guide
├── _layouts/ # Page templates
├── _includes/ # Reusable components
├── _sass/ # Sass partials
└── assets/
├── css/ # Compiled CSS + custom overrides
├── js/ # JavaScript modules
└── vendor/ # Bootstrap 5.3.3 (vendored)

Styles personnalisés
Ajoutez vos styles dans _sass/custom.scss (compilés dans assets/css/main.css) :
// _sass/custom.scss
:root {
--bs-primary: #0d6efd; // override Bootstrap primary color
}
.my-hero {
background: linear-gradient(135deg, var(--bs-primary), var(--bs-secondary));
}
Ou ajoutez assets/css/user-overrides.css et définissez user_overrides: true dans _config.yml. Le thème l’intègre alors après main.css, de sorte que vos règles l’emportent sans modifier aucun include. (Sans ce paramètre, le fichier est livré mais jamais chargé.)
Dépannage
Le conteneur ne démarre pas
docker compose logs jekyll
docker compose down && docker compose up --build
Erreurs bundle install
docker compose exec jekyll bundle install --retry 3
Page introuvable / ancien contenu
docker compose exec jekyll bundle exec jekyll clean
docker compose restart
Erreurs de permissions (Linux)
sudo chown -R $USER:$USER .