Deployment Quickstart¶
Reference Docker deployment for the full Opencomplai platform.
Warning
Never commit your .env file. It contains database credentials.
Prerequisites¶
- Docker 24+
- Docker Compose v2
- 4 GB RAM
- 10 GB free disk
Clone and configure¶
Edit infra/compose/.env — at minimum you must set POSTGRES_PASSWORD or the stack will refuse to start:
See Configuration for the full env-var reference.
Start the stack¶
Database migrations¶
evidence-vault runs its Alembic migrations automatically at container boot, before it starts serving traffic — the container's entrypoint runs alembic upgrade head against DATABASE_URL and refuses to start (non-zero exit, container stays unhealthy) if that fails, rather than serving requests against an unmigrated database. docker compose up needs no separate migration step.
To skip this (e.g. you run migrations yourself as a separate step), set EVIDENCE_VAULT_SKIP_MIGRATIONS=1 in infra/compose/.env for the evidence-vault service. To run migrations manually instead, see infra/migrations/README.md:
cd services/evidence-vault
DATABASE_URL=postgresql://<user>:<password>@localhost:5432/<db> alembic upgrade head
Verify all services are healthy¶
Service ports (default)¶
| Service | Port | Description |
|---|---|---|
| gateway-api | 8080 | Main entry point — all external traffic |
| risk-engine | 8001 | Risk classification (internal only) |
| evidence-vault | 8002 | Append-only Merkle ledger + CAS (internal only) |
| doc-generator | 8003 | Annex IV dossier generator (internal only) |
| egress-proxy | 8004 | Allowlisted outbound enforcer (internal only) |
| prometheus | 9090 | Metrics scraper (host-accessible) |
| grafana | 3001 | Operator dashboards (host-accessible) |
Run a compliance check against the stack¶
Stop the stack¶
Air-gap mode¶
Set EGRESS_ALLOWED_DESTINATIONS= (empty) in infra/compose/.env to disable all outbound traffic. All compliance checks run fully locally. See Air-gap.