Durabull Documentation

Render and Demo Account Pipeline

Configure a Render deployment and safely refresh a dedicated demo Redis database.

Deploy on Render

Deploy the published Durabull Docker image as a Render web service, or build from the repository using tooling/docker/Dockerfile with the repository root as the Docker build context. Follow Render's Docker deployment guide or its prebuilt image guide for the current service setup. Pin a release tag or digest for repeatable deployments.

Configure these settings on the web service:

  • Public origin: set APP_BASE_URL and VITE_PUBLIC_APP_URL to your HTTPS app origin.
  • Authentication: keep DURABULL_AUTHLESS=false and set BETTER_AUTH_SECRET.
  • Encryption: set DURABULL_REDIS_URL_ENCRYPTION_KEY before adding Redis connections.
  • Persistence: use DATABASE_URL for PostgreSQL, or persist /app/data when using PGlite.
  • Redis: supply a URL reachable from the web service, using TLS when the provider requires it.
  • Health check: use /api/health, then separately confirm login and Redis connectivity.

See Environment Variables for the full configuration and Docker Image and Compose for storage, backup, and upgrade requirements. The public repository does not provide a ready-to-deploy Render blueprint; configure your own services rather than relying on private Cloud service names.

MCP on the same service

The web service exposes MCP on the same hostname and port as the API and web UI:

https://<your-app-domain>/mcp

There is no separate MCP service or port. Set APP_BASE_URL to the public HTTPS origin so OAuth resource metadata advertises the correct /mcp URL.

Follow the MCP operations runbook after deployment. Run mcp:e2e only in staging or a disposable local environment: it registers OAuth clients and writes tokens to the database.

Optional demo refresh pipeline

tooling/scripts/seed-demo-account.ts creates realistic queues, jobs, schedulers, and Redis keys for a dedicated demo instance. It flushes the entire selected Redis database before seeding. Use an isolated, disposable database containing no production or shared application data.

To run it manually from the repository root:

DURABULL_DEMO_ACCOUNT_REDIS_CONNECTION_STRING=redis://127.0.0.1:6379 bun run docker:seed:demo

Replace the URL with the dedicated demo target. Confirm the selected host and Redis database number before running. The example uses database 0; it must be dedicated to this demo.

You can schedule the same command in a Render cron job. The script suggests a 12-hour refresh cadence, but it does not install or configure that schedule for you.

After a successful run:

  1. Check the structured seed logs for completion and errors.
  2. Inspect durabull:demo:seed-metadata and durabull:demo:last-seeded in Redis.
  3. Open Durabull with the demo connection selected.
  4. Confirm that queues, delayed jobs, and scheduled jobs appear.

A refresh repopulates data; it does not run your workers or prove that jobs can complete.