
Moteur de découverte réseau et de recherche auto-hébergé avec scan de ports continu, sondage approfondi de protocoles sur ~100 services, mise en correspondance locale de CVE, et recherche en texte intégral pour l'inventaire d'infrastructure et la surveillance des risques.
Découverte et recherche réseau auto-hébergées — votre propre Shodan, sur votre matériel.
Scan TCP/UDP · ~100 sondes de protocoles · Empreintes TLS/JARM · Correspondance CVE · recherche en texte intégral · suivi des différences · alertes
Démarrage rapide · Fonctionnalités · Architecture · Documentation · Production
Important. Ne scannez que les réseaux dont vous êtes propriétaire ou pour lesquels vous disposez d'une autorisation écrite. UltraViolet effectue une reconnaissance passive des services — il n'exploite pas de vulnérabilités.
| Cas d'usage | Ce que vous obtenez |
|---|---|
| Périmètre et inventaire | Découverte continue des ports et services ouverts sur des plages CIDR |
| Recherche d'infrastructure | Recherche en texte intégral sur les corps HTTP, bannières, TLS, DNS et CVE |
| Risque et conformité | Correspondance NVD locale plus CISA KEV et EPSS — aucune dépendance au cloud |
| Déploiements isolés | Archive hors ligne avec images Docker, graine CVE et MMDB GeoIP sur disque |
| Suivi des changements | Différences entre scans, événements WebSocket, alertes sur recherches enregistrées |
Locataire unique, une pile Docker Compose, contrôle total de vos données.
Découverte
SCAN_ALLOWED_CIDRS avec limites d'hôtes et de portsSondes approfondies (~100 protocoles)
robots.txt, security.txt, pile technologiqueEnrichissement
CVE et risque
Opérations
viewer / operator / admin), JWT + jetons d'actualisation/metrics, profil Grafana optionnelflowchart 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
L'image UI publiée fait office de proxy /api/ et /realtime vers uv-api — origine unique, aucune reconstruction du frontend par URL d'API.
| Répertoire | Objectif |
|---|---|
service-api/ | Go : uv-api (API HTTP, WebSocket, workers) + uv-scanner (pipeline) |
service-frontend/ | React 19 + Vite + RTK — scans, hôtes, recherche, tableau de bord |
service-documentation-frontend/ | VitePress — documentation utilisateur et opérateur |
service-env/ | docker-compose, secrets, install.sh / upgrade.sh / backup |
Règles de développement backend : CLAUDE.md.
Prérequis : Go 1.25+, Docker Engine ≥ 24, ~4 Go de RAM. Les images de production ciblent Linux amd64.
Parcours débutant — tirez les images publiées avec
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
Voir Docker Registry dans le site de documentation.
Les images API/scanner copient les binaires précompilés depuis service-api/bin/ (ils ne sont pas compilés dans Docker). make dev exécute make -C service-api build-linux avant 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 | Objectif |
|---|---|
| http://localhost:3000 | UI (API via nginx /api/) |
| http://localhost:8080 | API directement |
| http://localhost:9090/metrics | Prometheus |
Bootstrap de développement : admin / admin (uniquement quand APP_ENV≠production).
Guide complet — VitePress dans service-documentation-frontend/docs/ :
make docs-dev # → http://localhost:5173
En production, activez le profil docs :
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Sections clés : installation · scan · API · déploiement · installation hors ligne.
make dev # build-linux → compose prod + dev override --build
Recompilez les binaires Go après des modifications du backend (make -C service-api build-linux), puis redémarrez ou relancez make dev.