Deployment
Build, migrate, run workers, and prepare a production Convenience install.
A typical release builds, applies migrations against a backed-up database, then starts:
npm run build
npm run migrate
npm startrailway.toml does the same on Railway: it builds with keystone build --no-ui && next build and starts with npm run migrate && next start. railway.outbox.json and railway.alerts.json describe separate services for the two workers. The README also has a Vercel deploy button that asks for DATABASE_URL and SESSION_SECRET. You still need to provide the S3 values and run migrations yourself.
Production checklist:
- set
NODE_ENV=productionand all five S3 values; - use a fixed, long
SESSION_SECRET; - put the app behind a proxy that sets
HostandX-Forwarded-*headers to fixed values, because the app builds its own base URL from them; - keep
PUBLIC_SIGNUPS_ALLOWEDoff unless you want open dashboard sign-up; - run the outbox and alert workers if you use those features, each with its own machine API key;
- replace the starter records created by onboarding with your own catalog;
- test backups and restores.