IA Engineering

Supabase : le guide complet de la plateforme Postgres open source

Ce qu'est Supabase, ce qui tourne dans un projet, ce qu'il coûte, comment il se compare à Firebase et par où commencer : le point d'entrée de notre dossier Supabase, vérifié sur la documentation officielle (relevés du 30/09 au 07/10/2026).

Illustration Supabase plateforme backend open-source PostgreSQL

L’essentiel en 30 secondes

  • Supabase est une plateforme open source construite sur PostgreSQL : Auth, API REST et GraphQL, Realtime, Storage, Edge Functions et Vector autour d'une base dédiée, derrière une passerelle Envoy.
  • La sécurité repose sur les rôles Postgres et la Row Level Security, avec des grants à ajuster sur chaque table exposée.
  • Plan gratuit pour prototyper ; la production commence au plan Pro, à partir de 25 $ par mois plus le calcul par projet.
  • Cette page est le hub du dossier : architecture, démarrage, pièges, puis renvois vers chaque article détaillé.

Supabase se présente aujourd'hui comme « The Postgres Development Platform »1 : chaque projet est une base PostgreSQL dédiée, livrée avec l'authentification, une API REST et GraphQL générée depuis le schéma, le temps réel, le stockage de fichiers, des fonctions serveur et la recherche vectorielle2. Pour une entreprise, l'intérêt est de ne pas assembler cinq outils : un seul back-end, sur une base de données standard dont les données restent exportables. Le code est open source (dépôt principal sous licence Apache 2.0) et la pile peut être auto-hébergée avec Docker3. Le service hébergé a un plan gratuit ; la production commence au plan Pro, à partir de 25 $ par mois4.

Cette page est le point d'entrée de notre dossier Supabase : elle explique ce qui tourne dans un projet, ce qu'il coûte, comment démarrer, puis renvoie vers l'article détaillé de chaque sujet.

Qu'est-ce que Supabase, concrètement ?

  • Database : PostgreSQL complet, avec plus de 50 extensions préinstallées à activer selon les besoins5.
  • Auth : e-mail et mot de passe, magic link, OTP, téléphone, connexion sociale et SSO, avec des JWT reconnus par la base6.
  • API de données : REST via PostgREST et GraphQL via l'extension pg_graphql2.
  • Realtime : Broadcast, Presence et écoute des changements de la base2.
  • Storage : stockage objet compatible S3, droits d'accès par policies2.
  • Edge Functions : fonctions TypeScript exécutées sur un runtime compatible Deno2.
  • Vector : stockage et recherche d'embeddings avec pgvector.

La sécurité repose sur un principe unique : chaque requête arrive dans Postgres sous un rôle (anon, authenticated ou service_role) et la Row Level Security décide des lignes accessibles7. Le détail est dans notre guide des droits d'accès : RLS, rôles et permissions.

Quels services composent un projet ?

Un projet Supabase est une base PostgreSQL dédiée entourée de services open source qui lui parlent directement. Une passerelle API Envoy reçoit les requêtes et les route vers le bon service2. La plupart des composants sont développés ou maintenus par Supabase, les autres sont des projets open source existants : c'est un choix revendiqué, « utiliser et soutenir des outils existants plutôt que tout développer »2.

ServiceRôleLangageLicence
PostgreSQLBase de données, cœur de toutCPostgreSQL License
GoTrue (Supabase Auth)Utilisateurs, sessions, émission des JWTGoMIT
PostgRESTAPI REST générée depuis le schémaHaskellMIT
RealtimeWebSockets : Broadcast, Presence, changements de la baseElixirApache 2.0
Storage APIStockage objet compatible S3, métadonnées dans PostgresNode.js / TypeScriptApache 2.0
Edge FunctionsFonctions serveur TypeScript (Supabase Edge Runtime, compatible Deno)TypeScript / RustMIT
postgres-metaAPI d'administration de Postgres utilisée par le DashboardNode.js / TypeScriptApache 2.0
SupavisorPooler de connexions multi-tenantElixirApache 2.0
EnvoyPasserelle APIC++Apache 2.0
StudioDashboardTypeScriptApache 2.0

