# Reverse-Proxy fuer die Voice-Assistant-Web-UI auf einem YunoHost-Server. # # Ziel: https://assistent.linix.de -> http://:8003 (Gateway im LAN) # YunoHost terminiert TLS (Let's Encrypt) und schuetzt die Subdomain per SSO. # # Ablage auf dem YunoHost-Server (Beispiel): # /etc/nginx/conf.d/assistent.linix.de.d/assistant.conf # danach: nginx -t && systemctl reload nginx # # WICHTIG (Unterschied zu Ollama): WebSockets (/ws/voice, /ws/chat) brauchen die # Upgrade-Header und einen langen read-timeout - sonst bricht der Mikrofon-Button. # --- einmalig im http{}-Kontext (z. B. /etc/nginx/conf.d/websocket-upgrade.conf) --- # map $http_upgrade $connection_upgrade { # default upgrade; # '' close; # } location / { proxy_pass http://GPU_BOX_LAN_IP:8003; # <-- LAN-IP der GPU-Box eintragen proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket-Upgrade (zwingend fuer das Mikrofon): proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_read_timeout 3600s; proxy_send_timeout 3600s; # Identitaets-Header: SSOwat setzt die Nutzeridentitaet. Nach der Discovery # (GET /api/admin/request-headers hinter dem SSO) den richtigen Namen hier # FEST setzen und Client-Spoofing verwerfen. Beispiel, wenn SSO $remote_user # bereitstellt (Name ggf. anpassen): # # proxy_set_header X-Remote-User $remote_user; # # In der Gateway-Konfiguration dann: TRUSTED_AUTH_HEADER=X-Remote-User }