Files
zmb-webui/backend/README.md
T
patrick 8dc4e8d698 Docs: backend/README.md neu geschrieben (PAM-Auth, aktuelle Endpunkte)
auth_service-Referenzen entfernt, Cookie-basierte Auth dokumentiert,
Endpunkt-Tabellen für alle Router ergänzt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 19:40:15 +02:00

108 lines
3.0 KiB
Markdown

# ZMB Webui — Backend
FastAPI-Backend für ZFS-, Samba- und NFS-Verwaltung. Läuft als root (PAM-Auth benötigt `/etc/shadow`).
## Lokale Entwicklung
```bash
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 main.py
# → http://localhost:8000
# → http://localhost:8000/docs (API-Docs)
```
Login mit jedem Linux-Systembenutzer der eine Login-Shell hat.
## API-Endpunkte
Auth-Cookie wird beim Login automatisch gesetzt (`httpOnly`). Für curl-Tests:
```bash
# Login — setzt Cookie
curl -c cookies.txt -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"user","password":"pass"}'
# Alle weiteren Requests mit Cookie
curl -b cookies.txt http://localhost:8000/api/pools/
```
### Pools
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/pools/` | Alle Pools auflisten |
| GET | `/api/pools/{name}` | Pool-Status |
| POST | `/api/pools/{name}/scrub` | Scrub starten |
| POST | `/api/pools/{name}/scrub/stop` | Scrub stoppen |
### Datasets
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/datasets/` | Alle Datasets |
| POST | `/api/datasets/` | Dataset erstellen |
| DELETE | `/api/datasets/{name}` | Dataset löschen |
### Snapshots
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/snapshots/` | Alle Snapshots |
| POST | `/api/snapshots/` | Snapshot erstellen |
| DELETE | `/api/snapshots/{name}` | Snapshot löschen |
| POST | `/api/snapshots/rollback` | Rollback |
### Shares
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/shares/samba` | Samba-Shares auflisten |
| POST | `/api/shares/samba` | Share erstellen |
| DELETE | `/api/shares/samba/{name}` | Share löschen |
| GET | `/api/shares/nfs` | NFS-Exports auflisten |
| POST | `/api/shares/nfs` | Export erstellen |
| DELETE | `/api/shares/nfs/{path}` | Export löschen |
| GET | `/api/shares/samba/config` | Samba Global-Config |
| POST | `/api/shares/samba/config` | Parameter setzen |
| DELETE | `/api/shares/samba/config/{key}` | Parameter löschen |
### System
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/system/info` | CPU, RAM, Disk |
| GET | `/api/system/logs` | Systemlogs |
### Identities
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/identities/users` | Systembenutzer auflisten |
| POST | `/api/identities/users` | Benutzer anlegen |
| DELETE | `/api/identities/users/{name}` | Benutzer löschen |
| GET | `/api/identities/groups` | Gruppen auflisten |
## Caching
ZFS-Befehle sind mit TTL gecacht:
- Pools: 30s
- Datasets/Snapshots: 60s
Mutationen (erstellen/löschen) löschen den Cache sofort.
## Troubleshooting
```bash
# Logs live
journalctl -u zmb-webui-backend -f
# Manuell starten (für Fehlerausgabe direkt im Terminal)
cd backend && source venv/bin/activate
python3 main.py
# ZFS prüfen
zpool list
# Samba Registry prüfen
net conf list
```