e82e07e3a2
- WakeWord Doppel-Trigger: detectionInProgress-Guard gegen Native-Event- Race + setBackground/setForeground statt setResumeCooldown im AppState. - Media-Pause beim App-Oeffnen: 1.5s Startup-Suppression im Kotlin emitDetected() — Mikro-Spin-up-Spike triggert kein false-positive mehr. - Spotify Fast-Path im Brain: einfache Media-Commands (naechster Track, pause, play, lauter, ...) matchen via Regex und gehen direkt aufs spotify-Skill statt durch Claude. ~1.5s statt 5-10s pro Befehl. - File-Limit auf 1 GB hochgezogen (war 70 MB). RVS maxPayload + Bridge max_size auf 1500 MB; Node-Heap im RVS-Container auf 4 GB. - TriggerBrowser / Datei-Manager Connection-Refused: brainApi._send fast-failt bei disconnected RVS statt 30s zu timeouten, und beide UIs reloaden automatisch beim Reconnect-Event. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
57 lines
2.2 KiB
YAML
57 lines
2.2 KiB
YAML
# ════════════════════════════════════════════════════════
|
|
# ARIA RVS Stack — WebSocket Relay + OAuth Callback HTTP
|
|
# Caddy davor terminiert TLS via Let's Encrypt (HTTP-01
|
|
# Challenge ueber Port 80). OAuth-Provider wie Spotify
|
|
# verlangen HTTPS fuer non-localhost Redirect-URIs.
|
|
# ════════════════════════════════════════════════════════
|
|
#
|
|
# Voraussetzungen:
|
|
# - Port 80 + 443 frei (kein anderer Reverse-Proxy davor)
|
|
# - Domain (PUBLIC_URL) zeigt per DNS auf diese Maschine
|
|
# - .env mit PUBLIC_URL gesetzt
|
|
#
|
|
# Start: docker compose up -d
|
|
# Wenn Du einen eigenen TLS-Terminator nutzt (z.B. nginx,
|
|
# externer Caddy): caddy-service auskommentieren und
|
|
# rvs-Container den ports-Block geben (3000 → public Port).
|
|
|
|
services:
|
|
rvs:
|
|
build: .
|
|
restart: always
|
|
# KEIN ports-Block — Caddy ist davor, RVS nur intern
|
|
# via aria-rvs-net erreichbar. Wenn Du Caddy nicht nutzt,
|
|
# diesen ports-Block reaktivieren: ports: ["${RVS_PORT:-443}:3000"]
|
|
volumes:
|
|
- ./updates:/updates # APK-Dateien fuer Auto-Update
|
|
environment:
|
|
- MAX_SESSIONS=10
|
|
# 4 GB V8-Heap — sonst OOM beim Empfang von 1 GB-Files
|
|
# (base64 inflated ~1.34 GB plus WS-Frame-Margin).
|
|
- NODE_OPTIONS=--max-old-space-size=4096
|
|
networks:
|
|
- aria-rvs-net
|
|
|
|
# TLS-Terminator + Let's Encrypt. Holt automatisch ein Zertifikat
|
|
# fuer ${PUBLIC_URL} (HTTP-01 Challenge ueber Port 80). WebSocket-
|
|
# Upgrades und HTTP-Routes (OAuth-Callback) werden im reverse-proxy
|
|
# Modus automatisch durchgereicht. ACME-Cache liegt in ./data/caddy/
|
|
# damit Restart nicht jedes Mal ein neues Cert holt (Rate-Limit!).
|
|
caddy:
|
|
image: caddy:latest
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "444:443"
|
|
command: caddy reverse-proxy --from ${PUBLIC_URL} --to rvs:3000
|
|
volumes:
|
|
- ./data/caddy/data:/data # Zertifikate (PERSISTENT)
|
|
- ./data/caddy/config:/config # Caddy-Config-Cache
|
|
depends_on:
|
|
- rvs
|
|
networks:
|
|
- aria-rvs-net
|
|
|
|
networks:
|
|
aria-rvs-net:
|