Поднята версия до 0.0.2 (VERSION, .env.example, docker-compose дефолт).
Добавлен CHANGELOG.md с описанием изменений 0.0.1 → 0.0.2: харденинг
безопасности (порты на loopback, redis requirepass), перенос конфигов
деплоя в репозиторий (TLS-443, шаблоны, --env-file), fail-fast install.sh,
руководство docs/deploy/DEPLOYMENT.md.
Redis without a password was the root cause of the security incident
(cron miner via unauthenticated replication RCE, see
.forcc/deploy/SESSION2-FINDINGS.md). Loopback binding alone doesn't
protect against a compromised container inside the same compose
network, so wire REDIS_PASSWORD as a required secret everywhere redis
is used: backend/worker/worker-transcriber(-gpu), redis-exporter,
livekit and egress (via rendered templates). docker compose now
refuses to start without it instead of silently running unauthenticated.
Close host-published ports that don't need to be reachable from outside
the docker network: nginx already proxies backend/livekit by service
name, and admin UIs (prometheus/grafana) and llm servers should only be
reachable via SSH tunnel. Only 80/443/7881 + the WebRTC UDP range stay
open to the internet.
The client receives this value as the LiveKit serverUrl (via join.livekit_url).
A ws:// value on an https page is blocked as mixed content, so conferences
never connect — the exact failure hit on vidconf.ru, where the runtime value
had fallen back to the ws://localhost:7880 default. Spell out the prod
requirement (wss://<domain>/livekit/) next to the placeholder.
Добавлены плейсхолдеры для всех переменных, введённых хардненингом деплоя
(NGINX_SERVER_NAMES/NGINX_CERT_NAME, LIVEKIT_USE_EXTERNAL_IP/LIVEKIT_NODE_IP,
TURN_EXTERNAL_IP) — generic-значения (example.com/127.0.0.1/false), реальные
домены/IP боевой инсталляции задаются в .env вручную и install.sh их не
перезапишет.
COMPOSE_PROFILES по умолчанию — media,monitoring (только для ручного
`docker compose up` без install.sh): убирает ресурсоёмкие transcribe/llm
из дефолтного набора, install.sh продолжает выставлять профили по
выбранному пресету инсталлятора независимо от этого дефолта.
Добавлены MEDIA_URL/VITE_API_URL/VITE_LIVEKIT_URL/NEXT_PUBLIC_LIVEKIT_URL —
присутствуют в .env боевого сервера, но не читаются текущим кодом
(задокументировано как есть, для полноты покрытия реальных ключей).