Skip to main content
Use this path if you want to install your prediction market manually on your own infrastructure, not through the guided /launch flow.
Manual deployment topology connecting the application to PostgreSQL, asset storage, Kuest services, and scheduled sync jobs
Every manual deployment needs the application runtime, a PostgreSQL database, one asset storage profile, and the production secrets listed in Environment Variables.

Choose a deployment target

The detailed guides retain the platform-specific commands and deployment files:

Vercel + Supabase

Fastest manual setup if you still want hosted services and low ops work.Guide: Vercel + Supabase
Good for single-server installs where simplicity matters more than scaling.Guide: Docker Compose
Managed runtime on GCP with less server maintenance.Guide: Cloud Run
Managed PaaS with GitHub-based deploys and minimal platform setup.Guide: Railway
Useful if you want app hosting on Fly and already know that platform.Guide: Fly.io
Managed PaaS on DigitalOcean with less setup than raw VPS hosting.Guide: DigitalOcean
Best for teams that want direct control over a Linux server.Guide: VPS
Best when you already run a cluster and want to manage rollout and scaling there.Guide: Kubernetes
Useful when your team provisions infrastructure through code.Guide: Terraform

Choose one storage profile

Use POSTGRES_URL for the runtime database and configure SUPABASE_URL with SUPABASE_SERVICE_ROLE_KEY for uploaded assets.If the PostgreSQL database also provides pg_cron and pg_net, pnpm db:push configures the supplied sync jobs there.
Do not configure both storage profiles. PostgreSQL is always the runtime database; Supabase Storage and S3-compatible storage are alternative locations for uploaded assets.

Production baseline

Secrets

Keep Kuest credentials, database URLs, storage keys, signer keys, and auth secrets server-side.

Canonical URL

Set SITE_URL to the final HTTPS origin and update it when the public domain changes.

Database migration

Run pnpm db:push before sending production traffic to a new release.

Health and sync

Verify the application health route and confirm scheduled sync jobs are succeeding.
External scheduler jobs for /api/sync/* are required when the database is not running the supplied pg_cron jobs. See Scheduled Jobs.