feat(web): Remote-Web-UI mit Mikrofon + Forward-Auth (YunoHost-SSO)
- Minimale Web-UI (app/web/, vanilla, same-origin -> kein CORS): Text-Prompt + Mikrofon-Button (Aufnahme im Browser -> /ws/voice -> Antwort wird vorgelesen), Token-Streaming, PCM-Wiedergabe, Identitaet/Logout/Admin im Menue - Forward-/Trusted-Header-Auth (app/auth.py): Identitaet aus SSO-Header, nur von TRUSTED_PROXY_IPS akzeptiert; sonst Token/Anonymous-Fallback. Auto-Provisioning via store.get_or_create_user_by_external_id (+ external_id-Spalte/Migration) - /api/me um is_admin + sso_logout_url erweitert; GET /api/admin/users (Liste) und GET /api/admin/request-headers (SSO-Header-Discovery), Admin-gated - StaticFiles-Mount; Config: TRUSTED_AUTH_HEADER/_PROXY_IPS, ADMIN_USERS, SSO_LOGOUT_URL - WS-Auth liest Identitaet aus dem Handshake-Header - Deploy: nginx-Vorlage (WS-Upgrade!) + deploy/README.md (HTTPS/SSO/Firewall/Discovery) - Tests: Forward-Auth (Provisioning, Admin-Flag, Proxy-IP-Trust, 401/403, Static) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
855fc71a1e
commit
76df695111
16 changed files with 703 additions and 29 deletions
|
|
@ -1,12 +1,22 @@
|
|||
HOST=0.0.0.0
|
||||
PORT=8080
|
||||
# Nur an die LAN-IP binden (NICHT 0.0.0.0), erreichbar allein fuer den Reverse-Proxy.
|
||||
HOST=192.168.0.50 # <-- LAN-IP der GPU-Box
|
||||
PORT=8003
|
||||
OPENROUTER_API_KEY=
|
||||
|
||||
# Profil und Konfiguration
|
||||
VA_PROFILE=cloud
|
||||
|
||||
# Authentifizierung (Produktion: an). ADMIN_API_KEY fuer die Nutzerverwaltung.
|
||||
# Authentifizierung (Produktion: an). ADMIN_API_KEY fuer die Nutzerverwaltung (Fallback).
|
||||
AUTH_ENABLED=true
|
||||
ADMIN_API_KEY=
|
||||
|
||||
# --- Forward-/Trusted-Header-Auth via YunoHost-SSO ---------------------------
|
||||
# Nach der Discovery (GET /api/admin/request-headers hinter dem SSO) den echten
|
||||
# Header-Namen eintragen. Identitaet wird nur von der Proxy-Quell-IP akzeptiert.
|
||||
TRUSTED_AUTH_HEADER=X-Remote-User
|
||||
TRUSTED_PROXY_IPS=192.168.0.10 # <-- LAN-IP des YunoHost-Servers (linix.de)
|
||||
ADMIN_USERS=atoor,dieterschlueter,dschlueter
|
||||
SSO_LOGOUT_URL=https://linix.de/yunohost/sso/?action=logout
|
||||
|
||||
# Persistente Datenbank (Pfad auf dem Host)
|
||||
DB_PATH=/var/lib/voice-assistant/voice-assistant.db
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue