La configuration Docker auto-hébergée de Supabase, version v0.8.3 du 16 octobre 2026, démarre 11 conteneurs. L'un d'eux est PostgreSQL 17. Les dix autres sont une passerelle, la connexion des utilisateurs, une API REST, le stockage de fichiers, le redimensionnement d'images, les mises à jour en direct, les fonctions serveur, un pooler de connexions, une API d'administration de la base de données et le tableau de bord Studio. Sur un serveur x86, les 11 images représentent environ 2,15 Go à télécharger, selon notre addition des tailles x86 indiquées sur Docker Hub pour les tags d'image du fichier compose. L'image officielle de PostgreSQL 17 pèse environ 161 Mo.
La documentation de l'API de Supabase décrit deux façons d'appeler ses API : directly from the browser (two-tier architecture), or as a complement to your own API server (three-tier architecture).
Si une application web ou mobile communique avec votre base de données, ces dix services constituent le backend que vous auriez sinon à écrire. Si votre propre serveur fait l'intermédiaire, PostgreSQL est la partie qu'utilise votre application.
Ce que Supabase ajoute à PostgreSQL
Pour chaque tâche ci-dessous, la colonne du milieu indique le service Supabase qui s'en charge, d'après la page d'architecture de Supabase et son README d'auto-hébergement en v0.8.3.
| Tâche | Ce que Supabase vous apporte | Avec PostgreSQL seul |
|---|---|---|
| Inscription, connexion et jetons d'accès | Auth (GoTrue), une API basée sur JWT pour les utilisateurs et les jetons, compatible avec la sécurité au niveau des lignes | La connexion de votre framework, ou une bibliothèque ou un service d'authentification que vous ajoutez |
| Une API appelée par votre front-end | Une API REST que PostgREST génère à partir de vos tables | Des endpoints que vous écrivez dans votre backend, ou PostgREST exécuté seul |
| Des règles définissant les lignes que chaque utilisateur lit ou modifie | Des politiques de sécurité au niveau des lignes, avec lesquelles l'API REST fonctionne | La même sécurité au niveau des lignes, intégrée à PostgreSQL, ou des vérifications dans le code de votre application |
| Envoi de fichiers et redimensionnement d'images | Storage, une API de fichiers dont les autorisations sont gérées par Postgres, plus imgproxy pour les images | Un disque ou un stockage objet, plus votre propre code d'envoi et de redimensionnement |
| Mises à jour en direct dans le navigateur | Realtime, un service WebSocket qui diffuse les modifications de la base de données | LISTEN et NOTIFY atteignent les clients de la base de données ; un navigateur a besoin d'un serveur WebSocket que vous ajoutez |
| Un tableau de bord web | Studio, avec un identifiant pour le tableau de bord | psql, ou une page d'administration web comme Adminer, incluse dans le fichier compose d'exemple de l'image officielle |
| Fonctions côté serveur | Edge Functions, dans le conteneur Edge Runtime | Votre serveur d'application |
| Mutualisation des connexions | Supavisor | Un pooler que vous ajoutez si besoin |
| E-mails d'inscription et de réinitialisation du mot de passe | Votre propre serveur SMTP | Votre propre serveur SMTP |
| Sauvegardes et mises à jour | Vous gérez les deux, au rythme des versions de Supabase | Vous gérez les mises à jour et conservez vos propres dumps ailleurs que sur le serveur |
Notre choix pour un cas courant : une application Next.js, React ou mobile encore sans code serveur tire le meilleur parti de Supabase. Sans lui, tout cela serait du code à écrire avant le lancement. Une équipe qui dispose déjà d'un backend Rails, Django ou Express gagne peu aux dix services supplémentaires.
Choisissez Supabase si
Votre front-end web ou mobile communique directement avec la base de données, et vous voulez que la connexion, une API automatique, le stockage de fichiers et les mises à jour en direct fonctionnent dès le premier jour. Vous aurez dix services de plus à exécuter et à mettre à jour qu'avec PostgreSQL seul.
Choisissez PostgreSQL seul si
Votre application dispose déjà d'un backend, en Rails, Django, Laravel, Express ou équivalent, qui gère les utilisateurs, les fichiers et l'API. Vous exécuterez un seul conteneur de base de données et n'ajouterez d'autres briques qu'en cas de besoin.
Commencez avec Supabase, puis allégez-le
Le guide Docker de Supabase vous permet de retirer Realtime, Storage, imgproxy ou l'Edge Runtime du fichier compose. Gardez les briques qu'appelle votre application et supprimez le reste pour réduire les besoins du serveur.
DreamHost propose les deux sous forme de serveurs avec le logiciel préinstallé, l'hébergement VPS Supabase et l'hébergement VPS PostgreSQL, sur les mêmes plans Stack aux mêmes prix. Si vous utilisez actuellement Supabase Cloud et vous demandez si un serveur coûterait moins cher, commencez par ce que coûte Supabase Cloud à mesure que vous grandissez. Si vous hésitez entre un service PostgreSQL géré et PostgreSQL seul sur un serveur, lisez ce que coûte Postgres géré comparé à un serveur.
Ce qui a fonctionné dès le premier jour
Nous avons testé chaque tâche sur Supabase juste après l'installation, sans autre code de notre part que des scripts de test, et les sept ont fonctionné.
- Connecter un utilisateur et obtenir un jeton. Nous avons créé l'utilisateur via l'API d'administration, car la configuration par défaut n'a pas de serveur de messagerie pour les e-mails de confirmation.
- Lire et écrire dans une table via HTTP sous une politique de sécurité au niveau des lignes. L'utilisateur connecté a vu son unique ligne, et une requête sans utilisateur connecté a obtenu 0 ligne.
- Envoyer un fichier et télécharger les mêmes octets. Nous avons utilisé un bucket privé, et le fichier téléchargé était identique octet pour octet.
- Redimensionner une image. Le service imgproxy a transformé un PNG de 800x600 en une image de 200 pixels de large.
- Appeler une fonction serveur. La fonction hello fournie a répondu.
- Recevoir un événement à l'ajout d'une ligne. Un client supabase-js a reçu la nouvelle ligne 283 ms après l'insertion.
- Ouvrir un tableau de bord web. Studio a d'abord demandé ses identifiants.
Sur PostgreSQL 17 seul, nous avons effectué les deux tâches que la base de données assure elle-même. La même politique de sécurité au niveau des lignes a fonctionné en SQL, et LISTEN et NOTIFY ont transmis un événement entre deux sessions SQL. Le reste exige des logiciels en plus de la base de données : une API HTTP, la connexion, le stockage de fichiers, des fonctions serveur, une connexion navigateur pour les mises à jour en direct et un tableau de bord.
Realtime nous a piégés lors du premier essai : le client supabase-js a indiqué s'être abonné au bout de 35 ms, et la ligne insérée juste après n'est jamais arrivée. Lors du second essai, nous avons journalisé les événements système du canal : le client a signalé subscribed
à 32 ms, et le message Subscribed to PostgreSQL
de Realtime est arrivé environ 2,4 secondes plus tard. Si votre application écrit une ligne juste après l'abonnement, écoutez l'événement system du canal et attendez ce message avant d'insérer.
Ce que chacun exige de votre serveur
Supabase publie les ressources requises par sa stack. PostgreSQL ne le fait pas : nos mesures comblent ce manque. Dans le tableau, Supabase désigne la configuration auto-hébergée v0.8.3 et PostgreSQL désigne PostgreSQL 17 seul.
| Supabase | PostgreSQL | |
|---|---|---|
| Conteneurs | 11, ou 13 avec Logs & Analytics | 1 |
| Téléchargement, x86 | Environ 2,15 Go | Environ 161 Mo |
| Configuration indiquée par l'éditeur | Minimum 4 Go de RAM, 2 cœurs, 40 Go de SSD. Recommandé : 8 Go ou plus, 4 cœurs ou plus, 80 Go ou plus | Aucune publiée |
| Version de PostgreSQL | 17.6, image propre à Supabase | 17.11, dernière 17.x |
| Mémoire au repos, VM de 8 Go | Environ 960 Mio | Environ 24 Mio |
| Mémoire au repos, VM de 4 Go | Environ 1 450 Mio, les 11 conteneurs actifs, sans swap | Non testé |
| Plus gros consommateurs, VM de 8 Go | Studio 207 Mio, Realtime 184 Mio, Supavisor 164 Mio, la base de données 100 Mio | L'unique conteneur |
| CPU au repos | Environ 1,7 % | 0% |
| Images sur disque, arm64 | Environ 9,7 Go | Environ 670 Mo |
| Première requête après le démarrage | Environ 17 s, tout opérationnel à environ 22 s | Environ 2 s |
| Extensions prêtes à activer | 78, dont pgvector | 45 dans l'image Docker, sans pgvector. Sur notre serveur, ajoutez-la grâce à l'accès root complet |
| Nouvelles versions | Un instantané stable environ une fois par mois | Versions mineures 17.x, prises en charge jusqu'au 8 novembre 2029 |
Les lignes allant de la mémoire au repos aux extensions sont nos propres mesures, effectuées le 19 octobre (VM de 8 Go) et le 20 octobre 2026 (VM de 4 Go), décrites dans la section notre méthode de mesure. Les durées s'entendent avec les images déjà téléchargées. Les décomptes proviennent du fichier compose au tag self-hosted/v0.8.3 de Supabase, les tailles de téléchargement des données de tags de Docker Hub, et les exigences de la documentation de chaque éditeur, toutes consultées le 16 octobre 2026.

