-
Notifications
You must be signed in to change notification settings - Fork 0
First Time Setup
Complete walkthrough for configuring VulnForge after installation.
- Initial Access
- Container Discovery
- Initial Scan
- Configure Settings
- Set Up Authentication
- Configure Notifications
- Understanding Results
Open your browser to:
- Local:
http://localhost:8787 - Network:
http://<server-ip>:8787 - Domain:
https://vulnforge.yourdomain.com(if using reverse proxy)
On first access, VulnForge displays a setup page requiring a bootstrap token:
- Get the token from container logs:
docker logs vulnforge | grep "SETUP TOKEN"
- Enter the token in the Setup Token field
- Create your admin credentials (username, email, password)
- Click Create Admin Account
The bootstrap token is generated once on first startup. It prevents unauthorized admin account creation on internet-exposed instances.
Check that all services are running:
docker ps
# You should see:
# - vulnforge
# - trivy
# - socket-proxy-ro (if using socket proxy)- Navigate to Containers page
- Click "Discover Containers" button
- VulnForge will scan Docker for all containers (running and stopped)
What gets discovered:
- Container name
- Image name and tag
- Image ID
- Running status
- Last seen timestamp
Excluded from discovery:
- Ephemeral scanner containers (e.g.,
docker/docker-bench-securityif present)
- Total: All containers found
- Scanned: Containers with at least one scan
- Never Scanned: Containers discovered but not yet scanned
- Navigate to Containers page
- Click "Scan All" button
- Monitor progress in Scans page
- Navigate to Containers page
- Find the container you want to scan
- Click "Scan" button next to container
Navigate to Scans page to see:
- Real-time progress via Server-Sent Events (SSE)
- Current scan status (queued, running, completed, failed)
- Scan duration
- Vulnerability counts
Each scan includes:
-
Vulnerability Scan (Trivy)
- OS packages
- Language-specific dependencies
- KEV matching (if enabled)
- CVSS scoring
-
Secret Scan (Trivy - if enabled)
- API keys
- Passwords
- Tokens
- Certificates
Note: Compliance scans (VulnForge Checker, Dive) are separate and can be run from the Compliance page.
Navigate to Settings page to configure:
- Timezone: Set your local timezone for scheduling (default: UTC)
- Log Level: Choose verbosity (DEBUG, INFO, WARNING, ERROR)
-
Scan Schedule: Cron expression for automatic scans (default:
0 2 * * *- daily at 2 AM) - Scan Timeout: Maximum time per container scan in seconds (default: 300)
- Parallel Scans: Number of concurrent scans (default: 3)
- Enable Secret Scanning: Toggle secret detection (default: enabled)
- ntfy Enabled: Enable/disable notifications
- ntfy URL: Your ntfy server URL
- ntfy Topic: Topic name for notifications
- ntfy Token: Optional authentication token
- Notify on Scan Complete: Get notified when scans finish
- Notify on Critical: Alert when critical vulnerabilities found
- Critical Threshold: Minimum critical CVEs to trigger alert (default: 1)
- High Threshold: Minimum high CVEs to trigger alert (default: 10)
- Keep Scan History: Days to retain historical scans (default: 90)
- Default Severity Filter: Initial filter on Vulnerabilities page (all, critical, high, medium, low)
- Default Show Fixable Only: Start with fixable vulnerabilities filter enabled
- Compliance Scan Enabled: Enable scheduled compliance scans
-
Compliance Scan Schedule: Cron for VulnForge Checker/Dive scans (default:
0 3 * * 0- weekly Sunday at 3 AM) - Notify on Compliance Scan: Get notified when compliance scans complete
- Notify on Failures: Alert when compliance checks fail
- KEV Checking Enabled: Match CVEs against CISA KEV catalog
- KEV Cache Hours: Hours to cache KEV data before refresh (default: 12)
- Scanner DB Max Age: Hours before forcing Trivy DB update (default: 24)
- Skip DB Update When Fresh: Skip update if DB is recent
- Allow Stale DB: Continue scanning even if DB update fails
- Stale DB Warning Hours: Hours before warning about stale database (default: 72)
By default, VulnForge has no authentication. Secure your instance:
Navigate to Settings → Authentication:
- None (default) - No authentication required
-
API Key - Require API key in
X-API-Keyheader - Basic Auth - Username/password authentication
- Authentik - SSO via Authentik forward auth
- Custom Headers - Custom header-based authentication
See Authentication for detailed setup guides.
For homelab use with reverse proxy:
# Authentik with Traefik forward auth
AUTH_PROVIDER=authentik
AUTH_AUTHENTIK_HEADER_USERNAME=X-authentik-username
AUTH_AUTHENTIK_HEADER_EMAIL=X-authentik-email- Deploy ntfy server or use ntfy.sh:
# Self-hosted ntfy
docker run -d --name ntfy \
-p 8080:80 \
-v ntfy-cache:/var/cache/ntfy \
binwiederhier/ntfy serve-
Configure in Settings:
-
ntfy URL:
http://ntfy:80orhttps://ntfy.sh -
ntfy Topic:
vulnforge(or your chosen topic) - ntfy Token: (optional for private topics)
-
ntfy URL:
-
Test notification:
- Click "Test Notification" in Settings
- Check ntfy app/web for test message
Mobile App:
- Install ntfy from App Store/Play Store
- Subscribe to your topic:
vulnforge
Web:
- Visit
https://ntfy.sh/vulnforge(or your self-hosted URL)
See Notifications for advanced configuration.
After your first scan, review the Dashboard:
- Total Containers: All discovered containers
- Total Vulnerabilities: Sum across all containers
- Fixable Vulnerabilities: CVEs with available patches
- Severity Breakdown: Critical, High, Medium, Low counts
- KEV Matches: Known Exploited Vulnerabilities
Navigate to Vulnerabilities page:
- Filter by Severity: Critical, High, Medium, Low
- Filter by Fixable: Show only patchable CVEs
- Search: Find specific CVEs or packages
- Triage Status: Mark as accepted, false_positive, or ignored
Navigate to Containers page:
- Last Scan: When container was last scanned
- Vulnerability Count: Total CVEs per container
- Status Indicators: Never scanned, scanning, complete, failed
Now that VulnForge is configured:
- Vulnerability Scanning - Learn about triage and remediation
- Compliance Monitoring - Run compliance checks and Dive
- Advanced Configuration - False positive patterns and KEV tracking
- API Reference - Integrate with automation
Check Trivy logs:
docker logs trivyCommon issues:
- Trivy DB update failed (network issue)
- Scanner timeout (increase
SCAN_TIMEOUT) - Container image not accessible
Verify socket proxy permissions:
environment:
CONTAINERS: 1
IMAGES: 1
INFO: 1Check VulnForge logs:
docker logs vulnforgeTest connectivity:
curl -d "Test message" http://ntfy:80/vulnforgeCheck Settings:
- ntfy URL is correct
- Topic name matches subscription
- Token is valid (if using auth)
- FAQ - Frequently asked questions
- Troubleshooting - Comprehensive problem-solving
- GitHub Issues - Report bugs