Skip to content

Installation Guide

OpenCodeHub allows you to host your own GitHub-like platform. You can run it via Docker (recommended for production) or Node.js (for development/custom setups).

ComponentMinimumRecommended
CPU1 vCPU2 vCPU
RAM512MB2GB
Disk10GB50GB SSD
OSLinux (Ubuntu/Debian)Linux

This is the most robust way to deploy OpenCodeHub.

Create a directory for your deployment:

Terminal window
mkdir opencodehub && cd opencodehub
mkdir -p data/postgres data/redis data/storage

Download the production compose file:

Terminal window
curl -o docker-compose.yml https://raw.githubusercontent.com/swadhinbiswas/OpencodeHub/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/swadhinbiswas/OpencodeHub/main/.env.example

Edit .env and set production values.

Terminal window
# Critical Security (Generate new keys!)
JWT_SECRET=<openssl rand -hex 32>
SESSION_SECRET=<openssl rand -hex 32>
INTERNAL_HOOK_SECRET=<openssl rand -hex 32>
# Domain Configuration
SITE_URL=https://git.yourcompany.com
PORT=3000
# Database (Using the Postgres container defined in compose)
DATABASE_URL=postgresql://opencodehub:securepassword@postgres:5432/opencodehub
# Object Storage (Highly Recommended for Production)
STORAGE_TYPE=s3
STORAGE_BUCKET=my-git-bucket
STORAGE_REGION=us-east-1
S3_ACCESS_KEY=...
S3_SECRET_KEY=...
Terminal window
docker-compose up -d

Initialize the admin user:

Terminal window
docker-compose exec app bun run scripts/seed-admin.ts

In production, you must use HTTPS. Here is a standard Nginx configuration.

server {
listen 80;
server_name git.yourcompany.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name git.yourcompany.com;
ssl_certificate /etc/letsencrypt/live/git.yourcompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.yourcompany.com/privkey.pem;
# Important for Git operations
client_max_body_size 500M;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Before going live to users:

  • Secrets Rotated: Default secrets replaced with strong random strings.
  • HTTPS Enabled: SSL certificate configured via Nginx/Caddy.
  • Rate Limiting: RATE_LIMIT_* env vars adjusted for expected load.
  • Monitoring: Grafana/Sentry configured for error tracking (Guide).

Now that you have OpenCodeHub up and running, let’s look around:

👉 Quick Start Guide