Logs & Analytics sont désactivés dans la configuration par défaut de Supabase pour réduire l'empreinte mémoire ; vous les activez avec un fichier de surcharge qui ajoute Logflare et Vector et augmente les besoins de la stack.
Stack 4 atteint le minimum de Supabase. Stack 8 ajoute la RAM et le disque recommandés, mais conserve 2 vCPU. Stack 16 est le plus petit plan qui atteint toutes les valeurs recommandées par Supabase, avec 4 vCPU, 16 Go de RAM et 250 Go de stockage NVMe selon la page VPS Supabase : c'est notre choix pour la production, et Stack 8 convient à une petite application ou à une copie de préproduction.
Notre essai sur 4 Go montre que la stack par défaut tient sur Stack 4 au repos. Les 11 conteneurs ont tourné sans redémarrage, et leur mémoire s'est stabilisée à un peu plus d'un tiers des 3 904 Mio de la VM. Les images occupaient environ 9,7 Go de disque, bien en deçà des 75 Go de Stack 4.
La même stack a utilisé environ moitié plus de mémoire sur la VM de 4 Go que sur celle de 8 Go. Studio, Realtime et le pooler ont augmenté de 16 à 22 %, et cinq petits services ont été multipliés par deux à sept, imgproxy passant d'environ 13 Mio à 94 Mio. Nous n'avons fait qu'un essai de chaque et ne pouvons pas expliquer cet écart : nous prévoirions donc 1 à 1,5 Go pour Supabase au repos, en dimensionnant en plus pour le trafic de votre application.
Pour PostgreSQL seul, nous placerions une base de données de production sur Stack 8, le plan que la page VPS PostgreSQL présente comme Pour les applications en production.
Stack 4, présenté comme Pour les applications légères et les projets solo,
suffit pour démarrer. Selon la page, passer de Stack 4 à Stack 32 est simple, et votre environnement vous suit. Pour dimensionner le serveur en fonction de tout ce que vous y exécuterez d'autre, consultez le plan VPS dont vous avez besoin.
Ce que PostgreSQL seul vous laisse à faire
Votre backend se charge de ces tâches, et Rails et Django en fournissent une bonne partie. Rails inclut un générateur d'authentification, Active Storage gère les envois de fichiers et les variantes d'images, et Action Cable apporte les WebSockets au navigateur. Django dispose d'un système d'authentification des utilisateurs intégré, et Channels ajoute les WebSockets. Une application Express les ajoute sous forme de bibliothèques, par exemple Socket.IO pour une connexion bidirectionnelle en direct entre le navigateur et votre serveur.
PostgreSQL couvre lui-même une partie de la liste. Ses politiques de sécurité au niveau des lignes limitent, pour chaque utilisateur, les lignes qu'une requête renvoie ou modifie, et les règles d'accès de Supabase sont ces mêmes politiques. LISTEN et NOTIFY envoient un événement à chaque session de base de données à l'écoute, ce qui permet à un worker de votre backend de réagir aux nouvelles lignes. Un navigateur n'ouvre pas de session de base de données : les mises à jour en direct dans le navigateur passent donc par votre propre serveur WebSocket, comme Action Cable, Channels ou Socket.IO. Les extensions comme pgvector et PostGIS s'installent sur notre serveur PostgreSQL grâce à l'accès root complet.
Si c'est l'API automatique qui vous manquerait, vous pouvez exécuter PostgREST seul. C'est le serveur web derrière l'API REST de Supabase, et son README le décrit ainsi : serves a fully RESTful API from any existing PostgreSQL database.
Supabase auto-hébergé au quotidien
La page d'auto-hébergement de Supabase liste ce dont vous vous chargez en l'exécutant vous-même : l'entretien du serveur, la mise à jour du système d'exploitation et des services, la maintenance de Postgres, la haute disponibilité, ainsi que les sauvegardes et la restauration.
- HTTPS. La configuration Docker de Supabase répond en HTTP simple, ce qui suffit sur une machine de test. En production, le guide du proxy de Supabase place Caddy ou Nginx avec Let’s Encrypt devant la passerelle.
- E-mail. Les paramètres Docker par défaut de Supabase activent l'inscription par e-mail avec confirmation et envoient les messages vers un conteneur qui n'existe que dans le fichier de développement de Supabase. Ajoutez votre propre serveur SMTP avant que de vrais utilisateurs s'inscrivent, sinon les e-mails de confirmation et de réinitialisation du mot de passe ne partiront pas.
- Mises à jour. Le guide Docker de Supabase indique qu'un instantané stable est publié environ une fois par mois. Son script de mise à jour fusionne les paramètres de la nouvelle version avec les vôtres. Vous téléchargez ensuite les nouvelles images et recréez les conteneurs. Faites une sauvegarde avant de l'exécuter.
- Projets. Une installation exécute un seul projet. Studio auto-hébergé ne peut pas gérer plusieurs organisations ou projets : une deuxième application nécessite donc sa propre installation.
Le guide d'auto-hébergement détaille les étapes d'installation, et le guide Docker de Supabase sert de référence pour chaque paramètre.
Notre méthode de mesure
DreamHost a fait tourner les deux piles logicielles le 19 octobre 2026 sur une VM de test locale dotée de 2 vCPU et de 7 922 Mio de mémoire : Ubuntu 24.04.4 sur arm64, sous Colima, sur un Mac à puce Apple. Nos offres tournent sur des processeurs x86 AMD EPYC : il ne s'agissait donc pas d'un serveur DreamHost. Comme la taille des images varie selon le processeur, le tableau indique aussi la taille du téléchargement en x86.
Supabase a été lancé depuis son dossier Docker v0.8.3 tel que publié, avec des secrets générés par ses propres scripts de clés. PostgreSQL a été lancé à partir du fichier compose d'exemple de Docker Hub, figé sur postgres:17.11, sans son service Adminer. Chaque valeur de mémoire est la médiane de 12 relevés docker stats, un toutes les 5 secondes, à partir de 10 minutes après le démarrage. Les images avaient été téléchargées avant que nous chronométrions les démarrages.
Le 20 octobre, nous avons de nouveau lancé Supabase sur une deuxième VM dimensionnée comme Stack 4, avec 2 vCPU, 3 904 Mio de mémoire et sans swap, avec les mêmes versions d'Ubuntu et de Docker. Elle utilisait une copie neuve du même dossier v0.8.3, de nouveaux secrets et les mêmes 12 relevés après 10 minutes. Une petite application de test sans rapport, d'environ 180 Mio, tournait aussi sur cette VM. Elle n'est comptée dans aucun des chiffres de Supabase que nous citons.
Nous avons exécuté chaque configuration une seule fois : il n'y a donc pas de dispersion à signaler. Les tests portent sur une pile logicielle au repos et sur ce qui fonctionne dès l'installation. Ils ne couvrent ni une application sous charge ni une semaine de fonctionnement, et nous n'avons pas essayé avec Logs & Analytics activé.
FAQ : Supabase ou PostgreSQL seul
Supabase, est-ce simplement Postgres ?
Oui. Chaque projet Supabase dispose d'une base de données PostgreSQL complète, que vous pouvez utiliser avec tous les privilèges, et Auth, Storage, Realtime et Edge Functions reposent sur elle. Dans la configuration auto-hébergée, PostgreSQL est l'un des 11 conteneurs.
Puis-je commencer avec l'un et passer à l'autre plus tard ?
Oui : vos tables sont du PostgreSQL ordinaire, et la page d'architecture de Supabase indique que Supabase s'en tient à des formats standard, comme les fichiers de dump Postgres et le CSV, pour que vous puissiez migrer dans les deux sens. Supabase Auth enregistre chaque utilisateur dans son schéma Auth, et selon notre lecture, toute politique qui appelle auth.uid() devra trouver un autre moyen d'identifier l'utilisateur.
Puis-je n'exécuter qu'une partie de Supabase ?
Le guide Docker de Supabase indique que vous pouvez retirer Realtime, Storage, imgproxy ou l'Edge Runtime du fichier compose pour réduire les besoins de la pile logicielle. Ne retirez que ce que votre application n'appellera pas : chaque service a son propre bloc et ses dépendances, à restaurer si vous voulez le récupérer.
Supabase auto-hébergé fonctionne-t-il avec 4 Go de mémoire ?
Au repos, oui, d'après notre test. Sur une VM de 4 Go et 2 cœurs dimensionnée comme Stack 4, les 11 conteneurs ont démarré, aucun n'a été redémarré et Studio s'est chargé, sans utilisation du swap (le graphique ci-dessus montre la mémoire). Nous ne l'avons soumise à aucun trafic, et Supabase recommande 8 Go et 4 cœurs.
Quels sont les inconvénients de Supabase auto-hébergé ?
Avec la configuration Docker proposée par Supabase, vous exploitez et mettez à jour 11 conteneurs là où PostgreSQL n'en compte qu'un, l'ensemble de la pile logicielle met plus de temps à démarrer, et vous devez ajouter vous-même un serveur SMTP et le HTTPS. Une installation fait tourner un seul projet.
Et Neon dans tout ça ?
La page des tarifs de Neon le présente comme une plateforme Postgres hébergée de Databricks : il a donc sa place dans la même comparaison que Supabase Cloud. Pour cet aspect, consultez ce que coûte Supabase Cloud à mesure que vous grandissez.
Qui vous aide quand quelque chose tombe en panne sur le serveur ?
Le support de DreamHost est disponible 24 h/24, 7 j/7 pour le matériel, le réseau et la connectivité. Vous gérez le système d'exploitation, les logiciels et la configuration, comme l'explique la page Supabase VPS. Pour Supabase lui-même, la page d'auto-hébergement de Supabase indique que Supabase auto-hébergé est pris en charge par la communauté.
Sources
- Supabase VPS Hosting, DreamHost, 21 oct. 2026. dreamhost.com/hosting/vps/supabase
- PostgreSQL VPS Hosting, DreamHost, 21 oct. 2026. dreamhost.com/hosting/vps/postgresql
- Self-Hosting with Docker, Supabase, 16 oct. 2026. supabase.com/docs/guides/self-hosting/docker
- Self-Hosting, Supabase, 16 oct. 2026. supabase.com/docs/guides/self-hosting
- Architecture, Supabase, 16 oct. 2026. supabase.com/docs/guides/getting-started/architecture
- Data REST API, Supabase, 16 oct. 2026. supabase.com/docs/guides/api
- Database, Supabase, 16 oct. 2026. supabase.com/docs/guides/database/overview
- Auth, Supabase, 16 oct. 2026. supabase.com/docs/guides/auth
- Users, Supabase, 21 oct. 2026. supabase.com/docs/guides/auth/users
- Row Level Security, Supabase, 16 oct. 2026. supabase.com/docs/guides/database/postgres/row-level-security
- Update your self-hosted deployment, Supabase, 16 oct. 2026. supabase.com/docs/guides/self-hosting/updating
- Self-hosted proxy with HTTPS, Supabase, 16 oct. 2026. supabase.com/docs/guides/self-hosting/self-hosted-proxy-https
- Migrate from Postgres to Supabase, Supabase, 16 oct. 2026. supabase.com/docs/guides/platform/migrating-to-supabase/postgres
- Self-hosted Supabase with Docker: README, CHANGELOG, compose file and versions (tag self-hosted/v0.8.3), Supabase on GitHub, 16 oct. 2026. github.com/supabase/supabase/tree/self-hosted/v0.8.3/docker
- postgres (Docker Official Image), Docker Hub, 16 oct. 2026. hub.docker.com/_/postgres
- Versioning Policy, PostgreSQL Global Development Group, 16 oct. 2026. postgresql.org/support/versioning
- Row Security Policies (PostgreSQL 17 documentation), PostgreSQL Global Development Group, 16 oct. 2026. postgresql.org/docs/17/ddl-rowsecurity.html
- NOTIFY (PostgreSQL 17 documentation), PostgreSQL Global Development Group, 16 oct. 2026. postgresql.org/docs/17/sql-notify.html
- PostgREST README, PostgREST on GitHub, 21 oct. 2026. github.com/PostgREST/postgrest
- Neon pricing, Neon, 16 oct. 2026. neon.com/pricing
- Securing Rails Applications (authentication generator), Ruby on Rails Guides, 20 oct. 2026. guides.rubyonrails.org/security.html
- Active Storage Overview, Ruby on Rails Guides, 20 oct. 2026. guides.rubyonrails.org/active_storage_overview.html
- Action Cable Overview, Ruby on Rails Guides, 20 oct. 2026. guides.rubyonrails.org/action_cable_overview.html
- User authentication in Django, Django, 20 oct. 2026. docs.djangoproject.com/fr/5.2/topics/auth
- Django Channels, Django Channels, 20 oct. 2026. channels.readthedocs.io/en/latest
- Socket.IO introduction, Socket.IO, 20 oct. 2026. socket.io/fr/docs/v4
- Supabase images (tag data), Docker Hub, 16 oct. 2026. hub.docker.com/u/supabase