
Strapi : le CMS headless open-source en 2026
Table des matières
Un CMS headless gère votre contenu et vous laisse entièrement libre de choisir comment l’afficher — et à qui.
Qu’est-ce
qu’un CMS headless ?
Un CMS « headless » sépare la gestion du contenu de son rendu visuel. Avec WordPress classique, le CMS génère directement le HTML que reçoit le navigateur. Avec un CMS headless, le back-office ne fait qu’une chose : stocker et exposer des données via une API. C’est ensuite une application indépendante — React, Vue.js, Next.js, une app mobile iOS ou Android — qui consomme ces données et décide de leur mise en forme.
Cette architecture présente un avantage clair : le même contenu peut alimenter simultanément un site web, une application mobile et une interface tierce, sans dupliquer les données.
Strapi est aujourd’hui l’un des CMS headless open-source les plus populaires. Il est développé en Node.js, entièrement auto-hébergeable, et génère automatiquement une API REST et une API GraphQL à partir des modèles de données que vous définissez dans son interface d’administration.
Les avantages concrets de Strapi
1. Flexibilité des modèles de données
Strapi permet de créer des types de contenu entièrement personnalisés depuis une interface graphique, sans toucher au code. Chaque collection dispose de champs configurables : texte, rich text, nombre, date, média, relation vers une autre collection, composant réutilisable. Les relations entre collections (articles ↔ auteurs ↔ catégories) sont définies visuellement et se reflètent automatiquement dans l’API.
2. Double API REST et GraphQL
Par défaut, chaque collection Strapi génère automatiquement des endpoints REST documentés. L’API GraphQL s’active via un plugin officiel. Les deux coexistent et le choix dépend des besoins du front-end. Pour des requêtes complexes avec des relations imbriquées, GraphQL réduit considérablement le nombre de requêtes nécessaires.
3. Open-source et auto-hébergeable
Le code source est disponible sur GitHub sous licence MIT pour la Community Edition. Aucune licence à payer, aucune limitation sur le volume de données ou le nombre de types de contenu. Vous hébergez Strapi sur votre propre infrastructure — un VPS, un serveur dédié, ou des plateformes comme Railway ou Render.
4. Interface d’administration accessible
L’admin panel est moderne et lisible. Un éditeur de contenu non-technique peut l’utiliser sans formation longue. C’est un critère important quand le client doit gérer lui-même son contenu après la livraison du projet.
5. Système de rôles et permissions granulaire
Strapi intègre un système de gestion des accès à deux niveaux : les rôles d’administration (qui peut modifier la structure du CMS) et les permissions API (quels endpoints sont accessibles et par qui). Par défaut, tous les endpoints sont privés — vous activez explicitement ce que vous souhaitez exposer.
Installation de Strapi v5
La version actuelle est Strapi 5 (version stable 5.42.1 à la date de rédaction). L’installation se fait via npx :
npx create-strapi-app@latest mon-projet
cd mon-projet
npm run developL’admin panel est accessible sur http://localhost:1337/admin. Au premier lancement, Strapi demande de créer un compte administrateur local.
Base de données : SQLite en dev, PostgreSQL en production
Par défaut, Strapi utilise SQLite — pratique pour le développement local, sans aucune configuration. Pour la production, je passe systématiquement sur PostgreSQL :
// config/database.js
module.exports = ({ env }) => ({
connection: {
client: 'postgres',
connection: {
host: env('DATABASE_HOST', 'localhost'),
port: env.int('DATABASE_PORT', 5432),
database: env('DATABASE_NAME', 'strapi'),
user: env('DATABASE_USERNAME', 'strapi'),
password: env('DATABASE_PASSWORD', 'strapi'),
ssl: env.bool('DATABASE_SSL', false),
},
},
});Activer GraphQL
L’API GraphQL s’installe via le plugin officiel :
npm install @strapi/plugin-graphql// config/plugins.js
module.exports = ({ env }) => ({
graphql: {
enabled: true,
config: {
endpoint: '/graphql',
shadowCRUD: true,
playgroundAlways: false,
depthLimit: 7,
amountLimit: 100,
},
},
});Contrairement à WordPress qui nécessite un environnement local complet (serveur web, PHP, MySQL), Strapi n’a besoin que de Node.js installé sur votre machine. Un simple npx suffit pour démarrer. Si vous travaillez aussi sur des projets WordPress en parallèle et cherchez un outil pour normaliser vos environnements locaux, j’explique pourquoi j’ai remplacé Local WP par Lando.
Exemple : structurer un blog avec Strapi
Voici comment je structure un blog technique avec Strapi. Trois collections principales suffisent :
- Articles : titre, contenu (rich text), slug, date de publication, catégorie, tags, temps de lecture estimé
- Catégories : nom, description, slug
- Auteurs : nom, bio, photo de profil
Requête GraphQL en Strapi v5
En Strapi v5, le format de réponse GraphQL a été simplifié par rapport à la v4 : le wrapper data intermédiaire a été supprimé. Une requête pour récupérer les cinq derniers articles :
query {
articles(sort: ["publishedAt:desc"], pagination: { limit: 5 }) {
documentId
title
slug
publishedAt
category {
name
}
author {
name
}
}
}Consommation dans une application React
function ArticleList({ articles }) {
return (
<div className="article-list">
{articles.map(article => (
<ArticleCard
key={article.documentId}
title={article.title}
date={article.publishedAt}
category={article.category.name}
author={article.author.name}
/>
))}
</div>
);
}Strapi vs les alternatives headless
| Critère | Strapi | Contentful | Sanity | WordPress (headless) |
|---|---|---|---|---|
| Open-source | Oui | Non | Partiellement | Oui |
| Auto-hébergement | Oui | Non | Oui | Oui |
| Prix | Gratuit | Lite : 300 $/mois | Gratuit (limité) | Gratuit |
| Flexibilité | Très élevée | Moyenne | Élevée | Limitée |
| Communauté | Croissante | Grande | Grande | Très grande |
| Courbe d’apprentissage | Faible | Moyenne | Moyenne | Variable |
💡 Faites glisser le tableau vers la droite pour voir plus de colonnes
Ma préférence va à Strapi quand l’auto-hébergement est une contrainte ou que le budget ne permet pas un abonnement SaaS. Contentful et Sanity sont des alternatives solides, mais leur tarification devient significative dès que le projet grossit.
Pour un comparatif technique approfondi entre WordPress et Strapi sur les aspects API REST et GraphQL, j’ai rédigé un article dédié à ce choix.
Les limites de Strapi à anticiper
Écosystème de plugins plus restreint
L’écosystème Strapi est bien plus petit que WordPress. Pour des fonctionnalités avancées (paiement intégré, abonnements, notifications push), il faudra développer des plugins personnalisés ou intégrer des services tiers. Ce travail de développement est à budgéter explicitement dès le départ.
Migrations entre versions majeures
Strapi évolue rapidement. La migration de v4 à v5, sortie à l’automne 2024, a introduit des changements structurels importants : nouvelle API Document Service qui remplace l’Entity Service API, refactorisation du format de réponse GraphQL, passage complet à TypeScript. Maintenir une installation Strapi à jour nécessite une veille régulière.
Hébergement Node.js requis
Strapi tourne sur Node.js et nécessite un environnement serveur dédié. Il ne s’installe pas chez un hébergeur mutualisé classique. Pour un projet en production, un VPS avec au moins 2 Go de RAM est recommandé. Ce point est à prendre en compte dans le coût global du projet.
Documentation parfois en retard sur les releases
La documentation officielle est bonne, mais certains aspects avancés — surtout post-migration v5 — manquent encore d’exemples concrets. La communauté GitHub et le serveur Discord Strapi compensent en partie ces lacunes.
Quand choisir Strapi ?
Strapi est le bon choix si :
- Votre projet nécessite des modèles de données sur mesure difficiles à gérer proprement dans WordPress
- Vous livrez le même contenu sur plusieurs canaux (site web, app mobile, intégration tierce)
- Votre équipe maîtrise Node.js et JavaScript
- L’auto-hébergement est une contrainte client (données sensibles, conformité RGPD)
- Vous voulez une API propre sans devoir contourner un CMS traditionnel
Évitez Strapi si :
- Vous cherchez une solution clé en main avec un écosystème de plugins large et documenté
- Votre équipe ou votre client n’a pas les compétences Node.js pour la maintenance dans la durée
- Le projet est un site vitrine simple ou un blog standard : WordPress reste plus rapide et moins coûteux à livrer
FAQ Strapi
En résumé
Strapi v5 est un CMS headless mature, flexible et gratuit à auto-héberger. Pour les projets qui sortent du cadre d’un CMS traditionnel — applications multi-canaux, modèles de données complexes, contraintes d’hébergement spécifiques — c’est une option technique sérieuse.
Si vous avez un projet qui nécessite une architecture headless ou du développement sur mesure, prenons le temps d’en discuter.