Neu in rvs/.env: COMPOSE_PROFILES=caddy (wie bisher, Caddy macht TLS) oder leer (ohne Caddy). Der RVS bietet dafuer immer einen unverschluesselten Port an (RVS_HTTP_BIND:RVS_HTTP_PORT, Default 127.0.0.1:3000), auf den ein vorhandener nginx/Traefik zeigt — statt nginx → Caddy → RVS mit doppeltem TLS. Caddys HTTPS-Port ist jetzt CADDY_HTTPS_PORT (Default 444 wie bisher). README: beide Modi, nginx-Vorlage mit WebSocket-Headern und IPv6, Hinweis dass Caddy fuer die Zertifikats-Erneuerung Port 80 von aussen braucht. Bestehende Installationen mit Caddy muessen COMPOSE_PROFILES=caddy eintragen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
62 lines
2.6 KiB
YAML
62 lines
2.6 KiB
YAML
# ════════════════════════════════════════════════════════
|
|
# ARIA RVS Stack — WebSocket Relay + OAuth Callback HTTP
|
|
# Apps/Satelliten/Boxen brauchen TLS (wss://), OAuth-Provider
|
|
# wie Spotify HTTPS. Wer TLS macht, waehlt die .env:
|
|
#
|
|
# A) COMPOSE_PROFILES=caddy — Caddy hier im Stack holt das
|
|
# Zertifikat selbst (Let's Encrypt, HTTP-01 ueber Port 80).
|
|
# Voraussetzung: Port 80 + CADDY_HTTPS_PORT von aussen auf
|
|
# diese Maschine, PUBLIC_URL zeigt per DNS hierher.
|
|
#
|
|
# B) COMPOSE_PROFILES= — OHNE Caddy. Ein vorhandener
|
|
# Reverse-Proxy (nginx, Traefik, ...) macht TLS und zeigt auf
|
|
# den unverschluesselten RVS-Port (RVS_HTTP_BIND:RVS_HTTP_PORT).
|
|
# nginx-Beispiel: README → RVS → "Ohne Caddy".
|
|
# ════════════════════════════════════════════════════════
|
|
#
|
|
# Start: docker compose up -d
|
|
|
|
services:
|
|
rvs:
|
|
build: .
|
|
restart: always
|
|
# Unverschluesselter RVS-Port fuer einen externen Reverse-Proxy (Modus B).
|
|
# Default nur 127.0.0.1 — steht der Proxy auf einem ANDEREN Rechner,
|
|
# RVS_HTTP_BIND=0.0.0.0 (oder die interne IP) setzen und den Port per
|
|
# Firewall nur fuer den Proxy freigeben: hier laeuft alles im Klartext.
|
|
ports:
|
|
- "${RVS_HTTP_BIND:-127.0.0.1}:${RVS_HTTP_PORT:-3000}: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
|
|
profiles: ["caddy"] # nur mit COMPOSE_PROFILES=caddy
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "${CADDY_HTTPS_PORT:-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:
|