Writing Homelab Documentation
Structures et rédige la documentation technique d'un homelab avec MkDocs en appliquant des méthodes professionnelles de documentation technique. Utilise cette compétence quand on crée une nouvelle page de documentation (information, processus, installation/configuration), quand on documente un service/serveur nouvellement installé, ou quand on doit organiser du contenu Markdown brut (captures d'écran, procédures, configs) en une page finale structurée.
Demande reçue : "Ajoute une page pour Proxmox"
- Identifier le type de page (info / process / install-config)
- Poser les questions de cadrage (voir Workflow)
- Créer le fichier
.mdavec frontmatter au bon endroit dans l'arborescence - Rédiger en respectant la sémantique du type de page
- Intégrer captures d'écran, tableaux, blocs de code
- Livrer la page finale, prête à être commitée
Étape 1 — Déterminer le type de document
Toujours clarifier avant d'écrire :
- Information : description d'un concept, d'une architecture, d'un composant (pas d'actions à exécuter)
- Process : suite d'étapes récurrentes (sauvegarde, maintenance, procédure de dépannage)
- Installation/Configuration : mise en place d'un service précis, reproductible
Étape 2 — Collecter les informations brutes
Poser les questions pertinentes selon le type détecté :
- Quel service/composant est concerné ?
- Support physique ou virtuel ? (→ déterminre l'emplacement :
serveurs-physiques/vsmachines-virtuelles/) - Procédure disponible ? (tuto, script, commandes copier-coller)
- Documentation source utilisée (liens externes) ?
- Fichiers de configuration à inclure ?
- Dépendances avec d'autres pages existantes (à lier en cross-reference) ?
Écrire d'abord ces infos brutes dans le fichier (création du fichier + frontmatter minimal), sans polish. Ne pas bloquer l'utilisateur en attendant une réponse parfaite : itérer.
Étape 3 — Déterminer l'emplacement dans la structure
Respecter l'arborescence mkdocs existante (mkdocs.yml / nav). Règles par défaut :
- Machine physique →
infrastructure/serveurs-physiques/<nom>.md - VM →
infrastructure/machines-virtuelles/<nom>.md - Service applicatif →
services/<categorie>/<nom>.md - Page conceptuelle →
concepts/<sujet>.md
Si ambigu, proposer l'emplacement plutôt que de demander — l'utilisateur valide ou corrige.
Étape 4 — Rédiger le frontmatter
YAML--- title: <Nom du service/composant> type: information | process | installation status: draft | validé tags: [proxmox, virtualisation, ...] date_creation: 2024-01-15 date_maj: 2024-01-15 ---
Étape 5 — Rédiger le contenu selon le type
Page Information :
- Contexte / objectif
- Architecture (schéma si possible, sinon description textuelle claire)
- Caractéristiques techniques (tableau)
- Liens vers pages process/installation associées
Page Process :
- Prérequis
- Étapes numérotées, chacune actionnable
- Points de vérification / rollback
- Fréquence si applicable (ex : sauvegarde hebdomadaire)
Page Installation/Configuration :
- Prérequis (matériel, logiciel, réseau)
- Étapes d'installation (commandes en bloc de code avec langage spécifié)
- Configuration post-installation
- Fichiers de config pertinents (en bloc de code, chemin en commentaire)
- Vérification / tests de bon fonctionnement
- Section Troubleshooting si pertinent
- Sources / liens de référence utilisés
Étape 6 — Intégrer médias et enrichissements
- Captures d'écran :
, jamais de nom de fichier générique (image1.png) - Convertir les listes de caractéristiques en tableaux Markdown dès que ≥3 éléments comparables
- Utiliser les admonitions MkDocs (
!!! note,!!! warning,!!! tip) pour les informations critiques - Blocs de code toujours avec langage spécifié (
```bash,```yaml,```nginx)
Étape 7 — Passe de finalisation
- Relire pour cohérence terminologique avec le reste de la doc
- Vérifier les liens internes (cross-reference vers pages liées)
- Mettre à jour
status: validéetdate_maj - Mettre à jour
navdansmkdocs.ymlsi nouvelle page
Progress:
- [ ] Type de document déterminé
- [ ] Informations brutes collectées et écrites
- [ ] Emplacement dans l'arborescence choisi
- [ ] Frontmatter rédigé
- [ ] Contenu structuré selon le type
- [ ] Médias/tableaux intégrés
- [ ] Relecture et mise à jour nav
Example 1 : Input : "Je veux documenter l'installation de Pi-hole sur une VM" Output :
YAML--- title: Pi-hole type: installation status: draft tags: [dns, reseau, adblock] date_creation: 2024-03-01 date_maj: 2024-03-01 --- # Installation de Pi-hole
- VM Debian 12, 1 vCPU / 1 Go RAM
- Adresse IP statique réservée sur le réseau
192.168.1.0/24
Bashcurl -sSL https://install.pi-hole.net | bash
| Paramètre | Valeur |
|---|---|
| Interface DNS | 192.168.1.53 |
| Upstream DNS | Cloudflare (1.1.1.1) |
!!! warning Désactiver le service DHCP du routeur si Pi-hole gère aussi le DHCP.
...
Fichier créé à : `machines-virtuelles/pi-hole.md`
**Example 2 :**
Input : "Ajoute une page sur l'architecture réseau générale" (page information, pas d'action)
Output : page avec frontmatter `type: information`, section Contexte, tableau des VLANs, schéma texte de la topologie, liens vers les pages process de configuration réseau associées. Placée en `concepts/architecture-reseau.md`.
- Toujours écrire le frontmatter avant le contenu, même minimal, dès la création du fichier
- Ne jamais mélanger les types de page (une page install ne doit pas contenir de longue partie théorique — la lier plutôt vers une page information)
- Préférer les tableaux aux listes à puces pour toute donnée comparative (specs, versions, ports)
- Toute commande exécutée doit être dans un bloc de code avec le langage spécifié
- Toujours indiquer la source (lien, doc officielle) en fin de page d'installation
- Nommer les fichiers en
kebab-casecohérent avec les slugs de navigation
- Ne pas créer une page "fourre-tout" mélangeant info + install + troubleshooting sans séparation claire
- Ne pas laisser le champ
status: draftindéfiniment — forcer la passe de finalisation avant de considérer la page terminée - Ne pas insérer de captures d'écran sans légende/description
- Ne pas dupliquer une information déjà présente ailleurs — préférer un lien croisé
- Ne pas deviner l'emplacement dans l'arborescence sans vérifier la structure
mkdocs.ymlexistante