Documentation Index
Fetch the complete documentation index at: https://snakysec.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Runbook — Setup Mintlify Hobby pour la doc SnakySec
Audience : opérateur MSSP (Nicolas) qui setup le site doc pour la première fois. Durée : 30 min hors propagation DNS (compter 1h total). Pré-requis : compte Mintlify Hobby créé sur dashboard.mintlify.com.
Vue d’ensemble
| Étape | Action | Lieu |
|---|---|---|
| A | Créer un GitLab Deploy Token | gitlab.com UI |
| B | Sauvegarder le token dans Vault | local CLI |
| C | Remplir le formulaire « Connect your GitLab repository » | dashboard.mintlify.com |
| D | Push les commits docs (mintlify config + landing pages) | git CLI |
| E | Validation : URL temporaire *.mintlify.app répond | navigateur |
| F | Configurer custom domain docs.snakysec.com | Cloudflare DNS |
| G | Validation finale : https://docs.snakysec.com répond | navigateur + curl |
Étape A — Créer un GitLab Project Access Token
Important : Mintlify utilise l’endpoint/api/v4/projects/{id}/repository/branchesqui requiert le scoperead_api. Les Deploy Tokens GitLab ne couvrent PASread_api(seulementread_repository), donc Mintlify retourne : « An unknown error occurred when attempting to fetch branches. Please check your project ID and private access token. » Solution : utiliser un Project Access Token (PRAT, formatglpat-…) au lieu d’un Deploy Token (gldt-…).
- Aller sur gitlab.com/snakysec-group/mssp-snakysec-multi-tenants
- Settings → Access Tokens (PAS « Deploy tokens » sous Repository)
- Cliquer Add new token et remplir :
- Name :
mintlify-read - Role :
Reporter(lecture seule, suffisant pour Mintlify) - Expires at : 1 an depuis aujourd’hui
- Scopes : cocher
read_apiETread_repository
- Name :
- Cliquer Create project access token
- COPIER IMMÉDIATEMENT le token affiché en haut de la page (commence par
glpat-). GitLab ne le réaffichera pas.
Mettre un rappel calendrier 30 jours avant expiration pour rotation. Procédure de rotation = recréer un nouveau token + le re-paster dans Mintlify dashboard → Connections.
Si tu avais créé un Deploy Token raté avant : Settings → Repository → Deploy tokens → Revoke. Hygiène = pas de creds inutilisés qui traînent.
Étape B — Sauvegarder dans Vault
Pour rotation future et audit trail :Étape C — Remplir le formulaire « Connect your GitLab repository »
Dashboard Mintlify → Connect repository → GitLab.| Champ | Valeur exacte |
|---|---|
| Project ID | 79825902 |
| GitLab deployment token | (le token de l’étape A) |
| Branch | main |
| Docs are in a subdirectory | ✅ ON, value = docs |
| Self-hosted GitLab instance | ❌ OFF |
Project ID source : VaultMintlify va cloner le repo, liremssp/platform/gitlab_project_id. Pour vérifier :
docs/docs.json, builder, puis afficher
une URL temporaire https://<slug>.mintlify.app/. Garde l’onglet ouvert.
Étape D — Push les commits docs
Depuis ta machine locale :Étape E — Validation URL temporaire
- Ouvre l’URL
https://<slug>.mintlify.app/(donnée par Mintlify à l’étape C) - Vérifier visuellement :
- Le logo SnakySec apparaît en haut à gauche (light + dark mode)
- Les 3 tabs Documentation / Disaster Recovery / Runbooks Ops sont visibles
- La sidebar charge la liste des 83 pages
- La search bar fonctionne (taper « écart » doit ramener
glossary.md) - Une page test : cliquer sur DR Policy dans le tab Disaster Recovery — doit afficher le markdown rendu
- Onglet Builds sur dashboard.mintlify.com → status
successau dernier build
Si build fail : cf. Troubleshooting ci-dessous.
Étape F — Custom domain docs.snakysec.com
F.1 Côté Mintlify
Dashboard → Settings → Custom domain → Add domain → entredocs.snakysec.com.
Mintlify affiche une cible CNAME du type <your-slug>.mintlify.app ou
cname.mintlify.app. Note cette valeur.
F.2 Côté Cloudflare DNS
- dash.cloudflare.com → ton domaine
snakysec.com→ DNS → Records - Cliquer Add record :
- Type :
CNAME - Name :
docs - Target : (la valeur fournie par Mintlify)
- Proxy status : ⚠️ DNS only (gris) — PAS Proxied (orange)
- TTL : Auto
- Type :
- Sauvegarder
Pourquoi DNS only ? Mintlify gère son propre certificat TLS. Si Cloudflare proxy en orange est activé, Cloudflare termine TLS de son côté puis re-établit avec Mintlify → conflit (Mintlify voit une IP Cloudflare au lieu du client final), erreurs525 SSL handshake failedou526 Invalid SSL Certificate.
F.3 Propagation DNS
Attendre 5-30 min. Vérifier :Étape G — Validation finale
Surhttps://docs.snakysec.com/ :
- ✅ Le site charge sans erreur TLS
- ✅ Logo + favicon SnakySec visibles
- ✅ Search bar fonctionnelle
- ✅ Toutes les 83 pages accessibles via la sidebar (ouvre 5-10 au hasard pour tester)
- ✅ Pas d’erreur 404 sur des liens internes (Mintlify auto-mappe les
.md)
Test final recommandé : envoie le lien https://docs.snakysec.com/ à un
utilisateur externe (ami, conjoint, prospect non-tech) pour valider que le
site charge en HTTPS sans warning, sur mobile et desktop.
Troubleshooting
Build Mintlify échoue avec « Invalid docs.json »
Le JSON est cassé. Valider localement :Build OK mais des pages affichent 404
Ledocs.json référence un chemin qui n’existe pas. Vérifier :
docs.json.
Custom domain « Connection refused » ou TLS warning
- Vérifier
dig docs.snakysec.com CNAME +short— la valeur doit être celle donnée par Mintlify, pas un autre target. - Vérifier Cloudflare → le record est DNS only (gris), pas proxied (orange).
- Mintlify dashboard → Custom domain → status doit être « Connected » (pas « Pending »).
- Si toujours pas OK après 24h : raise issue Mintlify support (mailto:support@mintlify.com).
Token Mintlify révoqué ou expiré
Symptôme : builds qui échouent silencieusement, dernier build vert il y a > 7 jours.- Recréer un nouveau Deploy Token sur GitLab (étape A)
- Patcher Vault (étape B)
- Mintlify dashboard → Connections → mssp-snakysec-multi-tenants → Reauthorize → coller le nouveau token
- Forcer un rebuild via Mintlify dashboard → Builds → Trigger build
Search bar ne trouve rien
Mintlify build l’index search à chaque déploiement. Si vide :- Attendre la fin du build (peut être en cours)
- Vérifier que les pages ont bien un frontmatter
title+description(sinon pas indexées par Mintlify)
Référence
- docs.json schema Mintlify v4
- GitLab Deploy Tokens
- Cloudflare CNAME setup
- Configuration locale : development.mdx
- Conventions doc : AGENTS.md