Self-Hosted Setup

Run ZeroGTM on your own infrastructure for self-hosted lead generation and full data control. This doc covers backend, workers, and env vars at a high level.


Why Self-Host


Components

Component Role
PostgreSQL Database (Supabase uses Postgres). All app and pipeline data in ninja schema.
Supabase Auth (GoTrue), Edge Functions (Deno), Realtime. Can be self-hosted (Docker) or Supabase Cloud.
Workers Python Docker image. Polls bulk_jobs, runs scrape/clean/enrichment. Typically on a VPS (e.g. Contabo).
Mobile app Points at your Supabase URL and anon key. No hosting of the app itself required.

Docker Compose (Supabase + Workers)

The repo references a deployment where Supabase (DB, Kong, Edge Functions, Realtime) and the worker run under a single Compose setup (e.g. docker-compose.prod.yml on the server). You’ll need:

Apply migrations to the Postgres instance so the ninja schema and tables exist.


Worker Deployment

Watchtower (or your CI) can auto-pull new images and restart the worker.


Edge Functions


Migrations


Summary

Self-hosted = your Postgres + your Supabase (or compatible) stack + your worker(s). Local-first and data control mean you run the full lead enrichment and email finder pipeline on infra you own.

Getting started →
API keys →
Enrichment pipeline →
Pricing (self-host vs hosted) →
Features → · Compare →