Deployment
Note: Comper is currently in private beta. To access the Docker image, you'll need to request a Docker Hub access token from us. Please contact us to get started.
Comper is fully multi-tenant: multiple boards can run on the same server instance. However, each board instance is hosted on a single server (not horizontally scalable by design). This means that while a single Comper server can host many boards, an individual board cannot be distributed across multiple servers.
Runtime Shape
- Single web server (default port 8001) serves:
- The API
- WebSockets
- The built frontend SPA from
frontend/dist(static middleware + SPA fallback toindex.html)
- Background work runs in-process using Loco workers + a Postgres-backed queue.
- Local storage path is used for runtime storage (
STORAGE_PATH, default/comper/storage). - Postgres database is required for core persistence and the background queue (
DATABASE_URL).
Configuration
Core Environment Variables
FRONTEND_URL(required; also used for OAuth redirect URLs and links)JWT_SECRET(required; JWT auth enabled, 7-day expiration configured)MAX_CPU_THREADS(0 = auto-detect)REQUEST_TIMEOUT_SECONDSLOG_FORMAT(compact/pretty/json)
Database & Queue (Postgres)
DATABASE_URL(used for both DB and queue)WORKERS(queue concurrency)- DB pool sizing via
DB_MIN_CONNECTIONS/DB_MAX_CONNECTIONSand timeouts
Email
SMTP_HOST,SMTP_PORT,SMTP_SECURE, optionalSMTP_USER/SMTP_PASSWORDSMTP_FROM
Sentry
SENTRY_DSN,SENTRY_ENVIRONMENT
Authentication Modes
Authentication is configured via feature flags:
- Password auth:
PASSWORDS_ENABLED=true - OAuth providers are enabled when their credentials are present:
- Google:
GOOGLE_OAUTH_CLIENT_ID/GOOGLE_OAUTH_CLIENT_SECRET - GitHub:
GITHUB_OAUTH_CLIENT_ID/GITHUB_OAUTH_CLIENT_SECRET - Microsoft:
MICROSOFT_OAUTH_CLIENT_ID/MICROSOFT_OAUTH_CLIENT_SECRET/MICROSOFT_OAUTH_TENANT_ID
- Google:
- SAML:
SAML_ENABLED=trueplus SAML-specific settings (SAML_IDP_METADATA_PATH,SAML_SP_ENTITY_ID,SAML_SP_ACS_URL,SAML_PROVIDER)
Why Boards Are Not Horizontally Scalable
While Comper is fully multi-tenant (multiple boards can share a server), each board instance is hosted on a single server and cannot be distributed across multiple servers. This design choice enables:
- WebSocket presence/collaboration with a single coordination point per board.
- Local filesystem storage (e.g.
STORAGE_PATH) and RocksDB cache usage (instance-local, optimized for fast access). - In-process worker execution with a single application runtime coordinating work and UI updates for each board.
This architecture is optimized for single-server deployments where multiple boards can coexist efficiently on the same instance.
Docker Image Access
The Comper Docker image is hosted on Docker Hub under comperio/comper. To access it, you'll need:
-
Request an access token - Contact us to receive a Docker Hub token
-
Login to Docker Hub:
docker login -u comperioUse the token provided to you when prompted for the password.
-
Pull the image:
docker pull comperio/comper:latest
Backend Functionality
Beyond what is exposed via the UI, the backend also:
- Parses git repositories, groups content by language, and stores computed results in a RocksDB cache for fast retrieval.