Sixteen containers: MongoDB, Valkey, RabbitMQ, MinIO and eleven Stoat services. Servers, channels, roles and voice/video through LiveKit — the nearest thing in the catalogue to Discord itself, at the price of being much the heaviest app in it. Does not federate. The compose service keys are deliberately kept identical to upstream's (database, redis, api, autumn, ...) while container_name is prefixed stoat-. Compose registers both on the network, so upstream's internal defaults keep resolving and LibrePortal still gets the prefixed names its port, firewall and backup layers key on. Upstream's Caddy is kept as the internal path router and Traefik simply proxies to it, which is upstream's own supported behind-a-reverse-proxy mode — reimplementing eight path routes as Traefik labels would be a second copy to keep in sync for nothing. The install hook is a non-interactive port of generate_config.sh, and it never rewrites an existing secrets.env: REVOLT__FILES__ENCRYPTION_KEY decrypts every file ever uploaded, so regenerating it would orphan the whole media store. LiveKit's UDP media range is published literally rather than through the port table, because the firewall rebuild emits /tcp rules only and a range declared there would produce a wrong rule rather than no rule. Voice falls back to TCP 7881 until the range is opened by hand; the post-install notice says so. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2 lines
440 B
XML
2 lines
440 B
XML