Getting Started

This guide will help you get VulnerabilityHub up and running on your system.

Prerequisites

System Requirements

  • OS: Linux (Ubuntu 20.04+, Debian 11+, or similar)

  • RAM: Minimum 4GB, recommended 8GB+

  • Disk: 20GB+ free space

  • CPU: 2+ cores recommended

Software Dependencies

  • Docker 20.10+

  • Docker Compose 2.0+

  • Git

Installation

1. Clone the Repository

git clone <repository-url>
cd vulnerability-scanner

2. Configure Environment Variables

Adapt the example configuration file (.env)

See Configuration for a detailed list of all available options.

3. Start the Application

Start all services using Docker Compose:

docker-compose up -d

For development, include the dev profile to also start MailHog and the local LDAP server:

docker compose --profile dev up -d

This will start: - Backend API (port 8000) - Frontend (port 80) - Database (port 3306) - ClamAV (Antivirus service)

With the dev profile, the LDAP server is available to containers as ldap://ldap:389 and to the host as ldap://localhost:1389.

Initialization

Create Admin User

Navigate to the frontend at http://localhost:80 On inital setup you will be asked to create an admin account. You can configure the credentials freely but need to stick to the password requirements documented in Changing Password

Demo Data

For development or testing, use the demo data script. This creates: - Sample users (prof_mueller, dr_schmidt, user_bib, etc.) - Contact persons & Institutions - Sample scans with vulnerabilities and historical trend data - Configured email templates - Demo LDAP users when the dev LDAP server is running

docker-compose exec backend python3 generate_demo_data.py

Local demo users and LDAP demo users use the password DemoPass123456!. The dev LDAP bind DN is cn=admin,dc=example,dc=org with password admin unless overridden in .env.

Troubleshooting

Database Connection Failed

Ensure the db container is healthy: docker-compose ps db. Check logs: docker-compose logs db.

Rate Limiting Errors

If you hit API limits (“429 Too Many Requests”), adjust RATE_LIMIT_PER_MINUTE in your .env file or restart the backend to clear in-memory limits.