Installation
Requirements
- Docker 20.10+ and Docker Compose v2
- 2 GB RAM minimum (4 GB recommended for monitoring workloads)
- Ports: 3000 (frontend), 8090 (backend)
- Network access to your Docker hosts on port 2375 (Docker API) and 22 (SSH)
Docker Compose (Recommended)
1. Clone the repository
git clone https://github.com/ops-atlas/ops-dashboard.git
cd ops-dashboard2. Configure environment variables
cp .env.example .envGenerate secrets and set database credentials:
# Generate JWT secret and encryption key
openssl rand -base64 32 # Use output for JWT_SECRET
openssl rand -base64 32 # Use output for ENCRYPTION_KEYEdit .env with your values:
# Database
POSTGRES_DB=opsdashboard
POSTGRES_USER=opsatlas
POSTGRES_PASSWORD=<strong-password>
# Security
JWT_SECRET=<generated-base64-string>
ENCRYPTION_KEY=<generated-base64-string>
# CORS (add your domain in production)
CORS_ALLOWED_ORIGINS=http://localhost:30003. Start the stack
docker compose up -d4. Access the dashboard
Open http://localhost:3000. On first launch you will be redirected to the setup wizard to configure your environments.
TIP
Run docker compose logs -f to watch startup progress. The backend waits for PostgreSQL to pass its health check before starting.
Docker Compose Structure
The production docker-compose.yml runs three services:
services:
postgres:
image: postgres:15-alpine
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
backend:
build: ./backend
ports:
- "8090:8090"
depends_on:
postgres:
condition: service_healthy
volumes:
- backend_data:/app/data
- backups_data:/app/backups
frontend:
build: ./frontend
ports:
- "3000:80"
volumes:
postgres_data:
backend_data:
backups_data:Volumes:
| Volume | Purpose |
|---|---|
postgres_data | PostgreSQL data directory |
backend_data | Application data (SSH keys, uploads) |
backups_data | Database and volume backups |
WARNING
Back up the postgres_data volume before upgrading. While the backend handles schema migrations automatically, it is good practice to have a restore point.
Development Setup
The development compose file uses an embedded H2 database and exposes debug ports:
docker compose -f docker-compose.dev.yml up -d| Service | Port | Notes |
|---|---|---|
| Frontend | 4200 | Angular dev server with hot reload |
| Backend | 8090 | Spring Boot with H2 embedded database |
| Debug | 5005 | Java remote debug (JDWP) |
No PostgreSQL container is needed in dev mode — H2 runs in-memory.
Manual Install
If you prefer running outside Docker:
Backend
Requires Java 17 and Maven 3.8+.
cd backend
mvn clean package -DskipTests
java -jar target/ops-dashboard-*.jarThe backend starts on port 8090. Configure database connection via application.yml or environment variables (see Configuration).
Frontend
Requires Node.js 18+.
cd frontend
npm install
npm run buildThe production build outputs to dist/. Serve it with any static file server (nginx, caddy, etc.) on port 3000, proxying /api/* requests to the backend at localhost:8090.
For development with hot reload:
npm start # Starts Angular dev server on port 4200