deploy: require redis auth (--requirepass) across all consumers

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.
This commit is contained in:
2026-07-25 22:59:34 +03:00
parent d593add0f3
commit 5e42f6d11b
9 changed files with 77 additions and 15 deletions

View File

@@ -5,7 +5,16 @@ POSTGRES_DB=vidconf
DATABASE_URL=postgresql+asyncpg://vidconf:vidconf@localhost:5432/vidconf
# --- Redis ---
REDIS_URL=redis://localhost:6379/0
# Обязателен (${REDIS_PASSWORD:?} в docker-compose.yml) — redis запускается
# с --requirepass, публикация без пароля = открытый redis в интернет (см.
# .forcc/deploy/SESSION2-FINDINGS.md — реальный инцидент на этом проекте).
# install.sh генерирует случайное значение при первой установке.
REDIS_PASSWORD=change-me-redis-secret
# REDIS_URL нужен ТОЛЬКО для запуска backend/worker на хосте вне docker-сети
# (см. docs/deploy/dev-setup.md) — внутри контейнеров docker-compose.yml
# всегда подставляет redis://:${REDIS_PASSWORD}@redis:6379/0 сам, это
# значение игнорируя. Держите пароль в этой строке синхронным с REDIS_PASSWORD.
REDIS_URL=redis://:change-me-redis-secret@localhost:6379/0
# --- Seed admin user ---
SEED_ADMIN_EMAIL=admin@vidconf.example