- Rename
.env.exampleto.env - Request an API key from the NVD
- Edit
POSTGRES_PASSWORDandNVD_API_KEYin.env
Build and start all services:
docker compose up -d --build
Without rebuilding images:
docker compose up -d
Database migrations run automatically on container startup. The web application is available on port 8000 of your host machine.
CVE, CWE, EPSS and NVD source data is kept up to date by the scheduler service, which runs nightly
at 02:00 Europe/Berlin. It skips any source that has already been synced today (or this week, for CWEs).
To trigger an immediate sync on scheduler startup, set the following in .env (default is false):
SYNC_ON_STARTUP=true
To disable the scheduler entirely (default is true):
SCHEDULER_ENABLED=false
To trigger a manual full sync (sources → CWEs → CVEs → EPSS), run the sync job on the scheduler container. It applies the same already-synced-today/this-week guards as the nightly run:
docker compose up -d scheduler
docker compose exec scheduler python -m app.jobs.sync
To fetch individual data sources, start the backend service and run the relevant job:
docker compose up -d backend
Fetch NVD sources:
docker compose exec backend python -m app.jobs.fetch_sources
Fetch CWE descriptions:
docker compose exec backend python -m app.jobs.fetch_cwes --no-images
Fetch some CVEs:
docker compose exec backend python -m app.jobs.fetch_cves --limit 100 \
--pub-start 2024-12-22T00:00:00 \
--pub-end 2025-02-22T00:00:00
Fetch all CVEs modified since the last sync:
docker compose exec backend python -m app.jobs.fetch_cves --incremental
Fetch EPSS scores:
docker compose exec backend python -m app.jobs.fetch_epss
docker compose exec postgres sh -lc \
'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c \
"SELECT id, epss_score, published_at, actively_exploited, cvss_base_score \
FROM cves ORDER BY published_at DESC LIMIT 10;"'
Or use the pgAdmin interface in the development environment.
docker compose down
Update repository and docker images:
git pull && docker compose pull
Then recreate the containers:
docker compose up -d --build --force-recreate
First uncomment and edit the pgAdmin section in .env, then run:
docker compose -f compose.yaml -f compose.dev.yaml up --watch
The pgAdmin interface is available at localhost:8888 and the API docs at localhost:8080/docs.
To stop the development environment:
docker compose -f compose.yaml -f compose.dev.yaml down
docker compose logs -ft frontend
docker compose logs -ft backend
docker compose logs -ft scheduler
docker compose logs -ft postgres
docker compose ps
