COREY

Deployment

Build and run COREY for local or self-hosted distribution.

Production Build

pnpm build
pnpm start

The build uses next build --webpack and generates Fumadocs source files before building.

One-Click Deploy

Deploy COREY on Railway:

Deploy on Railway

Docker

Build the runner image:

docker build --target runner -t corey:local .

Run the image with backend environment variables:

docker run --rm -p 4000:4000 \
  -e DATABASE_URL="postgresql://corey:corey@host.docker.internal:5432/corey?schema=public" \
  -e S3_ENDPOINT="http://host.docker.internal:9000" \
  -e S3_REGION="ap-southeast-1" \
  -e S3_ACCESS_KEY="corey" \
  -e S3_SECRET_KEY="corey-secret" \
  -e S3_BUCKET="corey-models" \
  corey:local

For a local-first deployment without server model storage, provide DATABASE_URL only. /api/health will still return status: "ok" with modelStorageAvailable: false; the viewer continues to load local IFC files from the browser, while server-backed upload/download is disabled.

Docker Compose

For the app plus local Postgres and MinIO:

docker compose --env-file .env -f docker/docker-compose.deploy.yml up --build

The app healthcheck calls /api/health.

Release Checklist

pnpm verify
docker compose --env-file .env -f docker/docker-compose.deploy.yml build app

Version tags publish GHCR images through the release workflow.