Supabase on Candor Deploy

Status: beta, like the rest of Candor Deploy.

If your app is built on Supabase, you can now run the whole stack on Candor instead of pointing your code at an external cloud. You get your own isolated Supabase — not a schema in someone else’s — living in the same project as your app, on the same flat-rate plan.

What you actually get

One Supabase appliance per request, all inside your project:

  • Postgres — Supabase’s own build, with their extensions installed.
  • Auth (GoTrue) — signups, logins, JWTs, the auth.users table.
  • REST (PostgREST) — the auto-generated /rest/v1 API with row-level security.
  • Realtime — websocket subscriptions to database changes.
  • Storage — file uploads with on-the-fly image transforms.

All of it answers on one HTTPS URL with a real certificate, exactly the way supabase-js expects:

https://supabase-<name>-<account>.candorhost.app

Want more? The Full stack option adds Supabase Studio (the admin dashboard, behind its own login on its own URL), edge functions, and the connection pooler.

Adding one

From the portal: in your project, add a database and choose Supabase as the engine, the same way you would pick Postgres or Redis.

From your repository: declare it in your .candorfile and it is provisioned on deploy:

services:
  api:
    root: backend
    database: supabase

Either way, Candor generates the whole credential set for you — the JWT signing secret, the anon and service_role API keys, and the database password — and stores them as your Supabase service’s environment, where secrets stay masked.

Connecting your app

Attach the Supabase to your app (portal → your app → Attach, or automatically when the .candorfile declares both). Attaching injects three environment variables into your app:

VariableWhat it is
SUPABASE_URLThe stack’s HTTPS URL
SUPABASE_ANON_KEYThe public API key — safe in browser bundles
SUPABASE_SERVICE_ROLE_KEYThe admin key — server-side only, stored masked

Then your code is just normal Supabase:

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.SUPABASE_URL,
  process.env.SUPABASE_ANON_KEY,
)

No Supabase account, no external project, no second bill.

The honest numbers

There is no separate Supabase price. On our flat plans the appliance is included: it is a real stack of services, and we account for it like one — it draws about 3 GB from your plan’s memory pool (the Postgres you size, 1 GB by default, plus roughly 2 GB for the services around it) and counts as one database against your plan’s database limit. So the Studio plan at $25/mo runs a Supabase and your app; a Solo plan’s 1 GB pool is too small for it, and we would rather tell you that here than fail you at checkout.

The Full stack option (Studio, edge functions, pooler) uses about 4.3 GB instead of 3 GB — in practice that is Org-plan territory, and the portal shows the same math before you click.

On the pay-as-you-go tier there is no special rate either: the appliance meters like anything else you run, at the standard $7 per GB-month of reserved memory. Left running around the clock that is roughly $21/mo for the core stack or $30/mo for the full stack — for comparison, 4 GB of compute alone on Supabase’s own cloud is $60/mo — and suspending the appliance stops the meter.

Your files and database live on your appliance’s own volumes, isolated per project. During the beta we recommend keeping your own periodic pg_dump of anything you cannot lose — as we build out the platform’s backup story for appliances, this page will say exactly what is covered, and until it says so, assume it is not.

Migrating from Supabase Cloud

The stack is standard self-hosted Supabase, so the usual tools work: dump your cloud database with pg_dump and restore it into your Candor appliance, then point your app’s environment at the new URL and keys. If you would like a hand, open a ticket — migrations are the kind of thing we enjoy.


Supabase® is a trademark of Supabase Inc. Candor Host is not affiliated with or endorsed by Supabase Inc. — we host the open-source Supabase platform, and support for it comes from us, not from Supabase.