
Lokal gehostete, air-gapped VAPT-Plattform, die 8 parallele Scan-Module ausführt, Befunde deterministisch mit CVSS v3.1 bewertet und PDF-Berichte mit optional KI-generierten Abhilfemaßnahmen über ein lokales LLM erstellt.
Erstellt von maverickaayush.
Ein lokal gehostetes, netzwerkisoliertes (air-gapped) VAPT-Tool: Man richtet es auf eine autorisierte Zieldomain aus, und es führt 8 Scan-Module parallel aus, bewertet jeden Befund deterministisch (CVSS v3.1), ergänzt optional KI-generierte Beschreibungen in einfacher Sprache über ein lokales LLM und erzeugt einen PDF-Bericht plus ein Live-Web-Dashboard. Keine externen API-Aufrufe – alles läuft im eigenen Netzwerk.
Zwei Möglichkeiten, ONUS auszuführen:
- Self-hosted (dieses Repo):
docker compose up→ Domain eingeben → Autorisierungsfeld aktivieren → scannen. Kein Konto, keine Anmeldung, keine E-Mail-Verifizierung – es ist bewusst für einen einzelnen Bediener ausgelegt, und alles unten deckt diesen Weg ab.- Gehostet: Eine verwaltete Instanz ist live unter tryonus.tech. Sie ergänzt produktionsspezifische Funktionen (Konten / OAuth-Anmeldung, eine Scan-Warteschlange, Verlauf pro Benutzer), die in diesem Repo standardmäßig aus sind, damit Self-Hosting einfach bleibt. Siehe Self-hosted vs. gehostet.
| Self-hosted (dieses Repo) | Gehostet (tryonus.tech) | |
|---|---|---|
| Setup | docker compose up | keins – einfach die Website öffnen |
| Anmeldung | keine – einzelner Bediener | Konto / Google / GitHub OAuth |
| Scan-Ablauf | Domain → Autorisierungsfeld → Scan | gleich, nach der Anmeldung |
| Extras | – | Scan-Warteschlange, Verlauf pro Benutzer, gehostete E-Mail |
| Läuft auf | eigenem Netzwerk, netzwerkisoliert | verwalteter Cloud |
Der Self-hosted-Standardpfad ist bewusst der einfache: keine Registrierung, keine E-Mail-Verifizierung, kein OAuth. Die nur im Hosting verfügbaren Funktionen (Authentifizierung, Scan-Warteschlange) liegen hinter Konfigurationsflags, die standardmäßig aus sind (REQUIRE_AUTH=false, HOSTED_QUEUE_ENABLED=false; siehe Konfiguration) und in docker-compose.yml nicht gesetzt werden – wer ONUS lokal betreibt, steht also nie hinter einem Login. Bevorzugen Sie null Setup? Nutzen Sie die gehostete Website unter tryonus.tech.
| Neuer Scan | Live-Scan-Status |
|---|---|
![]() | ![]() |
| Berichts-Dashboard | Scan-Entdeckungen |
|---|---|
![]() | ![]() |
domain → [recon | webscan | ssl_tls | headers | owasp | tech_fingerprint | nuclei | enumeration] (parallel, Celery)
→ any module failed/timed out? → pause for operator retry/continue/cancel
→ aggregator (dedup + OWASP-map + sort)
→ confidence verification (passive re-observation)
→ deterministic CVSS scoring
→ Ollama (Qwen 2.5 7B) AI analysis
→ WeasyPrint PDF + PostgreSQL
→ dashboard / PDF download
Sechs Schichten: Next.js-Frontend → FastAPI → Celery/Redis → 8 parallele Scan-Module → Ollama (Qwen 2.5 7B) → WeasyPrint-PDF + Dashboard. Vollständige Details in ARCHITECTURE.md (Schemata, Verträge, Guardrails) und docs/QUICK_REF.md (schnelles Nachschlagen für häufige Änderungen).
mem_limit: 4g), und Postgres, Redis, die API, der Worker und das Frontend laufen parallel dazu.Siehe Voraussetzungen oben: ~8 GB Speicher und ~6 GB RAM, und rechnen Sie mit einem 10–15-minütigen ersten Build.
cp .env.example .env
cp backend/subfinder-config/provider-config.yaml.example backend/subfinder-config/provider-config.yaml
docker compose up -d
docker compose ps # wait for zap to report healthy (~2 min)
Öffnen Sie http://localhost:3000, geben Sie eine Domain ein, aktivieren Sie das Autorisierungsfeld und starten Sie den Scan.
Keine Anmeldung, keine Registrierung, keine E-Mail-Verifizierung. Self-hosted ONUS ist standardmäßig für einen einzelnen Bediener ausgelegt – zwischen dem Öffnen des Dashboards und dem Scannen gibt es keinen Kontoschritt.