Source : page Architecture de la documentation2. Le dépôt du service Auth s'appelle aujourd'hui supabase/auth.

Pourquoi PostgreSQL est-il au centre ?

Supabase n'abstrait pas la base : vous y accédez avec tous les privilèges, en SQL, et les autres services s'appuient sur ses mécanismes. Les utilisateurs d'Auth vivent dans le schéma auth, les métadonnées des fichiers dans storage, et les droits de tous les services passent par les rôles Postgres et la Row Level Security29. Conséquence pratique : on ne peut pas utiliser Supabase sans PostgreSQL.

Plus de 50 extensions sont préinstallées, mais la plupart s'activent à la demande, depuis le Dashboard (Database > Extensions) ou en SQL5 :

create extension if not exists vector with schema extensions;  -- pgvector

C'est le cas de pg_graphql et de vector (pgvector) pour les embeddings. Pour la mise en pratique, voir stocker et rechercher des embeddings avec pgvector. Pour créer ses tables, voir structurer sa base Supabase.

Comment fonctionne l'API automatique ?

PostgREST lit le schéma et expose chaque table, vue et fonction des schémas exposés sous /rest/v1/. Une requête s'authentifie avec la clé API dans l'en-tête apikey (documentation de l'API) :

curl 'https://<PROJECT_REF>.supabase.co/rest/v1/articles?select=*&status=eq.published' \
  -H "apikey: <PUBLISHABLE_KEY>"

La clé identifie l'application ; si un utilisateur est connecté, son JWT fait basculer la requête sur le rôle authenticated, et la RLS filtre les lignes9. L'API GraphQL repose sur l'extension pg_graphql, qui traduit une requête GraphQL en SQL à l'intérieur de Postgres ; depuis sa version 1.6.0, l'introspection du schéma est désactivée par défaut.

Comment Realtime suit-il les changements de la base ?

Realtime est un cluster Elixir/Phoenix distribué mondialement. Il offre trois fonctions : Broadcast (messages entre clients), Presence (qui est connecté, via un magasin clé-valeur en mémoire) et Postgres Changes. Pour ces derniers, Realtime ouvre un slot de réplication logique sur votre base et lit le WAL (journal d'écriture de Postgres). Le Broadcast depuis la base passe, lui, par la table realtime.messages, partitionnée par jour et conservée 3 jours10.

const channel = supabase
  .channel('messages')
  .on('postgres_changes',
    { event: 'INSERT', schema: 'public', table: 'messages' },
    (payload) => console.log('Nouveau message :', payload.new)
  )
  .subscribe()

Détails et limites : Supabase Realtime.

Comment Storage gère-t-il les fichiers ?

Storage est un service de stockage objet compatible S3, avec API REST et envois reprenables (TUS). Les métadonnées des fichiers sont dans Postgres, ce qui permet d'écrire les droits d'accès sous forme de policies RLS (documentation Storage). Le CDN est « basique » sur le plan gratuit et « Smart CDN » sur les plans payants ; les transformations d'images (redimensionnement à la volée) ne sont pas disponibles sur le plan gratuit4. Voir Supabase Storage.

Où s'exécutent les Edge Functions ?

Sur le Supabase Edge Runtime, un runtime open source compatible Deno, et non sur Deno Deploy. Au déploiement, la CLI regroupe la fonction et ses dépendances dans un fichier ESZip, distribué sur le réseau de Supabase ; la passerelle route ensuite chaque appel vers le nœud le plus proche de l'utilisateur11. Voir les Edge Functions.

Qu'est-ce qui change en auto-hébergement ?

La même pile se déploie avec Docker Compose à partir du dépôt supabase/supabase, en figeant une version (par exemple self-hosted/v0.8.2 dans la documentation actuelle). La passerelle est Envoy par défaut, sur le port 8000, qui sert aussi le Dashboard12. Les configurations antérieures à self-hosted/v0.8.0 utilisaient Kong ; les tutoriels qui décrivent Kong comme passerelle de Supabase sont donc datés. Chaque service est conçu pour fonctionner seul, avec « rien d'autre qu'une base Postgres »2 : on peut ne déployer qu'une partie de la pile, mais c'est alors à vous d'assembler et de maintenir les briques. Le logiciel est gratuit, mais le serveur, les sauvegardes, les mises à jour et la sécurité sont à votre charge. Pour la pile locale de développement, voir le guide de la CLI Supabase.

Par où commencer dans ce dossier ?

ÉtapeArticleCe que vous y trouvez
ChoisirSupabase vs FirebaseLes différences de modèle, de coût et de dépendance
ChoisirSupabase PricingLes plans, le calcul par projet et les options payantes
InstallerSupabase CLILes commandes du développement local
ModéliserCréer et structurer sa baseTables, types, relations, index
SécuriserSupabase AuthMéthodes de connexion, JWT et sessions, intégration React
SécuriserDroits d'accès : RLS, rôles et permissionsPolicies, grants, rôles applicatifs et tests
ÉtendreEdge FunctionsCode serveur, webhooks, intégrations
ÉtendreSupabase RealtimeSynchronisation en temps réel
ÉtendreSupabase StorageFichiers et images
ÉtendreSupabase Vector et pgvectorRecherche sémantique et RAG
ÉtendreSupabase MCPConnecter Claude et d'autres LLM à la base
Se faire accompagnerIngénierie IA et développement sur mesureConcevoir, intégrer ou faire auditer un projet Supabase

Supabase ou Firebase ?

La différence historique tient au modèle de données : Firestore, la base principale de Firebase, est une base NoSQL orientée documents, alors que Supabase est construit sur une base relationnelle2. L'écart s'est réduit : Google propose désormais Firebase SQL Connect (anciennement Data Connect), une base PostgreSQL gérée via Cloud SQL8. Restent deux différences nettes : Supabase donne un accès SQL direct à toute la base et peut s'auto-héberger, là où Firebase reste un service Google. Le comparatif détaillé est dans Supabase vs Firebase.

Combien coûte Supabase ?

  • Free (0 $) : 500 Mo de base par projet, 1 Go de fichiers, 5 Go d'egress, 50 000 utilisateurs actifs par mois, deux projets actifs, pause après une semaine d'inactivité, pas de sauvegarde automatique.
  • Pro (dès 25 $/mois) : 8 Go de disque par projet, 100 Go de fichiers, 250 Go d'egress, 100 000 utilisateurs actifs, sauvegardes quotidiennes sur 7 jours, plus de pause.
  • Team (dès 599 $/mois) : SOC 2, ISO 27001, SSO pour l'équipe, sauvegardes sur 14 jours.
  • Enterprise : sur devis, avec SLA de disponibilité.

Chaque projet est en plus facturé selon sa taille de calcul (10 $ par mois pour une instance Micro, couverts par le crédit inclus dans les plans payants)4. Détails et exemples chiffrés : Supabase Pricing.

Comment démarrer un premier projet ?

npm install supabase --save-dev
npx supabase init
npx supabase start          # pile locale, Docker requis
npm install @supabase/supabase-js

La CLI s'installe dans le projet (ou globalement avec Homebrew ou Scoop) ; l'installation globale par npm n'est pas une méthode prévue (documentation de la CLI). Côté code, le client se crée avec l'URL du projet et la clé publishable :

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY!
)

const { data, error } = await supabase
  .from('articles')
  .select('id, title')
  .eq('status', 'published')

Cette requête ne renverra des lignes que si la table a la RLS activée, une policy qui autorise la lecture et les grants correspondants7.

Quels pièges éviter en 2026 ?

  • Anciennes clés : anon et service_role sont en cours de dépréciation (fin 2026) ; utilisez les clés publishable et secrètes9.
  • Session côté serveur : protégez les pages avec getClaims() via @supabase/ssr, jamais avec getSession() (documentation SSR). Voir Supabase Auth.
  • RLS sans grants : les policies ne retirent pas les privilèges accordés automatiquement aux nouvelles tables de public7.
  • E-mails : le SMTP intégré est limité et non prévu pour la production ; configurez le vôtre avant d'ouvrir les inscriptions.
  • Plan gratuit en production : pause après une semaine sans activité et aucune sauvegarde automatique4.

Pour quels projets Supabase est-il adapté ?

  • SaaS multi-clients : isolation des données par organisation avec la RLS.
  • Applications mobiles : bibliothèques clientes officielles notamment pour JavaScript, Flutter (Dart), Swift, Kotlin, Python et C# (exemples par bibliothèque).
  • Outils internes : une vraie base relationnelle derrière un outil d'administration.
  • Applications d'IA : embeddings et recherche sémantique avec pgvector, dans la même base que les données métier. Pour piloter une base depuis un assistant, voir Supabase MCP et le guide pratique de MCP avec Claude.

Supabase est moins indiqué si votre équipe ne veut pas écrire de SQL ni raisonner en policies : la sécurité d'un projet Supabase dépend directement de la qualité de ses règles RLS. Pour un projet que vous voulez confier ou faire auditer, voyez notre agence d'automatisation et d'IA.

Sources

  1. Page d'accueil Supabase (titre : The Postgres Development Platform)
  2. Architecture (documentation Supabase)
  3. Dépôt supabase/supabase, licence Apache-2.0 (GitHub)
  4. Pricing (Supabase)
  5. Postgres Extensions Overview (documentation Supabase)
  6. Auth (documentation Supabase)
  7. Row Level Security (documentation Supabase)
  8. Firebase SQL Connect (documentation Firebase)
  9. API keys : Postgres roles and Row Level Security (documentation Supabase)
  10. Realtime Architecture (documentation Supabase)
  11. Edge Functions Architecture (documentation Supabase)
  12. Self-Hosting with Docker (documentation Supabase)

Écrit par

CTO & Chief Digital Strategist chez AdSim, Liège

Georges est CTO et Chief Digital Strategist d’AdSim.

  • Campaign Manager Brand Controls Basics
  • Bid Manager Brand Controls Basics
  • AdWords Video Brand Controls Basics

Questions fréquentes

Vos questions sur Supabase

Supabase est-il vraiment gratuit ?

Le plan Free est gratuit : deux projets actifs, 500 Mo de base par projet, 50 000 utilisateurs actifs par mois. Les projets sont mis en pause après une semaine d'inactivité et n'ont pas de sauvegarde automatique, ce qui le réserve aux prototypes.

Peut-on auto-héberger Supabase ?

Oui. Supabase fournit une configuration Docker Compose officielle dans son dépôt GitHub. Le logiciel est gratuit, mais le serveur, les sauvegardes, les mises à jour et la sécurité sont alors à votre charge.

Supabase convient-il à une application en production ?

Oui, à partir du plan Pro : plus de mise en pause, sauvegardes quotidiennes et support par e-mail. Les attestations SOC 2 et ISO 27001 demandent le plan Team, et les engagements de disponibilité le plan Enterprise.

Peut-on utiliser Supabase sans PostgreSQL ?

Non. Postgres est le cœur de la plateforme : Auth, Storage et Realtime y stockent leurs données et s'appuient sur ses rôles et sa Row Level Security.

Le projet hébergé et la version auto-hébergée sont-ils identiques ?

Supabase affirme que son offre cloud est compatible avec le produit auto-hébergé et privilégie des formats standards (pg_dump, CSV) pour faciliter la migration dans les deux sens. Certaines fonctions de la plateforme (facturation, sauvegardes gérées, conformité) restent propres au service hébergé.

Commentaires

Chaque commentaire est relu avant publication, en général sous 24 h ouvrées. Les liens promotionnels ne sont pas publiés.

Aucun commentaire pour l’instant. Une question sur l’article ? Posez-la ci-dessous.

Laisser un commentaire

Jamais publié. Sert à vous prévenir d’une réponse.

Votre commentaire sera publié après relecture. Un lien au plus, pas de message promotionnel.

Point de départ

On applique cette méthode à votre compte ?

L’audit gratuit part de vos données, pas d’un exemple. Vous recevez le diagnostic sous 48 h ouvrées.

« Chez AdSim, c’est un vrai expert du digital qui lit votre demande et vous répond sous 48 h ouvrées. »

Valérie Matrige, CEO & co-fondatrice

Réponse sous 48 h ouvrées · Diagnostic 100 % gratuit · Sans engagement · Zéro revente de vos données