Supabase
The full self-hosted Supabase stack - Postgres, Auth, REST, Realtime, Storage, Studio - behind one Kong gateway.
One-click deploy, from $49/mo on a Miget plan.
Supabase is the open-source Firebase: Postgres at the core, with auth, auto-generated REST APIs, realtime subscriptions, file storage, and a polished Studio dashboard around it. The whole point of it being open source is that you can run it yourself - this template is the official self-hosting compose, adapted to deploy in one step.
Only the Kong gateway is public: it fronts the APIs and serves Studio behind basic auth. Postgres runs Supabase’s own image (custom extensions and roles - deliberately not a managed database). Optional components ride compose profiles: supavisor (connection pooling), edge functions, and imgproxy enable only if you turn their profiles on.
This is the largest template in the catalogue and marked experimental - validate on a dev project first. The payoff: no project pausing, no MAU pricing, no egress anxiety, and a backend that lives on your infrastructure.
Upstream project: Supabase
#what you get
- Full stack: Postgres (supabase image), GoTrue, PostgREST, Realtime, Storage, postgres-meta, Studio
- Single public entrypoint: Kong gateway with Studio behind basic auth
- Optional profiles: supavisor pooler, edge functions, imgproxy
- The same supabase-js client your frontend already uses
- No MAU caps, no project pausing, no per-GB egress pricing
- 20 GB Postgres volume; all state on your disks
#topology
| Service | Role | Public |
|---|---|---|
| kong | API gateway + Studio entrypoint (:5000) | yes (dashboard behind basic auth) |
| db | Postgres (supabase image, extensions + roles) | no |
| auth / rest / realtime / storage / meta / studio | Supabase services | no |
| supavisor / functions / imgproxy | optional, via compose profiles | no |
#miget sizing
// this stack needs
8 GiB RAM · 20 GB disk · 8 services
Core stack (no optional profiles) totals ~6.5 GiB. Enabling supavisor + functions + imgproxy adds ~2.5 GiB - size for 16 GiB if you want everything on.
Hobby - recommended fit
$49/mo
4 vCPU · 8 GiB · 160 GiB disk
Headroom for your own apps: 16 GiB at $97/mo
Professional - production
$85/mo
4 vCPU · 8 GiB · 50 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Supabase on Miget ★ | 8 GiB plan | $49 | this whole stack, flat - no usage meters, and room left for your own apps |
| Supabase Cloud | Pro | ~$25 | per org + metered compute/egress/storage/MAUs past included quotas |
Hosted Pro is excellent value at small scale - self-hosting wins on data ownership and once the meters (egress, MAU, compute) start running.
#vs. other PaaS
Estimated monthly cost of running this exact stack (8 GiB RAM, 20 GB disk, 8 containers) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $49 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$400 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| Render | ~$105 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| DO App Platform | ~$101 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Railway | ~$83 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$50 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
supabase -
Set the required variables:
POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, core secrets (see template README for generation)DASHBOARD_USERNAME / DASHBOARD_PASSWORD, Studio basic auth at the Kong gateway
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/supabase
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
Why self-host Supabase instead of using supabase.com?
Control and cost shape: Supabase Cloud Pro is $25/month plus metered compute, egress, storage, and MAUs. Self-hosted has none of those meters - a flat plan, no project pausing, and data that never leaves your infrastructure. The trade: you operate it (updates, backups) yourself.
Does supabase-js work against a self-hosted instance?
Yes - point createClient at your Kong gateway URL with the ANON_KEY you generated. Auth, PostgREST queries, realtime channels, and storage all flow through the same gateway, exactly like the hosted product.
What is different from the official Supabase self-hosting guide?
Nothing structural - this is the official compose, adapted to the platform: Kong as the single public service, everything else private, profile-gated optional components, and platform overrides for RAM and volumes so it deploys in one step.
Why is this template marked experimental?
It is the biggest stack in the catalogue (8-11 services) and Supabase evolves its self-hosting compose actively. It works, but validate on a dev project before trusting it with production, and expect template updates tracking upstream.
Can I use a managed Postgres with Supabase?
No - Supabase requires its own Postgres image with custom extensions and roles, so this template deliberately runs the database as a container with a 20 GB volume rather than a managed service.
Ship Supabase today
One compose stack, 8 GiB of RAM, from $49/month flat, and it runs on your laptop with the same files.