Dateien nach "/" hochladen
This commit is contained in:
1 parent
101ab8c54d
commit
74087727ad
5 files changed
+339
-1
No files matched your search
@@ -1,2 +1,81 @@
|
||||
# SkillSpector-Web
|
||||
# SkillSpector Web – Setup-Anleitung
|
||||
|
||||
Web-Oberfläche für [SkillSpector](https://github.com/NVIDIA/SkillSpector), gehärtet für
|
||||
den Betrieb auf einem eigenen Server via Portainer.
|
||||
|
||||
## 1. Repository in Gitea anlegen
|
||||
|
||||
1. Neues Repo z. B. unter `git.obraasch.de/olli1986/skillspector-web` anlegen.
|
||||
2. Diese vier Dateien hochladen/pushen: `Dockerfile`, `requirements.txt`, `app.py`,
|
||||
`docker-compose.yml`.
|
||||
3. **Nicht committen:** Passwörter oder API-Keys – die kommen später als
|
||||
Umgebungsvariablen in Portainer, nie ins Repo.
|
||||
|
||||
## 2. Stack in Portainer anlegen
|
||||
|
||||
1. **Stacks → Add stack**
|
||||
2. **Build method: Repository**
|
||||
- Repository URL: `https://git.obraasch.de/olli1986/skillspector-web`
|
||||
- Reference: `refs/heads/main`
|
||||
- Compose path: `docker-compose.yml`
|
||||
3. **Environment variables** (im Portainer-UI, nicht im Repo):
|
||||
- `WEBUI_USER` = z. B. `admin`
|
||||
- `WEBUI_PASSWORD` = ein starkes Passwort
|
||||
- optional `ANTHROPIC_API_KEY`, falls du später LLM-Analyse willst
|
||||
4. **Deploy the stack**
|
||||
|
||||
Ohne gesetztes `WEBUI_PASSWORD` verweigert die WebUI jeden Zugriff (Absicherung
|
||||
gegen offen erreichbare Instanzen).
|
||||
|
||||
## 3. Automatische Updates einrichten
|
||||
|
||||
Der Trick: Im `Dockerfile` ist SkillSpector **ohne Versions-Pin** installiert
|
||||
(`git+https://github.com/NVIDIA/skillspector.git`). Jeder Rebuild des Images holt
|
||||
also automatisch den aktuellen `main`-Branch. Damit das regelmäßig passiert, ohne
|
||||
dass du selbst etwas anfassen musst:
|
||||
|
||||
1. Stack öffnen → Abschnitt **GitOps updates**
|
||||
2. **Enable GitOps updates** aktivieren
|
||||
3. Mechanismus: **Polling**, Intervall z. B. `24h`
|
||||
4. **Force redeployment** UND **Re-pull image / rebuild** aktivieren
|
||||
|
||||
→ Auch wenn sich in *deinem* Repo nichts ändert, baut Portainer das Image alle
|
||||
24h neu und zieht damit automatisch die neueste SkillSpector-Version.
|
||||
5. Speichern.
|
||||
|
||||
Falls deine Portainer-Version "Force redeployment" beim reinen Repository-Build
|
||||
nicht anbietet: alternativ einfach den Stack alle paar Wochen manuell über
|
||||
**"Pull and redeploy"** neu bauen – dauert 10 Sekunden und holt ebenfalls die
|
||||
neueste Version.
|
||||
|
||||
## 4. Öffentlich erreichbar machen (optional)
|
||||
|
||||
Der Container bindet bewusst nur an `127.0.0.1:8000`, ist also von außen gar nicht
|
||||
erreichbar. Wenn du ihn z. B. unter `skillspector.obraasch.de` nutzen willst,
|
||||
richte in CloudPanel einen Reverse Proxy auf `127.0.0.1:8000` ein – mit TLS
|
||||
(Let's Encrypt) und idealerweise IP-Beschränkung, da die App zusätzlich zur
|
||||
Basic-Auth Angriffsfläche für einen Web-Client darstellt (auch wenn sie selbst
|
||||
sehr klein ist).
|
||||
|
||||
## 5. Warum das deinen Server nicht gefährden kann
|
||||
|
||||
- **Kein Docker-Socket-Mount** – der Container kann keine anderen Container
|
||||
oder den Host steuern.
|
||||
- **`read_only: true`** – das Root-Dateisystem im Container ist unveränderlich,
|
||||
nur `/tmp` und das Scan-Verzeichnis sind (flüchtiger) RAM-Speicher (`tmpfs`).
|
||||
- **`cap_drop: ALL`** und **`no-new-privileges`** – keine erweiterten
|
||||
Linux-Rechte.
|
||||
- **Ressourcenlimits** (`mem_limit`, `cpus`) – ein hängender oder böswilliger
|
||||
Scan kann den restlichen Server nicht in die Knie zwingen.
|
||||
- **SkillSpector führt den gescannten Skill nie aus** – nur statische Analyse
|
||||
(Regex/AST/YARA) plus optionale LLM-Bewertung von Dateiinhalten.
|
||||
- **`--no-llm` ist Standard** – ohne dein explizites Häkchen verlässt kein
|
||||
gescannter Dateiinhalt den Container.
|
||||
- Jeder Scan läuft in einem eigenen Temp-Ordner, der danach gelöscht wird.
|
||||
|
||||
## Nutzung
|
||||
|
||||
WebUI öffnen (z. B. `http://<server>:8000` lokal oder deine Subdomain), Basic-Auth
|
||||
eingeben, Git-URL des Skills eintragen oder ZIP hochladen, "Scan starten" klicken.
|
||||
Das Ergebnis zeigt Risk Score, Severity und Empfehlung (`SAFE` / `CAUTION` /
|
||||
`DO_NOT_INSTALL`) sowie den vollständigen JSON-Report.
|
||||
Reference in new issue
Block a user