Skip to main content

Control plane (Vercel)

VariableRequiredDescription
DATABASE_URLYesPostgreSQL connection string (via PgBouncer, port 6432)
CLERK_SECRET_KEYYesClerk server-side API key
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYYesClerk client-side key
NEXT_PUBLIC_CLERK_SIGN_IN_URLYesSign-in page path (/sign-in)
NEXT_PUBLIC_CLERK_SIGN_UP_URLYesSign-up page path (/sign-up)
VPS_AGENT_URLYesAgent base URL (https://agent.dbhost.app)
VPS_AGENT_API_KEYYesShared secret for agent authentication
CLERK_WEBHOOK_SECRETYesSvix webhook secret from Clerk dashboard
STRIPE_SECRET_KEYYesStripe API secret key
STRIPE_WEBHOOK_SECRETYesStripe webhook signing secret

Managing Vercel env vars

# Pull env vars to .env.local
vercel env pull

# Add a new variable
vercel env add VARIABLE_NAME

# List all variables
vercel env ls

VPS agent (/opt/dbhost/agent/.env)

The agent only requires three environment variables. Other settings use sensible defaults defined in config.py.
VariableRequiredDescription
API_KEYYesBearer token for API authentication (must match VPS_AGENT_API_KEY on Vercel)
POSTGRES_SUPERUSER_PASSWORDYesPostgreSQL admin password
BACKUP_DIRNoBackup storage directory (default: /var/backups/postgresql)
The agent’s config.py (Pydantic Settings) also supports these optional overrides, but they rarely need changing:
VariableDefaultDescription
POSTGRES_HOSTlocalhostPostgreSQL host
POSTGRES_PORT5432PostgreSQL port
POSTGRES_SUPERUSERpostgresPostgreSQL admin user
PGBOUNCER_CONFIG_PATH/etc/pgbouncer/pgbouncer.iniPgBouncer config file
PGBOUNCER_USERLIST_PATH/etc/pgbouncer/userlist.txtPgBouncer credentials file
PGBOUNCER_PORT6432PgBouncer listen port
CORS_ORIGINS["*"]CORS allowed origins
After changing agent environment variables, restart the service: sudo systemctl restart db-agent