Skip to content

๐Ÿ”ฌ Scanopy โ€” Container Vulnerability Scanner

Host: Homelab ยท Compose: Homelab/Docker/scanopy/compose.yaml
Stack name: scanopy


1. Overview

Scanopy is a container image vulnerability scanner. A persistent daemon scans containers on the host (via Docker socket) and reports CVEs. A central server aggregates results, stores them in PostgreSQL, and serves the web UI. The daemon uses host network mode to discover all running containers.


2. Architecture & Services

Service Image Port Role
daemon scanopy/scanopy/daemon:v0.16.2 60073 Scans Docker images on the host for vulnerabilities
server scanopy/scanopy/server:v0.16.2 60072 Web UI and API for viewing scan results
postgres postgres:17-alpine โ€” Scan result storage

3. Networking

  • daemon โ€” Uses network_mode: host so it can reach the Docker socket and all container metadata.
  • scanopy โ€” Bridge network connecting the server and PostgreSQL.
  • Server reaches the daemon via http://172.17.0.1:60073 (Docker bridge gateway).

4. Persistent Storage

Container Host Path / Volume Description
daemon daemon-config (named vol) Daemon registration and config
server ./data Server-side scan report data
postgres postgres_data (named vol) PostgreSQL vulnerability database

5. Environment Variables

Variable Service Description
SCANOPY_LOG_LEVEL Both Log verbosity (info)
SCANOPY_SERVER_PORT Both Server port (60072)
SCANOPY_DAEMON_PORT Both Daemon port (60073)
SCANOPY_SERVER_URL Daemon Where to report results
SCANOPY_DATABASE_URL Server PostgreSQL connection string
POSTGRES_PASSWORD Postgres Set via .env or defaults to password
SCANOPY_PUBLIC_URL Server Public-facing URL

6. Access & Usage

URL Description
http://localhost:60072 Scanopy web UI
# Start
docker compose -f Homelab/Docker/scanopy/compose.yaml up -d

# Check daemon health
curl -f http://localhost:60073/api/health

7. Maintenance & Backup

# Update
docker compose -f Homelab/Docker/scanopy/compose.yaml pull
docker compose -f Homelab/Docker/scanopy/compose.yaml up -d

No critical persistent data โ€” scan results can be regenerated by re-scanning.