164 lines
4.5 KiB
Markdown
164 lines
4.5 KiB
Markdown
---
|
|
doc_type: operations_manual
|
|
audience: admin, devops
|
|
scope: deployment, maintenance, backup, edge_registry
|
|
status: active
|
|
version: 2.7.0
|
|
context: "Installationsanleitung, Systemd-Units und Wartungsprozesse für Mindnet v2.7."
|
|
---
|
|
|
|
# Admin Operations Guide
|
|
|
|
## 1. Installation & Setup
|
|
|
|
### 1.1 Voraussetzungen
|
|
* **OS:** Ubuntu 22.04+ (empfohlen).
|
|
* **Tools:** Python 3.10+, Docker, Ollama.
|
|
* **Hardware:** Min. 8GB RAM, 4 CPU Cores (für Async Import).
|
|
|
|
### 1.2 Qdrant (Docker)
|
|
Startet die Vektor-DB mit persistentem Storage auf Port 6333.
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name mindnet_qdrant \
|
|
--restart always \
|
|
-p 6333:6333 \
|
|
-v $(pwd)/qdrant_storage:/qdrant/storage \
|
|
qdrant/qdrant
|
|
```
|
|
|
|
### 1.3 Ollama (Modelle)
|
|
**Wichtig:** Seit v2.4 ist `nomic-embed-text` Pflicht für Embeddings.
|
|
|
|
```bash
|
|
# Modelle laden
|
|
ollama pull phi3:mini
|
|
ollama pull nomic-embed-text
|
|
|
|
# Testen
|
|
curl http://localhost:11434/api/generate -d '{"model": "phi3:mini", "prompt":"Hi"}'
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Deployment (Systemd Services)
|
|
|
|
Wir unterscheiden strikt zwischen **Prod** (Port 8001/8501) und **Dev** (Port 8002/8502).
|
|
|
|
### 2.1 Backend Service (`/etc/systemd/system/mindnet-prod.service`)
|
|
|
|
```ini
|
|
[Unit]
|
|
Description=Mindnet API Prod (8001)
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=llmadmin
|
|
Group=llmadmin
|
|
WorkingDirectory=/home/llmadmin/mindnet
|
|
# Startet Uvicorn (Async Server)
|
|
# Hinweis: Die .env muss MINDNET_VOCAB_PATH für die Edge Registry enthalten.
|
|
ExecStart=/home/llmadmin/mindnet/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8001 --env-file .env
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
### 2.2 UI Service (`/etc/systemd/system/mindnet-ui-prod.service`)
|
|
|
|
```ini
|
|
[Unit]
|
|
Description=Mindnet UI Prod (8501)
|
|
After=mindnet-prod.service
|
|
|
|
[Service]
|
|
User=llmadmin
|
|
Group=llmadmin
|
|
WorkingDirectory=/home/llmadmin/mindnet
|
|
|
|
# Environment für Streamlit Port & API-Ziel
|
|
Environment="MINDNET_API_URL=http://localhost:8001"
|
|
Environment="MINDNET_API_TIMEOUT=300"
|
|
Environment="STREAMLIT_SERVER_PORT=8501"
|
|
Environment="STREAMLIT_SERVER_ADDRESS=0.0.0.0"
|
|
Environment="STREAMLIT_SERVER_HEADLESS=true"
|
|
|
|
# WICHTIG: Pfad zur neuen Router-Datei (ui.py)
|
|
ExecStart=/home/llmadmin/mindnet/.venv/bin/streamlit run app/frontend/ui.py
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Wartung & Monitoring
|
|
|
|
### 3.1 Regelmäßiger Import (Cron)
|
|
Führt den Sync stündlich durch. Nutzt `--purge-before-upsert` für Sauberkeit.
|
|
|
|
```bash
|
|
# Crontab Eintrag (user: llmadmin)
|
|
0 * * * * cd /home/llmadmin/mindnet && .venv/bin/python3 -m scripts.import_markdown --vault ./vault --prefix "mindnet" --apply --purge-before-upsert --sync-deletes >> ./logs/import.log 2>&1
|
|
```
|
|
|
|
### 3.2 Monitoring der Edge Registry (WP-22)
|
|
Administratoren sollten regelmäßig das Log für unbekannte Kanten-Typen prüfen.
|
|
* **Pfad:** `data/logs/unknown_edges.jsonl`.
|
|
* **Aktion:** Wenn neue Typen häufig auftreten, sollten diese als Alias in die `01_edge_vocabulary.md` aufgenommen werden.
|
|
|
|
### 3.3 Troubleshooting Guide
|
|
|
|
**Fehler: "Registry Initialization Failure" (Neu in v2.7)**
|
|
* **Symptom:** API startet, aber Kanten werden nicht gewichtet oder Fehlermeldung im Log.
|
|
* **Lösung:** Prüfen Sie `MINDNET_VOCAB_PATH` in der `.env`. Der Pfad muss absolut sein und auf eine existierende Markdown-Tabelle zeigen.
|
|
|
|
**Fehler: "ModuleNotFoundError: No module named 'st_cytoscape'"**
|
|
* Ursache: Alte Dependencies oder falsches Paket installiert.
|
|
* Lösung: Environment aktualisieren.
|
|
```bash
|
|
source .venv/bin/activate
|
|
pip uninstall streamlit-cytoscapejs
|
|
pip install st-cytoscape
|
|
```
|
|
|
|
**Fehler: "Vector dimension error: expected 768, got 384"**
|
|
* Ursache: Alte DB (v2.2), neues Modell (v2.4).
|
|
* Lösung: **Full Reset** (siehe Kap. 4.2).
|
|
|
|
**Fehler: Import sehr langsam**
|
|
* Ursache: Smart Edges sind aktiv und analysieren jeden Chunk.
|
|
* Lösung: `MINDNET_LLM_BACKGROUND_LIMIT` prüfen oder Feature in `types.yaml` deaktivieren.
|
|
|
|
**Fehler: UI "Read timed out"**
|
|
* Ursache: Backend braucht für Smart Edges länger als 60s.
|
|
* Lösung: `MINDNET_API_TIMEOUT=300.0` in `.env` setzen (oder im Systemd Service).
|
|
|
|
---
|
|
|
|
## 4. Backup & Restore
|
|
|
|
### 4.1 Qdrant Snapshot
|
|
Sichert den Vektor-Index.
|
|
|
|
```bash
|
|
docker stop mindnet_qdrant
|
|
tar -czf qdrant_backup_$(date +%F).tar.gz ./qdrant_storage
|
|
docker start mindnet_qdrant
|
|
```
|
|
|
|
### 4.2 Notfall-Rebuild (Clean Slate)
|
|
Wenn alles inkonsistent ist oder Dimensionen sich ändern:
|
|
|
|
```bash
|
|
# 1. DB löschen
|
|
python3 -m scripts.reset_qdrant --mode wipe --prefix "mindnet" --yes
|
|
|
|
# 2. Neu importieren (Force Hash recalculation)
|
|
python3 -m scripts.import_markdown --vault ./vault --prefix "mindnet" --apply --force
|
|
``` |