# ════════════════════════════════════════════════════════ # 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 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" - "443: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: