Docker Compose

Deploy Reviewate with Docker Compose for single-server setups.

Docker Compose is the simplest way to deploy Reviewate. Ideal for small teams and single-server deployments.

1. Clone and Configure

git clone https://github.com/numberly/reviewate.git
cd reviewate
cp .env.example .env

2. Generate Security Secrets

# JWT secret — paste into JWT_SECRET_KEY
openssl rand -hex 32

# Encryption key — paste into ENCRYPTION_KEY
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Also set a strong POSTGRES_PASSWORD and update it in DATABASE_URL to match.

3. Set Up Platform Integration

Follow the guide for your platform to create the OAuth app, configure webhooks, and add credentials to .env:

Disable platforms you don't use:

GITHUB_ENABLED=false  # if GitLab only
GITLAB_ENABLED=false  # if GitHub only
GOOGLE_ENABLED=false  # if you don't need Google OAuth login

4. Configure LLM

# Option 1: Anthropic API key
ANTHROPIC_API_KEY=sk-ant-...

# Option 2: Claude subscription (for headless/container use)
# CLAUDE_CODE_OAUTH_TOKEN=...  # generate with: claude setup-token

Optional model overrides:

# REVIEWATE_REVIEW_MODEL=sonnet   # default: sonnet
# REVIEWATE_UTILITY_MODEL=haiku   # default: haiku
# REVIEWATE_BASE_URL=             # for LiteLLM proxy or custom endpoint

See Model Configuration for the two-tier model system.

5. Configure URLs

For local testing (defaults in .env.example):

DOMAIN=localhost
COOKIE_DOMAIN=localhost
FRONTEND_URL=http://localhost:3000
NUXT_PUBLIC_API_BASE_URL=http://localhost:8000
NUXT_PUBLIC_API_OPENAPI_URL=http://localhost:8000/openapi.json

For a custom domain with a reverse proxy:

DOMAIN=reviewate.example.com
COOKIE_DOMAIN=reviewate.example.com
FRONTEND_URL=https://reviewate.example.com
NUXT_PUBLIC_API_BASE_URL=https://reviewate.example.com/api
NUXT_PUBLIC_API_OPENAPI_URL=https://reviewate.example.com/api/openapi.json

Use your preferred reverse proxy (Traefik, Caddy, nginx). See the nginx/ folder in the repository for an example configuration.

6. Deploy

docker compose --profile all up -d

Access the dashboard at http://localhost:3000 (or your custom domain).

Check backend health:

curl http://localhost:8000/health
docker compose logs backend -f

Profiles

ProfileServicesWhen to use
allpostgres, redis, migrate, backend, frontendFull stack (recommended)
appmigrate, backend, frontendYou already have PostgreSQL and Redis
testpostgres, migrate, pgwebLocal development and running tests

All profiles include a Docker socket proxy that restricts container API access to only the operations Reviewate needs.

External PostgreSQL/Redis

If you already have managed databases (RDS, Cloud SQL, Elasticache, etc.), use the app profile:

# .env
DATABASE_URL=postgresql://user:pass@your-postgres:5432/reviewate
REDIS_URL=redis://your-redis:6379/0
docker compose --profile app up -d

Updating

git pull
docker compose pull
docker compose --profile all up -d

Database migrations run automatically on startup.

Next Steps