Open Source · MIT License

Your Supabase. Your Server.
A Fraction of the Cost.

Supabase-compatible middleware for your own PostgreSQL.$7.59/month on Hetzner instead of $75+/project.

terminal
$ git clone https://github.com/ansoraGROUP/dupabase.git
$ cd dupabase && make up
# Hetzner CPX22 ($7.59/mo) + Dupabase = full Supabase API

Everything You Need

Zero bloat. Full Supabase compatibility. Production-ready.

Drop-in Compatible

Works with @supabase/supabase-js out of the box. Change one URL — everything works.

// just change the URL
const supabase = createClient(
'https://your-server.com',
'your-anon-key'
)
.auth.signUp().from().select().rpc()

Single Binary

One Go binary + PostgreSQL. No microservice sprawl.

1

binary

vs

15+

containers

Auth Built-in

GoTrue-compatible auth with JWT, signup, login, and token refresh.

JWTSignupToken rotation

REST API

PostgREST-compatible CRUD, filtering, ordering, and RPC.

SELECTINSERTRPC

Full Dashboard

Modern UI for managing projects, API keys, backups, and settings.

Multi-Tenant

Isolated databases and API keys per project.

project_aproject_bproject_...

S3 Backups

Scheduled backups to any S3-compatible storage.

AWSMinIOR2

Connect in 3 lines

Use the official @supabase/supabase-js client library. Just point it at your self-hosted Dupabase instance.

Auth, REST, filtering, ordering, pagination, RPC — it all works the same. Your existing code migrates with zero changes.

app.ts
import { createClient } from '@supabase/supabase-js'

// Just change the URL — everything else works the same
const supabase = createClient(
  'https://your-server.com',
  'your-anon-key'
)

// Auth — signup, login, JWT sessions
const { data: { user } } = await supabase.auth.signUp({
  email: '[email protected]',
  password: 'secure-password',
})

// REST — query your tables with full filtering
const { data: todos } = await supabase
  .from('todos')
  .select('*')
  .eq('user_id', user.id)
  .order('created_at', { ascending: false })

The Real Cost of Supabase

Supabase Pro + Medium compute = $75/project/month. A Hetzner VPS runs unlimited projects for $7.59.

Supabase Pro + Medium

$75/project/month

$25 plan + $60 compute − $10 credit. Plus usage overages.

3 environments = $225/month
250 GB egress, then $0.09/GB
8 GB storage, then $0.125/GB
Self-host = 15+ containers per env
Free plan pauses after 1 week

Dupabase + Hetzner CPX22

$7.59/month total

2 vCPU, 4 GB RAM, 80 GB NVMe. Unlimited projects.

Unlimited projects on 1 server
20 TB traffic included (80x more)
80 GB NVMe storage included
Single binary — no container sprawl
Never pauses. Always on.

At scale — Supabase is 10-40x more expensive

RAMSupabase/moHetzner/moPremium
4 GB$75$7.59~10x
8 GB$135$12.59~11x
16 GB$235$22.59~10x
32 GB$435$43.59~10x
64 GB$985~$39~25x
128 GB$1,895~$70~27x

Supabase = Pro $25 + compute − $10 credit, per project. Hetzner = flat rate, unlimited projects. 64+ GB from dedicated server auction.

Zero code changes

@supabase/supabase-js works unchanged. Just swap the URL.

3 envs, 1 server

Dev, staging, and production as multi-tenant projects.

BYO PostgreSQL

Bring your own database. We're just the API layer.

MIT licensed

Fork it, modify it, deploy it. No vendor lock-in.

API Compatibility

Works with @supabase/supabase-js out of the box.

APIStatusNotes
Auth (GoTrue)SupportedSignup, login, token refresh, user management
REST (PostgREST)SupportedFull CRUD, filtering, ordering, pagination, RPC
DatabaseSupportedDirect PostgreSQL access, connection pooling
DashboardSupportedFull project management UI
Database ImportSupportedpg_dump custom & SQL format
S3 BackupsSupportedScheduled backups with per-project selection, works with AWS S3, MinIO, R2
Admin PanelSupportedUser management, invite system, registration control (open/invite/disabled)
Row Level SecuritySupportedStandard PostgreSQL RLS policies
StoragePlannedFile/object storage
RealtimePlannedWebSocket subscriptions
Edge FunctionsPlannedServerless functions

Simple Architecture

No microservice sprawl. One server, one database, unlimited projects.

Client Application

@supabase/supabase-js

.auth.signUp().from().select().rpc()

Dupabase Server

Single Go binary

Routes

/auth/v1/*/rest/v1/*/platform/*

Middleware

CORSRate LimitPool ManagerBackup Scheduler

PostgreSQL

YOUR database (Hetzner, AWS, anywhere)

Databases

platformproject_aproject_bproject_...

Per Project

auth schemapublic schemaRLS policies

S3 Storage

AWS / MinIO / R2

Backups

Hourly / Daily / WeeklyPer-project selection

Security

AES-256-GCMRetention policy

Single Binary

One go build, one deploy

LRU Connection Pool

Auto-managed per project

AES-256-GCM

Encrypted credentials at rest

S3 Backup Scheduler

Automated backups to S3

Up and Running in 60 Seconds

Three steps. That's it.

1

Clone & point to your PostgreSQL

terminal
git clone https://github.com/ansoraGROUP/dupabase.git
cd dupabase
cp .env.example .env
# Edit .env — set DATABASE_URL to YOUR PostgreSQL
2

Start with Docker

terminal
make build && make up
3

Open the dashboard

terminal
# Open http://localhost:16733
# Create a project, grab your API key, ship
# Unlimited projects on your $7.59/mo Hetzner VPS

Open Source. Always.

MIT licensed. Free forever. Built by the community, for the community.

MIT License

Use, modify, and distribute freely. No restrictions.

Community

Join discussions, report issues, suggest features.

Contribute

PRs welcome. Check the contributing guide to get started.

Star on GitHub