docs+install: vollständiger Installer + aktuelle README

Mac-Worker:
- install-launchagent.sh legt jetzt selbst venv + Dependencies an, statt
  das vorauszusetzen — ein Befehl reicht für komplette Erstinstallation
- modernes launchctl bootout/bootstrap/kickstart statt unload/load
  (alte Variante wirft auf neueren macOS-Versionen "Input/output error 5")
- neuer Sub-Befehl "restart" zum Neustarten ohne Reinstall
- neues update.sh: git pull + pip install + kickstart + Health in einem Schritt

LXC:
- install.sh ALLOWED_EXTS-Check verhindert wiederholtes ",webm"-Anhängen
- bessere Abschluss-Ausgabe mit echter Host-IP, Update-Anweisung, Diagnose-Hinweis

Docs:
- Haupt-README: aktueller Funktionsstand (Auth, PDF, Profile, Mobile/PWA,
  Diagnose, Retry alle als done markiert), Installation auf neuen Stand gebracht
- Profile-Tabelle mit allen 17 Profilen
- API-Listen vervollständigt (diag, preload, log, pdf, profiles)
- Datenfluss-Skizze mit Preload + Heartbeat + X-Job-Id beschrieben

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
root
2026-05-14 20:36:35 +00:00
co-authored by Claude Opus 4.7
parent f408a555f8
commit bc497a1665
6 changed files with 390 additions and 174 deletions
+34 -16
View File
@@ -52,9 +52,10 @@ elif ! grep -q "^SESSION_SECRET=" "$APP_DIR/lxc-frontend/.env"; then
echo " SESSION_SECRET nachgetragen."
fi
# ALLOWED_EXTS sicherstellen, dass 'webm' für Browser-Aufnahmen drin ist
# ALLOWED_EXTS sicherstellen, dass 'webm' für Browser-Aufnahmen drin ist.
# Wortgrenzen-Check verhindert dabei wiederholtes Anhängen.
if grep -q "^ALLOWED_EXTS=" "$APP_DIR/lxc-frontend/.env"; then
if ! grep -E "^ALLOWED_EXTS=.*\bwebm\b" "$APP_DIR/lxc-frontend/.env" >/dev/null; then
if ! grep -Eq "^ALLOWED_EXTS=([^,]*,)*webm(,|$)" "$APP_DIR/lxc-frontend/.env"; then
sed -i 's|^ALLOWED_EXTS=\(.*\)$|ALLOWED_EXTS=\1,webm|' "$APP_DIR/lxc-frontend/.env"
echo " ALLOWED_EXTS um 'webm' ergänzt (für Mikrofon-Aufnahmen)."
fi
@@ -111,23 +112,40 @@ exec sudo -u deploy /var/www/voice-agent/lxc-frontend/.venv/bin/python \
WRAPPER
chmod 0755 /usr/local/bin/voice-agent-admin
HOST_IP_NOW="$(hostname -I 2>/dev/null | awk '{print $1}')"
echo
echo "Fertig. Health-Check:"
echo " curl -sk https://localhost/health"
echo "════════════════════════════════════════════════════════════════════"
echo " Voice-Agent LXC-Installation FERTIG"
echo "════════════════════════════════════════════════════════════════════"
echo
echo "Aufruf im Browser: https://<LXC-IP>/ (HTTP wird auf HTTPS umgeleitet)"
echo "Beim ersten Aufruf wird der initiale Admin angelegt."
echo "Web-UI: https://${HOST_IP_NOW}/ (HTTP wird auf HTTPS umgeleitet)"
echo "Health: curl -sk https://localhost/health"
echo
echo "── Mikrofon-Aufnahme von Handys ──────────────────────────────────────"
echo "Damit iOS/Android das Mikrofon freigibt, MUSS die Seite über HTTPS laufen."
echo "Das selbst-signierte Zertifikat einmalig auf jedem Gerät installieren:"
echo "── Erst-Inbetriebnahme ──────────────────────────────────────────────"
echo " 1) MAC_API_URL in $APP_DIR/lxc-frontend/.env auf die IP des Mac-Workers setzen"
echo " und 'sudo systemctl restart voice-agent' ausführen."
echo " 2) Browser öffnen — beim allerersten Aufruf wird der initiale Admin angelegt."
echo
echo " iPhone: Safari öffnen, http://<LXC-IP>/ssl/voice-agent.crt aufrufen"
echo " → Profil herunterladen → Einstellungen → Profil installieren"
echo " → Allgemein → Info → Zertifikatsvertrauen → 'voice-agent' aktivieren"
echo "── Benutzer / Passwort ──────────────────────────────────────────────"
echo " voice-agent-admin list # alle User"
echo " voice-agent-admin create maria 'StartPasswort123' # neuer User"
echo " voice-agent-admin reset admin 'NeuesPasswort123' # Passwort zurücksetzen"
echo
echo " Android: Browser öffnen, http://<LXC-IP>/ssl/voice-agent.crt aufrufen"
echo " → Cert installieren als 'VPN/Apps' (Variiert je nach Hersteller)"
echo "── Mikrofon-Aufnahme von Handys (PWA) ───────────────────────────────"
echo " iOS/Android brauchen HTTPS. Selbst-signiertes Cert einmalig installieren:"
echo " iPhone: Safari → http://${HOST_IP_NOW}/ssl/voice-agent.crt"
echo " → Profil installieren → Einstellungen → Allgemein → Info"
echo " → Zertifikatsvertrauen → 'voice-agent' aktivieren"
echo " Android: Browser → http://${HOST_IP_NOW}/ssl/voice-agent.crt installieren"
echo
echo "Falls noch nicht geschehen: MAC_API_URL in $APP_DIR/lxc-frontend/.env setzen"
echo "und Service neu starten: sudo systemctl restart voice-agent"
echo "── Update auf neueste Version ───────────────────────────────────────"
echo " sudo $APP_DIR/deploy/install.sh # idempotent — pullt + restartet"
echo
echo "── Diagnose / Troubleshooting ───────────────────────────────────────"
echo " Service-Status: systemctl status voice-agent"
echo " Live-Log: journalctl -u voice-agent -f"
echo " Mac erreichbar? curl -sk https://localhost/api/mac/health"
echo " Pro Job in der UI: Button 'Diagnose ▾' öffnet Mac-Worker-Log live"
echo