Skip to content

Deployment Compatibility Matrix

OpenCodeHub supports multiple deployment configurations. This document maps features to deployment modes.

ModeDescriptionRecommended ForStatus
Single-Node (Docker)Docker Compose on one VMSmall teams (<50 users), self-hosted✅ Production-ready
Single-Node (Bare Metal)Direct Node.js on one serverAir-gapped, minimal cloud✅ Production-ready
Multi-Node (K8s)Helm chart on KubernetesTeams of any size, HA✅ Production-ready
FeatureSingle-Node (Docker)Multi-Node (K8s)Air-Gapped
Git over SSH✅✅✅
Git over HTTPS✅✅✅
CI/CD Runners✅✅✅
Merge Queues✅✅✅
Real-time (SSE)✅✅✅
Rate Limiting (Redis)✅✅⚠️
AI Code Review✅✅⚠️
Object Storage (S3)✅✅✅
Email Notifications✅✅✅
Slack Notifications✅✅✅
Prometheus Metrics✅✅✅
OTLP Logging✅✅⚠️
Webhook Events✅✅✅
LFS (Large Files)✅✅✅
Database: PostgreSQL✅✅✅
Database: MySQL✅✅✅
Database: SQLite✅❌✅
Database: Turso/LibSQL✅✅✅
Backup & Restore✅✅✅
Horizontal Scaling❌✅✅

Legend: ✅ Supported, ⚠️ Partial/Config needed, ❌ Not supported

DriverDockerKubernetesBare MetalNotes
PostgreSQL✅✅✅Recommended for production
MySQL / MariaDB✅✅✅Supported
SQLite✅❌✅Single-node only
Turso / LibSQL✅✅✅Edge-friendly
PlanetScale⚠️⚠️⚠️Serverless branching not supported
Supabase⚠️⚠️⚠️Use PostgreSQL driver
Neon⚠️⚠️⚠️Branching/PCS not supported
AdapterDockerKubernetesAir-Gapped
Local disk✅✅✅
S3-compatible✅✅✅
Backblaze B2✅✅⚠️
RequirementSingle-NodeMulti-NodeNotes
TLS/SSL termination✅✅Proxy handles it
Internal TLS❌⚠️Planned
mTLS for runners❌⚠️Planned
Network policies (K8s)N/A✅Helm optional template
Secret encryption at rest✅✅AES-256-GCM
Audit log encryption✅✅AES-256-GCM
  • Web/API requests (stateless, Redis-backed sessions)
  • Merge queue (distributed locks via Redis)
  • Rate limiting (Redis-based)
  • CI job queue (BullMQ + Redis)
  • Cache (Redis)
  • Webhooks (stateless)
  • Git operations (NFS/shared storage required)
  • Repository git data (must be on shared FS or S3)
  • LFS objects (must be on shared FS or S3)
  • CI artifacts (must be on shared FS or S3)
  • Database (must be a networked DB, not SQLite)
  • None — fully stateless
Terminal window
DATABASE_URL=postgresql://user:pass@host:5432/db
JWT_SECRET=<32+ byte random>
WORKFLOW_SECRET_ENCRYPTION_KEY=<32+ hex chars>
SITE_URL=https://your-domain.com
Terminal window
REDIS_URL=redis://host:6379
Terminal window
STORAGE_TYPE=s3
STORAGE_ACCESS_KEY_ID=...
STORAGE_SECRET_ACCESS_KEY=...
STORAGE_REGION=us-east-1
STORAGE_BUCKET=opencodehub-storage
Terminal window
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=...
SMTP_PASS=...
EMAIL_FROM=noreply@your-domain.com
Terminal window
AI_PROVIDER=openai
OPENAI_API_KEY=sk-...
# or for local:
AI_PROVIDER=local
LOCAL_BASE_URL=http://localhost:11434
LOCAL_API_KEY=ollama-key
Terminal window
git clone https://github.com/swadhinbiswas/OpencodeHub.git
cd OpenCodeHub
cp .env.example .env
# Edit .env with your values
docker compose -f docker-compose.production.yml up -d
Terminal window
helm repo add opencodehub https://charts.opencodehub.dev
helm repo update
helm install opencodehub opencodehub/opencodehub \
--values values.yaml \
--namespace opencodehub \
--create-namespace
Terminal window
# Build image locally from Dockerfile
docker build -t opencodehub:local .
# Use local storage adapter
STORAGE_ADAPTER=local
# Use SQLite
DATABASE_URL=file:/data/opencodehub.db
DATABASE_DRIVER=sqlite