Passer de la phase de développement à la production avec Supabase nécessite une préparation rigoureuse. Ce guide couvre la checklist complète pour déployer en production en toute confiance : sécurité, performances, monitoring et CI/CD.
Pour les fondations, consultez notre guide complet Supabase. Pour les migrations de schéma, voir Supabase Migrations. Pour sécuriser les données, voir Supabase RLS. Pour déployer les Edge Functions, voir Edge Functions Supabase. Pour la CLI de déploiement, voir Supabase CLI. Pour le pricing en production, voir Supabase Pricing.
Checklist Pré-Production
✅ Sécurité
- RLS activée sur toutes les tables exposées à l’API
- Clé
service_roleutilisée uniquement côté serveur - Variables d’environnement configurées correctement
- Confirmation email activée pour les nouvelles inscriptions
- Rate limiting configuré sur l’authentification
- CORS limité aux domaines autorisés
✅ Base de données
- Toutes les migrations appliquées et testées
- Index créés sur les colonnes fréquemment utilisées
- Backup automatique activé (quotidien minimum)
- Connection pooling configuré (PgBouncer)
✅ Performance
- Plan tarifaire adapté (Pro minimum recommandé)
- Edge Functions déployées dans la bonne région
- Images optimisées avec les transformations Storage
- Cache-Control configuré sur les buckets publics
Choisir le Bon Plan Supabase
| Plan | Prix | Limites | Usage recommandé |
|---|---|---|---|
| Free | 0€/mois | 500 MB DB, 2 projets actifs | Dev, prototypes, MVP |
| Pro | 25$/mois | 8 GB DB, backups quotidiens | Startups, apps en prod |
| Team | 599$/mois | Ressources dédiées, SOC2 | Entreprises, scale-ups |
⚠️ Les projets Free sont mis en pause après 1 semaine d’inactivité. Passez au plan Pro pour la production.
Configuration des Environnements
# Projets Supabase séparés
- mon-app-dev → Développement local + tests
- mon-app-staging → Tests d'intégration, pre-prod
- mon-app-prod → Production (accès limité)
CI/CD avec GitHub Actions
# .github/workflows/deploy.yml
name: Deploy to Production
on:
push:
branches: [main]
jobs:
migrate-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: supabase/setup-cli@v1
with:
version: latest
- name: Lint SQL migrations
run: supabase db lint
- name: Apply migrations (staging)
run: supabase db push --project-ref ${{ secrets.STAGING_PROJECT_REF }}
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
- name: Run E2E tests
run: npm run test:e2e
- name: Apply migrations (production)
run: supabase db push --project-ref ${{ secrets.PROD_PROJECT_REF }}
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
- name: Deploy Edge Functions
run: supabase functions deploy --project-ref ${{ secrets.PROD_PROJECT_REF }}
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
Connection Pooling avec PgBouncer
// Port 5432 = connexion directe (serveurs stables)
// Port 6543 = PgBouncer (fonctions serverless, Edge Functions)
// Connection string pour les migrations (connexion directe)
DATABASE_URL=postgresql://postgres:[password]@db.[ref].supabase.co:5432/postgres
// Connection string pour l'app (via pooler)
DATABASE_URL=postgresql://postgres:[password]@db.[ref].supabase.co:6543/postgres?pgbouncer=true
Monitoring et Alertes
-- Analyser les requêtes lentes
SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
WHERE mean_exec_time > 100 -- Plus de 100ms
ORDER BY mean_exec_time DESC
LIMIT 20;
-- Vérifier les index manquants
SELECT schemaname, tablename, indexname, idx_scan
FROM pg_stat_user_indexes
ORDER BY idx_scan ASC;
-- Vacuum et analyze pour maintenir les performances
VACUUM ANALYZE posts;
ANALYZE profiles;
Backup et Disaster Recovery
# Export manuel de la base de données
pg_dump \
--no-acl \
--no-owner \
-h db.[ref].supabase.co \
-U postgres \
-d postgres \
> backup-$(date +%Y%m%d).sql
👉 Articles du guide Supabase
Cet article fait partie du Guide Complet Supabase 2026. Retrouvez les autres articles :
- ✅ Supabase : Le Guide Complet 2026
- ✅ Supabase vs Firebase : Comparatif Complet 2026
- ✅ Installer Supabase en Local avec Docker
- ✅ Supabase Pricing : Quel Plan Choisir en 2026
- ✅ Architecture Supabase : Postgres, GoTrue, Realtime et Storage
- ✅ Créer et Structurer sa Base de Données Supabase
- ✅ Supabase RLS : Sécuriser ses Données avec Row Level Security
- ✅ Supabase SQL : Triggers, Fonctions et Procédures Stockées
- ✅ Supabase Migrations : Gérer l’Évolution de son Schéma
- ✅ Supabase Auth : Email, OAuth et Magic Links
- ✅ Supabase Rôles et Permissions
- ✅ Supabase JWT : Comprendre les Tokens
- ✅ Supabase avec Next.js : App Router
- ✅ Supabase avec React : Hooks et Contexte
- ✅ API REST Supabase : Requêtes sans Backend
- ✅ Supabase Edge Functions : Serverless avec Deno
- ✅ Supabase Realtime : Synchronisation en Temps Réel
- ✅ Supabase Storage : Gérer les Fichiers et Images
- ✅ Supabase Vector & pgvector : Recherche Sémantique et IA
- ✅ Supabase MCP : Connecter Claude à votre Base de Données
- ✅ Supabase CLI : Développement Local et Migrations