Skip to guide
Deployment/Operate
Self-hosting reference

Vercel & split hosting

Host the public website and web frontend separately while running the worker and document services on durable infrastructure.

Deploy the web frontend

Use apps/web as the Next.js product project in your monorepo host. Supply the validated app environment, a reachable PostgreSQL database, storage, chat configuration, and remote document-service endpoints.

Run @launchstack/worker on a container host or VM with a long-running process. A Vercel web deployment does not run the durable ingestion worker. Use shared credentials and a reachable worker Inngest endpoint when that capability is enabled.

Deploy the public website

Create a separate Next.js project rooted at apps/landing. It needs public site and app origins, and does not need your database or provider secrets. Set both origins before building so sign-in links and metadata point to the correct hosts.

Equivalent public-site build and start commands
NEXT_PUBLIC_SITE_URL=https://home.example.com NEXT_PUBLIC_APP_URL=https://workspace.example.com pnpm --filter @launchstack/landing build
pnpm --filter @launchstack/landing start

On Vercel, set these values in the project's environment settings and redeploy. Changing a NEXT_PUBLIC_* value at runtime does not update an existing browser bundle.

Run migrations as a release step

Use the same source version and database credentials as the release. Apply migrations once in a controlled release job, then verify them. Do not start a competing migration process on every serverless request.

Release environment
pnpm --filter @launchstack/web db:migrate
pnpm --filter @launchstack/web db:verify
Deployment Guide — Self-Host Launchstack | Launchstack