This guide provides detailed instructions for installing and setting up OMNI-GRC on your system.
| Software | Minimum Version | Purpose |
|---|---|---|
| Node.js | 18.x or higher | Runtime environment |
| PostgreSQL | 14.x or higher | Database |
| Redis | 6.x or higher (optional) | Background jobs queue |
| Git | 2.x or higher | Source code management |
| Software | Purpose |
|---|---|
| Docker | Containerized deployment |
| Nginx | Reverse proxy (production) |
| PM2 | Process management (production) |
On Ubuntu/Debian:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
On macOS:
brew install node@20
On Windows: Download and install from nodejs.org
On Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql
On macOS:
brew install postgresql@14
brew services start postgresql@14
On Windows: Download and install from postgresql.org
On Ubuntu/Debian:
sudo apt-get install -y redis-server
sudo systemctl start redis
sudo systemctl enable redis
On macOS:
brew install redis
brew services start redis
On Windows: Download from redis.io/download
git clone https://github.com/matx104/OMNI-GRC.git
cd OMNI-GRC
npm install
This will install all required Node.js packages including:
Create .env.local file in the project root:
cp .env.example .env.local # If .env.example exists
# or create manually
nano .env.local
Add the following configuration:
# Database (PostgreSQL)
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/omni_grc"
# Authentication (NextAuth.js)
# Generate secret with: openssl rand -base64 32
NEXTAUTH_SECRET="your-generated-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"
# OAuth Providers (optional)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
# AI Providers (optional - configure at least one)
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
OLLAMA_BASE_URL=http://localhost:11434
# Background Jobs (optional)
REDIS_URL="redis://localhost:6379"
# Application Settings
NODE_ENV=development
PORT=3000
Create Database:
sudo -u postgres psql
CREATE DATABASE omni_grc;
CREATE USER omni_grc_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE omni_grc TO omni_grc_user;
\q
Generate Prisma Client:
npx prisma generate
Run Migrations:
npx prisma migrate deploy
or for development:
npx prisma migrate dev
Seed the Database:
npx prisma db seed
This will create:
Development Mode:
npm run dev
The application will be available at http://localhost:3000
Production Mode:
npm run build
npm run start
Step 1: Create docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:14
environment:
POSTGRES_DB: omni_grc
POSTGRES_USER: omni_grc_user
POSTGRES_PASSWORD: changeme
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7
ports:
- "6379:6379"
omni-grc:
build: .
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://omni_grc_user:changeme@postgres:5432/omni_grc
REDIS_URL: redis://redis:6379
NEXTAUTH_SECRET: change-this-to-a-random-string
NEXTAUTH_URL: http://localhost:3000
depends_on:
- postgres
- redis
volumes:
- ./uploads:/app/uploads
volumes:
postgres_data:
Step 2: Build and Start
docker-compose up -d
Step 3: Run Migrations and Seed
docker-compose exec omni-grc npx prisma migrate deploy
docker-compose exec omni-grc npx prisma db seed
# Install dependencies
sudo apt-get update
sudo apt-get install -y nodejs postgresql nginx
# Clone and setup
git clone https://github.com/matx104/OMNI-GRC.git
cd OMNI-GRC
npm install
npm run build
# Configure Nginx reverse proxy
sudo nano /etc/nginx/sites-available/omni-grc
# Start with PM2
npm install -g pm2
pm2 start npm --name omni-grc -- start
pm2 save
pm2 startup
Navigate to http://localhost:3000
Default Credentials:
admin@example.comChangeMe123!⚠️ You will be required to change the password on first login.
Go to Settings → General:
Go to Settings → Users:
Go to Settings → Integrations:
Install security scanning tools you want to use:
# Container scanning
docker pull aquasec/trivy
# Cloud security
pip install prowler
pip install ScoutSuite
# Secret scanning
brew install gitleaks # macOS
# or
go install github.com/gitleaks/gitleaks/v8@latest
# SAST
pip install semgrep
pip install bandit
# Check if application is running
curl http://localhost:3000/api/health
# Expected response:
# {"status":"healthy","database":"connected","timestamp":"..."}
npm run cli -- --version
npm run cli -- dashboard
npm run cli -- scan scanners
npm run tui
Use arrow keys to navigate, q to quit.
npx prisma studio
This opens a web interface to browse the database at http://localhost:5555
Solution:
# Check PostgreSQL is running
sudo systemctl status postgresql
# Verify connection
psql -U postgres -h localhost
Solution:
# Find process using port 3000
lsof -i :3000
# or
netstat -ano | findstr :3000 # Windows
# Kill the process or change port
PORT=3001 npm run dev
Solution:
rm -rf src/generated/prisma
npx prisma generate
Solution:
Ensure NEXTAUTH_SECRET and NEXTAUTH_URL are set in .env.local:
# Generate a new secret
openssl rand -base64 32
Solution:
Redis is optional. If not using background jobs, comment out REDIS_URL in .env.local.
Solution:
# Increase Node.js memory limit
NODE_OPTIONS=--max-old-space-size=4096 npm run build
/docs folderApplication Logs:
# Development
Check terminal output from npm run dev
# Production with PM2
pm2 logs omni-grc
Database Logs:
# PostgreSQL logs (Ubuntu)
sudo tail -f /var/log/postgresql/postgresql-14-main.log
Next.js Logs:
# Check .next folder
ls -la .next/
cat .next/build-manifest.json
After successful installation:
Congratulations! 🎉 OMNI-GRC is now installed and ready to use.