Skip to guide
Deployment/Operate
Self-hosting reference

Health, updates & backups

Check the whole request path and keep your data, configuration, and release versions together.

Verify the running release

Check worker liveness and readiness, review the migration result, and verify both migration sets. In the public Compose stack the worker ports are internal; run its health checks from inside the deployment network.

Host development checks
pnpm --filter @launchstack/web db:verify
curl --fail http://localhost:8020/healthz
curl --fail http://localhost:8020/readyz

The curl examples use exposed local ports. Run db:verify with the same DATABASE_URL and source version as the deployed app.

Check the actual product path

Sign in, upload a small document, wait until it is ready, ask a source-grounded question, and open the citation. If enabled, also test a PDF export and one connection with its configured OAuth callback.

Upload stays queued
Check worker readiness, shared DATABASE_URL, and worker logs.
Conversion returns 503
Check the selected OCR provider, Docling profile, service health, credentials, and allowed fetch origins.
Chat or vectors fail
Check endpoint/key pairs, YAML routes, and the embedding model/index pairing.
Connection is not configured
Check the provider client pair, encryption key, feature flag if required, and Compose environment forwarding.
Account link points to another host
Rebuild the public site with NEXT_PUBLIC_APP_URL set to your product origin.

Metrics

Set METRICS_SCRAPE_TOKEN to enable authenticated production access to /api/metrics. Send it as a Bearer token from your scraper. In production, the route returns 503 when that token is not configured.

Updates and backups

Back up PostgreSQL, uploaded objects, mounted model configuration, and the secrets needed to decrypt stored credentials. Test restores before relying on them.

Use a matching source checkout and app/worker release. Review pending migrations before an update, run the web db:migrate command for both migration sets, and restart app and worker together. An image rollback does not undo database migrations.

For a model-only change, edit the mounted YAML and restart both processes. Keep the embedding index unchanged unless you are deliberately reindexing the corpus.

Deployment Guide — Self-Host Launchstack | Launchstack