Use the pre-built Docker images from GitHub Container Registry:
# Download production compose filewget https://raw.githubusercontent.com/insforge/insforge/main/deploy/docker-compose/docker-compose.yml# Download environment templatewget https://raw.githubusercontent.com/insforge/insforge/main/deploy/docker-compose/.env.example# Create your environment filemv .env.example .env
Edit .env and set required variables:
.env
# Admin credentials (CHANGE THESE!)ADMIN_EMAIL=admin@example.comADMIN_PASSWORD=your-secure-password# JWT secret (must be 32+ characters)JWT_SECRET=your-super-secret-jwt-key-change-this-in-production# Optional: API key (auto-generated if not set)ACCESS_API_KEY=ik_your-api-key-here-32-chars-minimum# Database configurationPOSTGRES_USER=postgresPOSTGRES_PASSWORD=postgresPOSTGRES_DB=insforge
Clone the repository and build from source:
# Clone InsForgegit clone https://github.com/insforge/insforge.gitcd insforge# Copy environment configcp .env.example .env# Edit .env with your settingsnano .env
Set the same environment variables as the production setup.
2
Start InsForge
Production
Development
# Start all services in detached modedocker compose up -d# Watch the logsdocker compose logs -f
# Use the production compose filedocker compose -f docker-compose.prod.yml up -d# Or use development mode (hot reload)docker compose up -d
Wait 1-2 minutes for all containers to be healthy:
docker compose ps
You should see:
NAME STATUSinsforge-app Up (healthy)insforge-postgres Up (healthy)insforge-postgrest Upinsforge-deno Up (healthy)insforge-vector Up (healthy)
3
Access InsForge dashboard
Open your browser and navigate to:
http://localhost:7130
Sign in with your admin credentials from .env:
Email: admin@example.com (or what you set)
Password: your-secure-password
Change the default admin password immediately! Never use change-this-password in production.
4
Connect MCP to your AI assistant
Follow the MCP Setup Guide using the self-hosted configuration:
# API Key (auto-generated if not set)ACCESS_API_KEY=ik_your-api-key-here-32-chars-minimum# Encryption key for secrets (defaults to JWT_SECRET)ENCRYPTION_KEY=# Server port (default: 7130)PORT=7130# API base URL (for external access)API_BASE_URL=http://localhost:7130VITE_API_BASE_URL=http://localhost:7130# Max file upload size in bytes (default: 50MB)MAX_FILE_SIZE=52428800
.env
# S3-compatible storage (optional)AWS_ACCESS_KEY_ID=AWS_SECRET_ACCESS_KEY=AWS_REGION=us-east-1AWS_S3_BUCKET=my-bucket# Alternative S3 providers (Wasabi, MinIO, etc.)S3_ACCESS_KEY_ID=S3_SECRET_ACCESS_KEY=S3_ENDPOINT_URL=https://s3.wasabisys.com
.env
# Google OAuthGOOGLE_CLIENT_ID=GOOGLE_CLIENT_SECRET=# GitHub OAuthGITHUB_CLIENT_ID=GITHUB_CLIENT_SECRET=# Microsoft OAuthMICROSOFT_CLIENT_ID=MICROSOFT_CLIENT_SECRET=# Discord, LinkedIn, X (Twitter), AppleDISCORD_CLIENT_ID=DISCORD_CLIENT_SECRET=LINKEDIN_CLIENT_ID=LINKEDIN_CLIENT_SECRET=X_CLIENT_ID=X_CLIENT_SECRET=APPLE_CLIENT_ID=APPLE_CLIENT_SECRET=
.env
# OpenRouter (for AI features)OPENROUTER_API_KEY=# Deno Subhosting (for cloud edge functions)DENO_SUBHOSTING_TOKEN=DENO_SUBHOSTING_ORG_ID=# Function timeout (default: 60s)WORKER_TIMEOUT_MS=60000