Self-Hosting
Self-Hosting
OpenCap Stack is MIT licensed. Run it on your own servers, in your own cloud, with your own data. No vendor lock-in.
GitHub: github.com/Open-Cap-Stack/opencapstack
Option A — Docker (Recommended)
## 1. Clone the repo
git clone https://github.com/Open-Cap-Stack/opencapstack.git
cd opencapstack
## 2. Copy and configure environment
cp .env.example .env
## Edit .env with your values (see Environment Variables below)
## 3. Start with Docker Compose
docker compose up -d
## Backend API: http://localhost:3000/api/v1
## Swagger UI: http://localhost:3000/api-docs
## Frontend: http://localhost:5173
Option B — Node.js
## 1. Clone and install
git clone https://github.com/Open-Cap-Stack/opencapstack.git
cd opencapstack
npm install
## 2. Configure environment
cp .env.example .env
## 3. Start backend
npm run dev # nodemon, hot reload
## or
npm start # production
## 4. Start frontend (separate terminal)
cd client
npm install
npm run dev # Next.js on port 5173
Environment Variables
Required
## Primary Database — ZeroDB (AINative)
ENABLE_ZERODB=true
ZERODB_API_KEY=your-zerodb-api-key
ZERODB_BASE_URL=https://api.ainative.studio/api/v1
AINATIVE_API_TOKEN=your-ainative-token
## Server
PORT=3000
JWT_SECRET=your-256-bit-random-secret
NODE_ENV=production
Optional
## AINative SSO (enables /auth/ainative-login endpoint)
AINATIVE_API_URL=https://api.ainative.studio
## Document storage (MinIO / S3-compatible)
MINIO_ENDPOINT=your-minio-host
MINIO_PORT=9000
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key
MINIO_BUCKET=opencapstack-docs
## Frontend URL (for CORS)
NEXT_PUBLIC_API_URL=http://localhost:3000/api/v1
NEXT_PUBLIC_SITE_URL=http://localhost:5173
## Admin token generation (for server-side use only)
ADMIN_SECRET=your-admin-secret
## OAuth providers
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
ZeroDB Setup
OpenCap Stack uses ZeroDB as its primary database. Get your credentials at ainative.studio:
- Create an AINative account
- Go to ZeroDB → New Project
- Copy the
API KeyandProject ID - Set
ZERODB_API_KEYandAINATIVE_API_TOKENin your.env
ZeroDB provides vectors, tables, file storage, and graph capabilities — no additional database required.
Production Deployment
Railway
## Install Railway CLI
npm install -g @railway/cli
## Login and link project
railway login
railway link
## Deploy
railway up
Set environment variables in the Railway dashboard under Variables.
Fly.io
fly launch --name my-opencapstack
fly secrets set JWT_SECRET=... ZERODB_API_KEY=... AINATIVE_API_TOKEN=...
fly deploy
Self-Managed VPS (nginx + PM2)
## Install PM2
npm install -g pm2
## Start the backend
pm2 start npm --name "opencap-api" -- start
pm2 save
## Build and serve frontend
cd client
npm run build
pm2 start npm --name "opencap-frontend" -- start
nginx config:
server {
listen 443 ssl;
server_name api.yourcompany.com;
location /api/ {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 443 ssl;
server_name yourcompany.com;
location / {
proxy_pass http://localhost:5173;
proxy_set_header Host $host;
}
}
Pointing the MCP Server at Your Instance
{
"mcpServers": {
"opencap": {
"command": "npx",
"args": ["-y", "@opencapstack/mcp-server"],
"env": {
"OPENCAP_API_KEY": "your-api-key",
"OPENCAP_BASE_URL": "https://api.yourcompany.com/api/v1"
}
}
}
}
Health Check
curl https://your-host/api/v1/health
{
"status": "ok",
"version": "1.0.0",
"database": "connected",
"storage": "connected",
"uptime": 3600
}
License
MIT — use it, modify it, deploy it commercially. No royalties, no seat fees.
Copyright (c) 2024 Open-Cap-Stack
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software...
Full license: github.com/Open-Cap-Stack/opencapstack/blob/main/LICENSE