diff --git a/.env.example b/.env.example index 8321611..cb142d4 100644 --- a/.env.example +++ b/.env.example @@ -112,7 +112,7 @@ SMTP_TIMEOUT_S=30 # --- Версия инстанса (релиз v0.0.1) --- # install.sh копирует значение из корневого файла VERSION при каждой # установке/обновлении — руками менять не нужно. -VIDCONF_VERSION=0.0.16 +VIDCONF_VERSION=0.0.17 # --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного # `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг, diff --git a/CHANGELOG.md b/CHANGELOG.md index 31fbb15..9454374 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,27 @@ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), проект придерживается [семантического версионирования](https://semver.org/lang/ru/). +## [0.0.17] — 2026-08-01 + +Массовый вход в систему и в конференцию перестаёт упираться в проверку пароля. + +### Исправлено +- Проверка пароля больше не останавливает весь backend. Хэширование argon2 — + это десятки миллисекунд счёта, и выполнялось оно синхронно внутри + асинхронного обработчика: пока считался один пароль, процесс не обслуживал + ничего другого. На нагрузочном тесте 31.07 с примерно семью десятками + одновременных входов это дало p95 логина 7.28 секунды, p95 входа в + конференцию 7.06 секунды и 33 соединения к базе, висящих в открытой + транзакции при одном активном запросе. Страдали и посторонние запросы — + вход в конференцию отказывал, хотя пароль там не проверялся вовсе. + Теперь хэширование считается в пуле потоков. +- Параметры argon2id приведены к рекомендации OWASP (t=2, m=19 МБ, p=1) + вместо дефолтов библиотеки (t=3, m=64 МБ, p=4): 95 мс против 42 мс на + проверку. Прежнее значение `parallelism=4` вдобавок занимало все четыре + ядра сервера — те же, на которых работает медиа-сервер. +- Пароли, сохранённые со старыми параметрами, продолжают работать и + перевыпускаются автоматически при первом успешном входе. + ## [0.0.16] — 2026-08-01 Роль организатора в комнате: поднятие руки с очередью и принудительный мьют. diff --git a/VERSION b/VERSION index e3b86dd..cd23180 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.16 +0.0.17 diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index cc7630d..928d320 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -89,7 +89,7 @@ services: MEDIA_ROOT: ${MEDIA_ROOT:-/app/media} # Версия инстанса (релиз v0.0.1) — install.sh копирует значение # из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health. - VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.16} + VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.17} # Число процессов uvicorn (см. backend/Dockerfile). Дефолт 2 рассчитан # на 4-ядерный сервер, где ядра делятся с LiveKit. Поднимая значение, # проверьте бюджет соединений с БД: каждый воркер держит свой пул