Skip to main content
Docker Compose is the simplest deployment option, suitable for development, small teams (up to ~100 users), and single-server production with up to 1-2M documents. For high availability, auto-scaling, or multi-region deployments, see AWS Deployment with Terraform.

Prerequisites

  • Docker 24.0+ with Compose v2
  • Linux (Ubuntu 22.04+), macOS, or Windows with WSL2
ResourceMinimumRecommended
CPU4 cores8+ cores
RAM8 GB16+ GB
Storage50 GB SSD200+ GB SSD

Quick Start

# Clone and setup
git clone https://github.com/getomnico/omni.git
cd omni
cp .env.example .env
Edit .env with required configuration:
# Database (generate secure password: openssl rand -base64 32)
DATABASE_HOST=postgres
DATABASE_PORT=5432
DATABASE_NAME=omni
DATABASE_USER=omni
DATABASE_PASSWORD=CHANGE_ME

# Security (generate: openssl rand -hex 16)
SESSION_SECRET=CHANGE_ME
ENCRYPTION_KEY=CHANGE_ME
ENCRYPTION_SALT=CHANGE_ME  # 16 chars

# Application
APP_URL=http://localhost:3000  # or https://omni.yourcompany.com
NODE_ENV=production

# LLM Provider (choose one)
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...

# Embeddings
EMBEDDING_PROVIDER=jina
JINA_API_KEY=...

# Redis
REDIS_HOST=redis
REDIS_PORT=6379
See Configuration Reference for all options.

Start Services

For convenience, define an alias:
alias omni-compose="docker compose -f docker/docker-compose.yml --env-file .env"
Start Omni:
omni-compose up -d
Monitor startup (2-5 min for first run):
omni-compose logs -f
omni-compose ps  # all services should show "healthy"
Access at http://localhost:3000. First user becomes admin.

Services

ServicePortPurpose
caddy80/443Reverse proxy, TLS termination
omni-web3000Frontend + API
omni-searcher3001Search service
omni-indexer3002Document indexing
omni-ai3003LLM/embedding service
connector-manager8090Connector orchestration, sync scheduling, SDK endpoints
postgres5432Database (ParadeDB)
redis6379Cache, sessions

Data & Backups

Critical volumes to back up:
VolumePriorityContent
postgres_dataCriticalAll application data
caddy_dataHighTLS certificates
# Backup database
omni-compose exec postgres pg_dump -U omni omni | gzip > backup_$(date +%Y%m%d).sql.gz

# Restore
gunzip < backup.sql.gz | omni-compose exec -T postgres psql -U omni omni

Upgrading

omni-compose pull
omni-compose up -d
# Migrations run automatically

Common Issues

ProblemSolution
Services won’t startCheck omni-compose logs for errors; verify .env values
Database connection errorsWait for postgres “ready to accept connections”; check DATABASE_* vars
Out of memoryIncrease Docker memory; set INDEXER_CONCURRENCY=2 in .env
Port conflictsCheck netstat -tulpn | grep -E ':(3000|5432|6379)'
See Troubleshooting Guide for detailed diagnostics.

Next Steps