-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
Diese Anleitung führt dich von null bis zu einer laufenden Vakt-Instanz.
| Minimum | Empfohlen | Mit KI-Berater (Standard) | |
|---|---|---|---|
| CPU | 2 vCPU | 4 vCPU | 4 vCPU — kein GPU nötig |
| RAM | 2 GB | 4 GB | 4 GB (+2 GB für das Modell) |
| Disk | 20 GB SSD | 40 GB SSD | 40 GB SSD (+3 GB für das Modell) |
| Docker Engine | 24+ | 24+ | 24+ |
| Docker Compose | v2 | v2 | v2 |
| Betriebssystem | Linux (empfohlen), macOS, Windows (WSL2) | Linux | Linux |
Der KI-Berater läuft standardmäßig lokal über einen Ollama-Container — rein auf CPU, kein GPU, kein Cloud-API-Key erforderlich. Wer ihn nicht braucht, kann ihn mit VAKT_AI_PROVIDER=disabled abschalten.
git clone https://github.com/norvik-ops/vatk
cd vatkcp .env.example .envDann den Master-Key setzen — einmalig, nicht mehr ändern nach dem ersten Start:
sed -i 's/VAKT_SECRET_KEY=.*/VAKT_SECRET_KEY='"$(openssl rand -hex 32)"'/' .envOder manuell in .env eintragen:
VAKT_SECRET_KEY=<Ausgabe von: openssl rand -hex 32>docker compose up -dVakt startet und ist nach ca. 30–60 Sekunden unter http://localhost erreichbar. Datenbankmigrationen laufen automatisch beim ersten Start.
Beim ersten Aufruf erscheint der Setup-Wizard. Dort legst du die Organisation und den ersten Admin-Account an. Danach ist der Setup-Wizard dauerhaft deaktiviert.
Demo-Modus (nur für Tests, nie für Produktion):
VAKT_DEMO=trueMit diesem Flag werden Testdaten eingespielt. Login: admin@sechealth.local / admin1234 und analyst@sechealth.local / analyst1234.
Die vollständige Referenz aller Variablen findest du in der Konfigurationsreferenz. Für den Start sind folgende Variablen relevant:
| Variable | Beschreibung |
|---|---|
VAKT_DB_URL |
PostgreSQL-Verbindungsstring |
VAKT_REDIS_URL |
Redis-Verbindungsstring |
VAKT_SECRET_KEY |
32-Byte Hex-Master-Key (AES-256-GCM) — niemals nach erstem Start ändern |
| Variable | Standard | Beschreibung |
|---|---|---|
VAKT_MODULES_ENABLED |
alle | Kommagetrennte Liste aktiver Module |
AUTO_MIGRATE |
false |
Migrationen automatisch beim Start ausführen |
VAKT_DEMO |
false |
Demo-Daten einspielen |
VAKT_FRONTEND_URL |
http://localhost:5173 |
Öffentliche URL des Frontends (für E-Mail-Links) |
VAKT_AI_PROVIDER |
openai |
KI-Provider (openai oder disabled) |
VAKT_AI_BASE_URL |
http://ollama:11434/v1 |
API-Endpunkt des KI-Providers |
VAKT_AI_MODEL |
llama3.2:3b |
Modellname |
| Variable | Standard | Beschreibung |
|---|---|---|
VAKT_SMTP_HOST |
localhost |
SMTP-Server |
VAKT_SMTP_PORT |
1025 |
SMTP-Port |
VAKT_SMTP_USER |
— | Benutzername (erforderlich für Port 587/465) |
VAKT_SMTP_PASS |
— | Passwort (erforderlich für Port 587/465) |
VAKT_SMTP_FROM |
secreflex@sechealth.local |
Absenderadresse |
Der Ollama-Container ist bereits in docker-compose.yml enthalten. Nach dem ersten Start das Modell einmalig laden:
docker compose exec ollama ollama pull llama3.2:3bDas Modell (~2 GB) wird lokal gespeichert und steht danach offline zur Verfügung.
VAKT_AI_PROVIDER=openai
VAKT_AI_BASE_URL=https://api.mistral.ai/v1
VAKT_AI_API_KEY=sk-...
VAKT_AI_MODEL=mistral-small-latestMistral AI nutzt EU-Server und ist DSGVO-freundlich. Kosten: ca. €0,001 pro Bericht.
Alle OpenAI-kompatiblen Endpunkte funktionieren: OpenAI, Mistral, Groq, Ollama, LM Studio, vLLM.
VAKT_AI_PROVIDER=disabledVakt liefert eine Nginx-Konfiguration mit. Für HTTPS gibt es zwei Varianten.
In docker-compose.yml den Certbot-Service aktivieren (oder Certbot auf dem Host laufen lassen) und in nginx/nginx.conf den HTTPS-Block einkommentieren:
server {
listen 443 ssl;
server_name deine-domain.de;
ssl_certificate /etc/letsencrypt/live/deine-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/deine-domain.de/privkey.pem;
location / {
proxy_pass http://frontend:5173;
}
location /api/ {
proxy_pass http://api:8080;
}
}Zertifikat und Key in nginx/certs/ ablegen und in nginx.conf referenzieren:
ssl_certificate /etc/nginx/certs/cert.pem;
ssl_certificate_key /etc/nginx/certs/key.pem;Anschließend VAKT_FRONTEND_URL auf die HTTPS-URL setzen:
VAKT_FRONTEND_URL=https://vakt.intranet.meine-firma.deVakt kann Benutzerkonten aus einem LDAP/AD synchronisieren:
VAKT_LDAP_URL=ldap://dc.meine-firma.local:389
VAKT_LDAP_BIND_DN=CN=vakt-service,OU=ServiceAccounts,DC=meine-firma,DC=local
VAKT_LDAP_BIND_PASS=geheimes-passwort
VAKT_LDAP_BASE_DN=OU=Users,DC=meine-firma,DC=local
VAKT_LDAP_USER_FILTER=(objectClass=person)
VAKT_LDAP_GROUP_FILTER=(objectClass=group)
VAKT_LDAP_TLS=falseSSO wird über Casdoor als Proxy unterstützt. Damit lassen sich Azure AD, Okta, Keycloak und Google Workspace einbinden:
CASDOOR_URL=https://auth.meine-firma.de
CASDOOR_CLIENT_ID=vakt-app
CASDOOR_CLIENT_SECRET=geheimes-secretgit pull
docker compose pull
docker compose up -dMigrationen laufen automatisch beim Start (wenn AUTO_MIGRATE=true gesetzt ist). Bei kritischen Produktionssystemen empfiehlt sich der manuelle Ablauf:
# 1. Backup anlegen
# 2. Migration testen
docker compose exec api /api migrate
# 3. Anwendung starten
docker compose up -dEin Helm Chart liegt unter helm/sechealth/. Grundlegender Aufruf:
helm install vakt ./helm/sechealth \
--set secret.key=$(openssl rand -hex 32) \
--set postgresql.postgresqlPassword=sicher \
--set ingress.enabled=true \
--set ingress.hostname=vakt.meine-firma.de- Organisation konfigurieren — Sector und Bundesland setzen (wichtig für automatische Behördenauswahl in Vakt Comply).
- Frameworks aktivieren — In Vakt Comply die relevanten Standards aktivieren (NIS2, ISO 27001, BSI-Grundschutz o. a.).
- Benutzer einladen — Über Einstellungen → Benutzerverwaltung weitere Teammitglieder einladen.
- 2FA aktivieren — Für Admin-Accounts TOTP einrichten (Einstellungen → Sicherheit).
- SMTP konfigurieren — Für Benachrichtigungen und Vakt-Aware-Kampagnen einen SMTP-Server eintragen.
-
KI-Modell laden — Falls Ollama genutzt wird:
docker compose exec ollama ollama pull llama3.2:3b. - Ersten Scan starten — In Vakt Scan ein Asset anlegen und einen Trivy-Scan auslösen.
# Liveness
curl http://localhost/health
# Readiness (prüft DB und Redis)
curl http://localhost/health/readyBeide Endpunkte antworten mit HTTP 200 wenn alles läuft.
Vakt speichert alle Daten in PostgreSQL. Eine einfache Backup-Strategie:
docker compose exec postgres pg_dump -U sechealth sechealth > backup-$(date +%Y%m%d).sqlHochgeladene Dateien (Evidence-Anhänge) liegen im Volume ./data/uploads und müssen separat gesichert werden.