Documentation

CapRover

Deploy from GitHub with the generated CapRover workflow.

Choose CapRover

Select CapRover under Hosting when generating a project. Your download includes .github/workflows/deploy.yml, configured for the app name derived from your project slug.

The workflow builds a Docker image, publishes it to GitHub Container Registry, and deploys it to CapRover on pushes to main. Run the checks in your generated AGENTS.md before pushing: the deployment workflow does not run tests.

Set up deployment

  1. Create a CapRover app matching your project slug. Enable its App Token under Deployment.
  2. Add your domain, enable HTTPS, and force HTTPS.
  3. Add the GitHub repository secrets CAPROVER_SERVER (your captain URL) and APP_TOKEN (the app token).
  4. Give CapRover pull access to GitHub Container Registry if your image package is private.
  5. Configure DATABASE_URL and SITE_URL in the app's runtime environment. Set SITE_URL to your public HTTPS origin. Add your Sentry or PostHog configuration if enabled.

Optional worker app

Every generated project runs background jobs inside the web app by default. The generated workflow can also deploy the same image to a second CapRover app that only runs jobs: create an app named after your slug with a -worker suffix, give it the web app's environment plus JOBS_WORKER=only, and add its app token as the WORKER_APP_TOKEN repository secret. The workflow deploys the worker whenever that secret exists; the project's own CapRover guide walks through it and explains when to switch the web app to JOBS_WORKER=false.

Verify your release

Set the GitHub repository variable PRODUCTION_URL to your public origin. This enables the workflow's rollout check: /healthz must succeed and the x-deployment-revision header must match the pushed commit SHA.

Push your code to main and inspect the workflow result. Confirm the deployed app responds on your domain. Keep the generated README and workflow comments as the reference for your project's deployment setup.