Threaden — вокруг меня крутятся токены
Требуются Docker Compose, Go 1.26+ для локальных backend-проверок и Node.js 20.19+, 22.12+ или 24+ для Angular web-клиента.
./start.shПриложение откроется на http://127.0.0.1:4200. Для локальной разработки
используется единый IPv4 loopback-origin: это не даёт Firefox смешивать
IPv6-origin страницы с IPv4 WebRTC/LiveKit endpoint. Подробности находятся в
backend/README.md, web-client/README.md
и deploy/README.md.
Групповые сообщения поддерживают до трёх вложений с необязательной подписью, включая готовые аудиофайлы и голосовые записи из браузера длительностью до пяти минут. Обработанные фото и видео ограничены 1 МБ, аудио и прочие медиа проходят текущий входной лимит, архивы — 5 МБ, активная квота пользователя — 50 МБ. Для аккаунтов младше 24 часов действует временная квота 20 МБ и суточный лимит 20 МБ; после первых суток суточного лимита нет. Все вложения, включая аудио, автоматически удаляются через 72 часа.
Демонстрация экрана (три capture-профиля, диагностика и production-порты)
описана в docs/screen-sharing.md.
Для production Linux/systemd используйте threadenctl.sh:
sudo ./threadenctl.sh doctor
sudo ./threadenctl.sh start
sudo ./threadenctl.sh statusКоманды recovery, restart, stop|shutdown, выбор --backend, --web и
--livekit описаны в deploy/SYSTEMD.md. Обычный
restart только перезапускает сервисы; для полной пересборки используйте
restart --full.
Проверка архитектурных лимитов исходников выполняется командой:
./scripts/verify-source-limits.sh- браузерная сессия хранится в
HttpOnly,SameSite=Strictcookie; - сессии имеют абсолютный и idle TTL и отзываются сервером при logout;
- пароли принимаются длиной 6–72 символа и хешируются bcrypt;
- временные комнаты используют 130-битные непредсказуемые коды;
- аватары проверяются по MIME и размерам до полного декодирования;
- discover имеет лимиты запроса и пагинацию;
- rate limiting разделён по IP, сессии и пользователю без общего anonymous bucket.
Не коммитьте .env, production-секреты, базы, node_modules, dist или
собранные бинарники. Для сообщения об уязвимости не создавайте публичный issue:
свяжитесь с владельцем репозитория приватно.
GPL-3.0. См. LICENSE.