Skip to main content

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 to index.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_SECONDS
  • LOG_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_CONNECTIONS and timeouts

Email

  • SMTP_HOST, SMTP_PORT, SMTP_SECURE, optional SMTP_USER/SMTP_PASSWORD
  • SMTP_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
  • SAML: SAML_ENABLED=true plus 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:

  1. Request an access token - Contact us to receive a Docker Hub token

  2. Login to Docker Hub:

    docker login -u comperio

    Use the token provided to you when prompted for the password.

  3. 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.