70 lines
2.2 KiB
Markdown
70 lines
2.2 KiB
Markdown
# ntfywui (Go) – Webinterface für ntfy User/ACL/Token Verwaltung
|
||
|
||
Dieses Projekt stellt ein **sicheres Webinterface** bereit, um die ntfy **CLI-Administration** (Users, ACL/Access, Tokens) bequem im Browser zu machen.
|
||
|
||
- **Golang, Standardbibliothek-only** (keine externen deps)
|
||
- Arbeitet **gegen die lokale ntfy Auth-DB** über die ntfy CLI (im Container enthalten)
|
||
- **CSRF-Schutz**, **Secure Headers (CSP)**, **verschlüsselte Sessions (AES-GCM)**, **Rate-Limit**
|
||
- **WebUI-Admins** separat von ntfy-Users (inkl. optionalem TOTP-2FA)
|
||
- **Audit Log** (JSONL)
|
||
|
||
## Quickstart (Docker Compose)
|
||
|
||
1) `.env` anlegen:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
# SECRET erzeugen (Beispiel): openssl rand -base64 48
|
||
```
|
||
|
||
2) Stelle sicher, dass `/etc/ntfy/server.yml` Authentication aktiv hat, z.B.:
|
||
|
||
```yaml
|
||
auth-file: "/var/lib/ntfy/user.db"
|
||
auth-default-access: "deny-all"
|
||
```
|
||
|
||
3) Start:
|
||
|
||
```bash
|
||
docker compose up -d --build
|
||
```
|
||
|
||
- ntfy: http://localhost:8080
|
||
- ntfywui: http://localhost:8090
|
||
|
||
## Wichtige Hinweise (Sicherheit)
|
||
|
||
- **NTFYWUI_SECRET ist Pflicht** (>=32 Bytes; base64 empfohlen).
|
||
- Setze `NTFYWUI_COOKIE_SECURE=true` (Default). Für reines HTTP-Lab ggf. `false`.
|
||
- Wenn du einen Reverse Proxy davor hast, setze `NTFYWUI_TRUST_PROXY` nur auf **deine Proxy-CIDRs**,
|
||
damit `X-Forwarded-For` nicht spoofbar ist.
|
||
- Vergib WebUI-Admin-Rechte sparsam:
|
||
- `viewer`: read-only (Users anzeigen)
|
||
- `operator`: Users/ACL/Tokens verwalten
|
||
- `admin`: zusätzlich Admins/Audit verwalten
|
||
|
||
## Konfiguration (Env/Flags)
|
||
|
||
- `NTFYWUI_LISTEN` (Default `:8080`)
|
||
- `NTFYWUI_BASE_PATH` (z.B. `/ntfywui`)
|
||
- `NTFYWUI_DATA_DIR` (Default `/data`) – `admins.json`, `audit.jsonl`
|
||
- `NTFYWUI_SECRET` (required)
|
||
- `NTFYWUI_COOKIE_SECURE` (Default `true`)
|
||
- `NTFYWUI_TRUST_PROXY` (CIDRs, z.B. `10.0.0.0/8,172.16.0.0/12`)
|
||
- `NTFYWUI_NTFY_BIN` (Default `/usr/bin/ntfy`)
|
||
- `NTFYWUI_NTFY_CONFIG` (Default `/etc/ntfy/server.yml`)
|
||
- `NTFYWUI_NTFY_TIMEOUT` (Default `10s`)
|
||
- Bootstrap:
|
||
- `NTFYWUI_BOOTSTRAP_USER`
|
||
- `NTFYWUI_BOOTSTRAP_PASS`
|
||
|
||
## Limitierungen
|
||
|
||
- Das UI parst die Textausgabe von `ntfy user list` / `ntfy token list` best-effort.
|
||
- Für sehr große Auth-DBs kann `Audit Tail` (einfaches File-Read) angepasst werden.
|
||
|
||
## Lizenz
|
||
|
||
MIT – mach damit was du willst.
|