---
title: MkDocs
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, wiki, documentation, static-site, markdown, python, mkdocs-material, docker]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=wiki]
---

# 📖 MkDocs

> Générateur de site statique pour documentation technique, écrit en Python. Rapide, simple, minimaliste. Avec le thème **Material for MkDocs**, c'est l'une des stacks de doc les plus populaires du monde open source.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [mkdocs.org](https://www.mkdocs.org/) |
| **GitHub** | [mkdocs/mkdocs](https://github.com/mkdocs/mkdocs) |
| **License** | BSD-2-Clause |
| **Langage** | Python |
| **Étoiles** | ⭐ 2631 |
| **Dernière MAJ** | 2026-05-26 |
| **Catégorie** | [[cat-wiki]] |

## Description

MkDocs est un **générateur de site statique spécialisé documentation**, écrit en Python, qui transforme un dossier de fichiers Markdown en un site web statique propre et navigable. Sa philosophie : **« project documentation with Markdown »**. L'outil est volontairement minimaliste, sans JS lourd, sans base de données, sans serveur applicatif : on écrit du Markdown, on configure un `mkdocs.yml`, on lance `mkdocs build`, et on sert le dossier `site/` avec n'importe quel serveur HTTP.

L'écosystème est dominé par le thème **Material for MkDocs** (de Piotr Adamczyk, dit « squidfunk ») qui apporte : recherche instantanée, code highlighting, Mermaid/JSDiagrams, admonitions, tabs, snippets, support multilingue, dark mode toggle, génération PDF/Print, et des centaines d'options. C'est devenu le standard de facto pour la documentation de projets Python, Kubernetes, FastAPI, et bien d'autres.

MkDocs est purement statique : on l'utilise pour **publier** de la doc, pas pour gérer un wiki en ligne. Pour de l'édition collaborative interne, on s'orientera vers [[app-wiki-js]] ou [[app-docmost]]. Pour du Node/MDX/React, le concurrent direct est [[app-docusaurus]].

## Installation

### Option 1 : Docker

L'image `squidfunk/mkdocs-material` permet de servir ou builder le site sans installer Python localement.

```yaml
# docker-compose.yml
services:
  mkdocs-serve:
    image: squidfunk/mkdocs-material:latest
    container_name: mkdocs
    restart: unless-stopped
    command: serve --dev-addr 0.0.0.0:8000
    volumes:
      - ./docs:/docs
      - ./mkdocs.yml:/mkdocs.yml:ro
    ports:
      - "8000:8000"

  mkdocs-build:
    image: squidfunk/mkdocs-material:latest
    container_name: mkdocs-build
    profiles: ["build"]
    volumes:
      - ./docs:/docs
      - ./mkdocs.yml:/mkdocs.yml:ro
      - ./site:/site
    command: build --strict
```

Pour un **build CI/CD** on utilise le profil `build`, et on uploade `./site/` sur le serveur cible (S3, Pages, etc.).

### Option 2 : Installation manuelle (Python)

```bash
python -m venv .venv
source .venv/bin/activate
pip install mkdocs mkdocs-material mkdocs-minify-plugin
# ou : pip install mkdocs-material[recommended]
```

Prérequis : **Python 3.8+**. Le `mkdocs.yml` à la racine du projet décrit la nav, le thème, les plugins et la configuration.

```bash
mkdocs new mon-projet    # crée docs/index.md et mkdocs.yml
cd mon-projet
mkdocs serve             # serveur dev avec HMR sur :8000
mkdocs build             # génère ./site/
mkdocs gh-deploy         # déploiement GitHub Pages en une commande
```

## Configuration

Le fichier `mkdocs.yml` pilote tout :

- **site_name, site_url, site_description** : métadonnées globales.
- **theme** : `theme: material` active le thème Material (et ses features via `features:`).
- **nav** : structure du menu. Exemple :
  ```yaml
  nav:
    - Accueil: index.md
    - Guide:
      - Démarrage: guide/start.md
      - Config: guide/config.md
    - API: api.md
  ```
- **plugins** : `search`, `minify`, `git-revision-date-localized`, `mkdocstrings` (auto-génération depuis docstrings Python).
- **markdown_extensions** : `admonition`, `pymdownx.highlight`, `pymdownx.superfences`, `pymdownx.tabbed`, `pymdownx.tasklist`, etc.
- **extra** : variables injectées dans le thème, `social`, `analytics`, `generator: false` pour cacher le footer MkDocs.
- **palette** : dark/light toggle, primary/accent color.
- **strict: true** en CI : fait échouer le build en cas de lien mort (très utile).

## Alternatives

### Open Source

- [[app-docusaurus]] — Équivalent Node/React/MDX, plus « marketing-friendly ».
- [[app-wiki-js]] — Wiki éditable, pas publication.
- [[app-docmost]] — Wiki collaboratif, pas statique.
- [[app-raneto]] — Wiki Markdown Node, plus minimaliste.
- **Sphinx** — Standard Python historique (utilisé par Python, Django, NumPy).
- **Antora** — Multi-repo AsciiDoc, gros projets modulables.
- **Hugo** — Statique généraliste Go, plus rapide mais moins orienté doc.
- **Docusaurus (encore)** — Plus complet pour un site de projet avec blog, i18n poussé, versioning.

### Propriétaires (ce que MkDocs remplace)

- **ReadTheDocs** (hébergé) — MkDocs + Material est porté par la communauté RTD.
- **Gitbook** (cloud) — MkDocs fait le même job en self-hosted, gratuitement.
- **Notion (en export)** — Quand on veut un site public, MkDocs est plus propre.
- **Confluence (en publication)** — Pour publier la doc en public, MkDocs est plus adapté.

## Sécurité

- ✅ **100 % statique** : pas de serveur applicatif, pas de BDD, surface d'attaque nulle.
- ✅ Site auditable et généré depuis un dépôt Git, parfait pour les revues de code de la doc.
- ⚠️ Bien configurer `strict: true` pour casser le build sur les liens cassés ou les pages manquantes.
- ⚠️ Le **thème Material** reçoit des MAJ fréquentes (sécurité et features) : mettre à jour `mkdocs-material` régulièrement via Dependabot.
- ✅ **HTTPS** au point de service (Caddy, Nginx, Cloudflare, etc.).
- ✅ Si on active `mkdocstrings` avec des docstrings Python, attention à ne pas exposer de secrets dans la doc auto-générée.
- ⚠️ Les **plugins tiers** ont accès à toute la doc : limiter aux plugins officiels squidfunk ou bien étoilés/maintenus.

## Ressources

- [Site officiel MkDocs](https://www.mkdocs.org/)
- [Documentation](https://www.mkdocs.org/getting-started/)
- [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)
- [GitHub mkdocs/mkdocs](https://github.com/mkdocs/mkdocs)
- [Awesome MkDocs](https://github.com/mkdocs/awesome-mkdocs)

## Pages Liées

- [[cat-wiki]] — Vue d'ensemble de la catégorie Wiki
- [[app-docusaurus]] — Concurrent Node/MDX
- [[app-wiki-js]] — Wiki éditable
- [[app-docmost]] — Wiki collaboratif moderne
- [[recettes-docker-compose]] — Templates Docker partagés
