Dockerfile.
Requirements
Before deploying, make sure the following services are available:| Service | Version | Notes |
|---|---|---|
| PostgreSQL | 16.x | Primary data store |
| Redis | 6.2 | Session storage, async tasks, caching |
| Node.js | 24.x (LTS) | Bundled in the Docker image |
| S3-compatible storage | any | Optional; required for file uploads |
Valkey (a Redis-compatible alternative) is also supported for caching and key-value workloads. The Valkey cluster runs on ports
7001, 7002, and 7003.Deployment options
Docker Compose
Build and run the full application stack with a single
docker-compose build command. The recommended method for self-hosted production deployments.Dokku
Deploy to a Dokku PaaS server. Supports Let’s Encrypt TLS, managed Postgres and Redis plugins, and tag-based deploys.
Production vs development mode
| Mode | Command | Use case |
|---|---|---|
| Development | yarn workspace @app/condo dev | Local iteration with hot reload |
| Production (build) | yarn workspace @app/condo build | Compile assets and prepare static files |
| Production (start) | yarn workspace @app/condo start | Serve the compiled application |
DOCKER_COMPOSE_START_APP_COMMAND environment variable.
Worker process
The worker is a separate process that must run alongside the web server. It handles asynchronous tasks including:- Sending notifications
- Importing and exporting data
- Background jobs powered by Bull (Redis-backed)
START_WORKER_COMMAND.
Default port assignments
Ports are assigned automatically when runningbin/prepare.js during local development. In production, configure ports explicitly via environment variables.
| Service | Default port |
|---|---|
| Condo web app (Keystone) | 4006 |
| Next.js frontend | 3000 |
| PostgreSQL master | 5432 |
| PostgreSQL replica | 5433 |
| Redis | 6379 |
| Valkey nodes | 7001, 7002, 7003 |
Next steps
Docker deployment
Step-by-step guide to building and running Condo with Docker Compose or Dokku.
Environment variables
Complete reference for all environment variables required and supported by Condo.