
Selbstgehostete Netzwerkerkennungs- und Suchmaschine mit kontinuierlichem Port-Scanning, tiefer Protokollanalyse über ~100 Dienste, lokaler CVE-Abgleich und Volltextsuche für Inventarisierung der Infrastruktur und Risikoüberwachung.
Selbst gehostete Netzwerkerkennung & -suche — dein eigenes Shodan, auf deiner Hardware.
TCP/UDP-Scans · ~100 Protokoll-Probes · TLS/JARM-Fingerprints · CVE-Abgleich · Volltextsuche · Delta-Tracking · Alarme
Schnellstart · Funktionen · Architektur · Dokumentation · Produktion
Wichtig. Scanne nur Netzwerke, die dir gehören oder für die du eine schriftliche Genehmigung zum Scannen hast. UltraViolet führt passive Diensterkennung durch — es nutzt keine Schwachstellen aus.
| Anwendungsfall | Was du bekommst |
|---|---|
| Perimeter & Inventar | Kontinuierliche Erkennung offener Ports und Dienste über CIDR-Bereiche |
| Infrastruktur-Suche | Volltextsuche über HTTP-Bodies, Banner, TLS, DNS und CVEs |
| Risiko & Compliance | Lokaler NVD-Abgleich plus CISA KEV und EPSS — keine Cloud-Abhängigkeit |
| Air-Gapped-Bereitstellung | Offline-Archiv mit Docker-Images, CVE-Seed und GeoIP-MMDB auf der Festplatte |
| Änderungsverfolgung | Deltas zwischen Scans, WebSocket-Ereignisse, Alarme bei gespeicherten Suchanfragen |
Einzelmandant, ein Docker-Compose-Stack, volle Kontrolle über deine Daten.
Erkennung
SCAN_ALLOWED_CIDRS mit Host- und Port-LimitsTiefen-Probes (~100 Protokolle)
robots.txt, security.txt, Tech-StackAnreicherung
CVE & Risiko
Betrieb
viewer / operator / admin), JWT + Refresh-Tokens/metrics, optionales Grafana-Profilflowchart TB
Browser["Browser"]
FE["service-frontend<br/>React + nginx"]
API["uv-api<br/>REST · WS · metrics"]
PG[("PostgreSQL 16")]
SCAN["uv-scanner<br/>probe pipeline"]
Browser --> FE
FE -->|"/api"| API
FE -->|"/realtime"| API
API <--> PG
SCAN <--> PG
API -.->|LISTEN/NOTIFY| API
Das Release-UI-Image proxyt /api/ und /realtime an uv-api — Single Origin, kein Frontend-Rebuild pro API-URL.
| Verzeichnis | Zweck |
|---|---|
service-api/ | Go: uv-api (HTTP-API, WebSocket, Worker) + uv-scanner (Pipeline) |
service-frontend/ | React 19 + Vite + RTK — Scans, Hosts, Suche, Dashboard |
service-documentation-frontend/ | VitePress — Benutzer- und Betreiber-Dokumentation |
service-env/ | docker-compose, Secrets, install.sh / upgrade.sh / Backup |
Backend-Entwicklungsregeln: CLAUDE.md.
Voraussetzungen: Go 1.25+, Docker Engine ≥ 24, ~4 GB RAM. Produktions-Images zielen auf Linux amd64.
Einsteiger-Pfad — veröffentlichte Images pullen mit
service-env/docker-compose.registry.yml:
cd service-env
cp env.registry.example .env
# set POSTGRES_PASSWORD, AUTH_JWT_SECRET, AUTH_BOOTSTRAP_PASSWORD
mkdir -p geoip catalog-seed
docker compose -f docker-compose.registry.yml pull
docker compose -f docker-compose.registry.yml up -d
# UI → http://localhost:3000
Siehe Docker Registry in der Dokumentations-Site.
Die API/Scanner-Images kopieren vorgebaute Binaries aus service-api/bin/ (sie werden nicht innerhalb von Docker kompiliert). make dev führt make -C service-api build-linux aus, bevor docker compose … --build.
git clone https://github.com/yakushstanislav/UltraViolet.git
cd UltraViolet/service-env
cp .env.example .env
mkdir -p secrets
openssl rand -hex 32 > secrets/postgres_password
openssl rand -hex 32 > secrets/auth_jwt_secret
cd ..
make dev
| URL | Zweck |
|---|---|
| http://localhost:3000 | UI (API über nginx /api/) |
| http://localhost:8080 | API direkt |
| http://localhost:9090/metrics | Prometheus |
Dev-Bootstrap: admin / admin (nur wenn APP_ENV≠production).
Vollständige Anleitung — VitePress in service-documentation-frontend/docs/:
make docs-dev # → http://localhost:5173
In Produktion das docs-Profil aktivieren:
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Wichtige Abschnitte: Installation · Scannen · API · Bereitstellung · Offline-Installation.
make dev # build-linux → compose prod + dev override --build
Go-Binaries nach Backend-Änderungen neu bauen (make -C service-api build-linux), dann neu starten oder make dev erneut ausführen.
make dev-db # PostgreSQL only on :5432