Files
wiki/Catalogue-Self-Hosted/apps/app-supabase.md
T
2026-06-09 18:40:21 +02:00

5.8 KiB


title: Supabase created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, baas, backend, firebase] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/supabase/supabase]

💻 Supabase

Alternative open source à Firebase — backend complet (PostgreSQL, Auth, Storage, Edge Functions, Realtime) en self-hosted.

📋 Informations Générales

Attribut Valeur
Nom Supabase
Slug supabase
Description BaaS open source (Firebase-like) construit sur PostgreSQL
Site officiel https://supabase.com
Repository https://github.com/supabase/supabase
Stars 103 725
Licence MIT (modules Enterprise sous licence commerciale)
Langage principal TypeScript / Elixir (GoTrue, Realtime)
Catégorie Development
Tags [catalogue, development, baas, backend, firebase]

📝 Description

Supabase se positionne comme « The Open Source Firebase Alternative ». Le projet encapsule un ensemble de services backend autour d'une base PostgreSQL : authentification (GoTrue), stockage objet compatible S3, fonctions edge en Deno, base temps réel via WebSocket, et un studio web pour administrer les données. Chaque service est un container Docker indépendant, ce qui rend l'auto-hébergement modulaire.

Modèle de licence hybride : le cœur (supabase/supabase, postgres-meta, postgrest, GoTrue, Realtime, Storage) est sous Apache 2.0 / MIT, mais Supabase vend des modules Enterprise Edition (EE) (log drains, SSO/SAML avancé, support prioritaire, compute dédié). Pour un self-host 100 % open source, se contenter des modules Community Edition et désactiver les briques EE. Usage gratuit en local ou sur son propre serveur ; la plateforme cloud officielle reste un service freemium.

Cas d'usage : MVP d'application mobile/web, prototypes avec auth + base + fichiers sans coder le backend, ou migration depuis Firebase pour reprendre le contrôle de ses données PostgreSQL.

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml minimal (stack officielle)
version: "3.8"
services:
  studio:
    image: supabase/studio:latest
    ports: ["3000:3000"]
    environment:
      STUDIO_PG_META_URL: http://meta:8080
    depends_on: [db, meta]

  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes: ["./data/db:/var/lib/postgresql/data"]

  meta:
    image: supabase/postgres-meta:latest
    ports: ["8080:8080"]
    environment:
      PG_META_DB_URL: postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/postgres

  auth:
    image: supabase/gotrue:v2
    environment:
      GOTRUE_JWT_SECRET: ${JWT_SECRET}
      DATABASE_URL: postgres://supabase_auth_admin:${POSTGRES_PASSWORD}@db:5432/postgres

  rest:
    image: postgrest/postgrest:latest
    environment:
      PGRST_DB_URI: postgres://authenticator:${POSTGRES_PASSWORD}@db:5432/postgres

  storage:
    image: supabase/storage-api:latest
    environment:
      DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@db:5432/postgres

  realtime:
    image: supabase/realtime:latest
    environment:
      DB_URL: postgres://supabase_realtime_admin:${POSTGRES_PASSWORD}@db:5432/postgres

⚠️ Note : la stack officielle utilise docker-compose.yml + docker.env du repo supabase/supabase (auto-hébergé). Prévoir 2 Go RAM minimum, 4 Go recommandé.

Installation manuelle

Installation manuelle déconseillée : il faut compiler GoTrue, Realtime (Elixir), Storage (Rust), PostgREST (Haskell) et gérer le provisioning PostgreSQL avec les rôles anon, authenticated, service_role. Privilégier l'image officielle.

⚙️ Configuration

  • JWT_SECRET : secret long et unique (32+ caractères) partagé entre GoTrue et PostgREST.
  • SITE_URL / API_EXTERNAL_URL : URLs publiques du Studio et de l'API (HTTPS obligatoire en prod).
  • ENABLE_SIGNUP : à false pour fermer les inscriptions si le service est exposé.
  • SMTP : à configurer obligatoirement (host, port, user, pass) pour les mails d'auth.
  • Studio : STUDIO_DEFAULT_PROJECT et clés d'admin pour le premier bootstrap.

🔗 Alternatives

  • Appwrite — BaaS open source orienté multi-langages, API REST + WebSocket, plus simple à déployer.
  • Firebase — BaaS propriétaire de Google (cloud uniquement), source d'inspiration directe de Supabase.
  • Nhost — BaaS GraphQL (Hasura + PostgreSQL + Auth + Storage), moins modulaire mais plus rapide à prendre en main.

🔒 Sécurité

  • Ne jamais exposer le port PostgreSQL (5432) sur Internet : c'est un accès root à la base.
  • Activer HTTPS (Traefik / Nginx Proxy Manager) — les JWT et refresh tokens transitent en clair sinon.
  • Service Role Key = super-admin : ne JAMAIS la mettre côté client, ni dans une variable d'environnement exposée.
  • Row Level Security (RLS) : activer systématiquement les policies RLS sur les tables sinon anon peut tout lire/écrire via PostgREST.
  • Backups : pg_dump quotidien + WAL archiving (ou barman / wal-g) ; Supabase ne fait pas de backup automatique en self-hosted.

📚 Ressources

🔗 Pages Liées