Skip to main content

Docker Compose Deployment

This guide walks through deploying Corbulo using Docker Compose. This is the recommended approach for small teams (under 50 developers) or evaluation environments.

Prerequisites

  • Linux server (Ubuntu 22.04+ recommended)
  • Docker 24.x+ with Docker Compose v2
  • A registered GitHub App (see GitHub Integration)
  • A Clerk account for authentication
  • Access to an OpenAI-compatible AI model API

Quick Start

1

Get deployment files

Download the Corbulo deployment package, which includes docker-compose.yml, .env.example, and supporting configuration files.
2

Configure environment

Copy the example environment file and fill in your values:
Edit .env and set all required variables. See the environment variables section below for the full list.
3

Start services

This starts Corbulo along with bundled infrastructure services (PostgreSQL, Redis, FalkorDB, Temporal). If you are using external managed services, remove the corresponding entries from docker-compose.yml and update the connection strings in your .env file.
4

Run database migrations

5

Verify the deployment

A successful response confirms the API server is running and connected to all infrastructure services.

Environment Variables

These are the key variables you must configure. For the complete list, see the Configuration Reference.

Required

AI Model Configuration

At minimum, configure the OpenAI large model slot. See Configuration Reference for all 4 slots.

Docker Compose File

Below is a reference docker-compose.yml with all services. Adjust as needed — if you use managed PostgreSQL or Redis, remove those services and update connection strings.
The worker service uses the same image as the api service with a different entrypoint. Workers process background tasks including code analysis, health assessments, and PR analysis.

Scaling

Adding Workers

The analysis workers handle the compute-intensive tasks. To process more repositories or PRs concurrently, add more worker replicas:

Resource Allocation

For a team of 20-30 developers with 10-20 repositories:

TLS Configuration

For production deployments, terminate TLS in front of Corbulo using a reverse proxy such as Nginx, Caddy, or Traefik. Example with Caddy:
Set FRONTEND_URL and BACKEND_URL to the public HTTPS URLs, and update CORS_ORIGINS accordingly.

Operations

Health Checks

Logs

Upgrades

Backups

Back up the PostgreSQL database regularly. The other services (Redis, FalkorDB) contain derived data that can be rebuilt from a fresh analysis.

Troubleshooting

Check the logs for missing environment variables:
The API server will not start if any required variable is missing. The error message will indicate which variable is unset.
Verify that PostgreSQL is running and the connection string is correct:
If using an external database, confirm that the DATABASE_URL is reachable from within the Docker network.
Verify the worker is running and connected to Temporal:
Check the Temporal UI at http://localhost:8233 to see whether workflows are queued, running, or failing.
Verify that your server is reachable from the internet on port 443 (or whichever port you expose). GitHub must be able to reach your webhook endpoint.Check webhook delivery status in your GitHub App settings under Advanced > Recent Deliveries.
Scale the worker service to add more processing capacity:
Also confirm that the AI model API is responsive. Slow model responses are the most common cause of slow analysis.