docs: Subdomain assistent.linix.de -> va.linix.de umbenannt

Kuerzer und ohne die Verwechslungsgefahr assistent/assistant (de/en).
nginx-Vorlage umbenannt + alle Referenzen in deploy/README.md angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-18 05:35:16 +02:00
commit 959f0ff8f8
2 changed files with 9 additions and 9 deletions

View file

@ -1,7 +1,7 @@
# Remote-Betrieb über YunoHost (assistent.linix.de)
# Remote-Betrieb über YunoHost (va.linix.de)
Web-UI + Mikrofon vom Handy/Browser, abgesichert per HTTPS und YunoHost-SSO.
Topologie: `https://assistent.linix.de` → nginx@YunoHost (TLS, SSO) → über LAN →
Topologie: `https://va.linix.de` → nginx@YunoHost (TLS, SSO) → über LAN →
`http://<GPU-Box>:8003` (Gateway). Der interne LAN-Hop ist unverschlüsselt
(vertrautes LAN, wie bei Ollama).
@ -32,10 +32,10 @@ Topologie: `https://assistent.linix.de` → nginx@YunoHost (TLS, SSO) → über
werden verworfen (siehe nginx-Conf). App-seitig zusätzlich der Proxy-IP-Check.
## 3. nginx auf YunoHost
`deploy/assistent.linix.de.nginx.conf` als Vorlage → auf dem YunoHost-Server unter
`/etc/nginx/conf.d/assistent.linix.de.d/assistant.conf` ablegen, `GPU_BOX_LAN_IP`
`deploy/va.linix.de.nginx.conf` als Vorlage → auf dem YunoHost-Server unter
`/etc/nginx/conf.d/va.linix.de.d/assistant.conf` ablegen, `GPU_BOX_LAN_IP`
eintragen, die `map $http_upgrade …` einmalig im http{}-Kontext anlegen, dann
`nginx -t && systemctl reload nginx`. Subdomain `assistent.linix.de` in YunoHost
`nginx -t && systemctl reload nginx`. Subdomain `va.linix.de` in YunoHost
anlegen (Let's Encrypt) und per SSO schützen (nur erlaubte Tester/Gruppe).
## 4. Discovery: richtigen Identitäts-Header bestimmen
@ -43,7 +43,7 @@ anlegen (Let's Encrypt) und per SSO schützen (nur erlaubte Tester/Gruppe).
Gateway den SSO-Admin zu diesem Zeitpunkt noch nicht kennt (Henne-Ei), den Admin-Key
als Query mitgeben:
```
https://assistent.linix.de/api/admin/request-headers?key=<ADMIN_API_KEY>
https://va.linix.de/api/admin/request-headers?key=<ADMIN_API_KEY>
```
In der Ausgabe den Header finden, der den eingeloggten SSO-Usernamen trägt (z. B.
`X-Remote-User`, `Remote-User`, `Auth-User`, oder `Authorization: Basic …` mit dem
@ -52,6 +52,6 @@ Usernamen). Diesen Namen in `TRUSTED_AUTH_HEADER` **und** in der nginx-`proxy_se
(landet in Proxy-Logs) bzw. den Key rotieren.
## 5. Test
- `https://assistent.linix.de/` lädt die UI, links „Angemeldet als <SSO-User>".
- `https://va.linix.de/` lädt die UI, links „Angemeldet als <SSO-User>".
- Text-Chat funktioniert; **Mikrofon-Button** nimmt auf und spielt die Antwort ab.
- Admins (`ADMIN_USERS`) sehen den Admin-Bereich (Nutzerliste).

View file

@ -0,0 +1,42 @@
# Reverse-Proxy fuer die Voice-Assistant-Web-UI auf einem YunoHost-Server.
#
# Ziel: https://va.linix.de -> http://<GPU_BOX_LAN_IP>: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/va.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
}