Skip to content

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)

1. Clone the repository

bash
git clone https://github.com/ops-atlas/ops-dashboard.git
cd ops-dashboard

2. Configure environment variables

bash
cp .env.example .env

Generate secrets and set database credentials:

bash
# Generate JWT secret and encryption key
openssl rand -base64 32  # Use output for JWT_SECRET
openssl rand -base64 32  # Use output for ENCRYPTION_KEY

Edit .env with your values:

env
# 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:3000

3. Start the stack

bash
docker compose up -d

4. 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:

yaml
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:

VolumePurpose
postgres_dataPostgreSQL data directory
backend_dataApplication data (SSH keys, uploads)
backups_dataDatabase 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:

bash
docker compose -f docker-compose.dev.yml up -d
ServicePortNotes
Frontend4200Angular dev server with hot reload
Backend8090Spring Boot with H2 embedded database
Debug5005Java 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+.

bash
cd backend
mvn clean package -DskipTests
java -jar target/ops-dashboard-*.jar

The backend starts on port 8090. Configure database connection via application.yml or environment variables (see Configuration).

Frontend

Requires Node.js 18+.

bash
cd frontend
npm install
npm run build

The 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:

bash
npm start   # Starts Angular dev server on port 4200

Released under the MIT License.