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

131 lines
5.8 KiB
Markdown

---
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é)
```yaml
# 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
- [Site officiel](https://supabase.com)
- [Documentation self-hosting](https://supabase.com/docs/guides/self-hosting)
- [Repository GitHub](https://github.com/supabase/supabase)
- [Selfh.st — Supabase](https://selfh.st/apps/?tag=Development)
- [Awesome-Supabase](https://github.com/lyqht/awesome-supabase)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-appwrite]] — BaaS open source concurrent direct
- [[app-traefik]] — Reverse-proxy HTTPS recommandé devant Supabase
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker Compose