CaseMeeting

// Видеоконференции //// Self-hosted //// WebRTC //// Monorepo //// Microservices //// White-label SaaS //// Multi-tenancy //// SAML SSO //// Jitsi Fork //// Whisper //
casemeetyane

CaseMeeting (cosmeet.ru) — корпоративная платформа видеоконференций. Self-hosted, полностью ребрендирована, с собственным API, мобильными приложениями и интеграциями с COSCIO, Mattermost, Bitrix24, 1С. Возникла как форк Jitsi Meet, но за 9 фаз де-jitsификации (фазы A–I, завершены в апреле 2026) переведена на собственные wire-namespaces `cosmeet.ru/*`, собственные Java/Kotlin-форки JVB и Jicofo, собственные Lua-плагины Prosody. С мая 2026 Docker-образы собираются через многоэтапный Maven-build из собственных исходников. Зависимостей от upstream Jitsi на уровне runtime больше нет.

Проблема и контекст

Российский B2B-сектор оказался зажат между Zoom (заблокирован, не работает с корпоративными e-mail), MS Teams (не подходит для внешних коммуникаций и не интегрируется с локальными системами) и универсальными SaaS-решениями (платно, без white-label, без контроля над данными). Self-hosted Jitsi даёт основу, но не даёт собственного бренда, мобильных приложений и интеграций с корпоративной экосистемой. CaseMeeting закрывает эти пробелы: собственный домен и брендинг с runtime-кастомизацией через URL, собственные iOS и Android приложения (Obj-C и Java), глубокие интеграции с COSCIO, Mattermost, Bitrix24 и 1С, multi-tenant SaaS-режим, biling с overage-расчётами для партнёров white-label.

Архитектура монорепо

Платформа собрана как монорепо с двумя слоями. Первый — переименованный Jitsi-стек: `cosmeet-web` (React+SCSS, 80+ Redux-фич), `lib-cosmeet` (WebRTC/XMPP SDK, замена `lib-jitsi-meet`), `cosmeet-videobridge` (Java/Kotlin SFU с Octo cascading), `cosmeet-jicofo` (Kotlin conference focus), `cosmeet-xmpp-extensions` (общие XMPP IQ-классы переведены на cosmeet.ru-namespaces), `prosody` с 8 собственными `mod_cosmeet_*` Lua-плагинами (webhooks, audit, compliance_recording, watermark, webinar, ldap_roles, session, permissions). Второй слой — собственные пакеты в `packages/*`.

10 пакетов в packages/*

  • packages/api — Express 5 + Prisma 6 + PostgreSQL 16, REST-ядро со всеми CRUD (users, rooms, meetings, recordings, transcripts, push, billing, partners, webinar, integrations), JWT с audience-based валидацией, HMAC-webhook-верификация, push через FCM + APNs
  • packages/admin — Vite + React 18 + TypeScript, админ-панель управления tenant-ами, пользователями, комнатами, встречами и брендингом, развёрнута на admin.cosmeet.ru
  • packages/embed-sdk — TypeScript SDK @cosmeet/embed для встраивания через iframe, обёртка над External API с типизированным интерфейсом
  • packages/server-sdk — Node.js SDK @cosmeet/server-sdk для серверной генерации JWT и embed-кода
  • packages/saml-proxy — SAML 2.0 Service Provider на saml.cosmeet.ru, валидация assertion от ADFS / Okta / Keycloak / Azure AD, маппинг ролей в moderator-флаг JWT
  • packages/coscio-integration — Next.js drop-in для COSCIO, React-компоненты <CosMeetMeeting/> и <StartMeetingButton/>, webhook-обработчик
  • packages/bitrix24-integration — приложение для Битрикс24 с placement CRM-button на карточках, OAuth и crm.activity.add с joinUrl
  • packages/mattermost-plugin — Go server + React webapp для Mattermost: slash-команда /cosmeet, кнопка в header канала, JWT и HMAC-webhook
  • packages/recorder-worker — серверная запись per-track без Jibri (Level 2, в разработке): JVB-плагин пишет RTP → FFmpeg композиция → S3
  • docker-cosmeet — Docker Compose с многоэтапными Maven-сборками собственных Java-форков, overlays для Whisper, multi-JVB, LDAP, Etherpad

Ключевые фичи

  • Полная de-jitsификация: 88 XMPP URI и 15 Kotlin Features переведены на cosmeet.ru-namespaces, собственные wire-protocol
  • Multi-tenancy с per-tenant брендингом (логотип, цвета, домен), TenantApiToken для API-доступа
  • JWT-auth HS256 с audience-валидацией: conference JWT (aud=cosmeet) и admin JWT разделены — privilege-escalation невозможен
  • Cloud recording двух уровней: Level 1 (client-side MediaRecorder → S3) готов, Level 2 (per-track server-side через JVB-плагин и FFmpeg) в разработке
  • Транскрипция через Whisper API с экспортом в JSON / VTT / SRT / TXT
  • Webinar mode с Q&A и upvotes, moderator-ответами, трекингом peak visitors
  • White-label SaaS с биллингом (Plans, Subscriptions, UsageCounter — storage bytes, minutes, participant-seconds, overage-расчёты), Partner + PartnerPayout
  • Multi-JVB cascading через Octo relay (UDP :4096..4098), Jicofo выбирает bridge по stress + region
  • Watermark с per-tenant policy через endpoint, HMAC-верификация, CSS mix-blend-mode: difference
  • Dynamic branding через URL-параметры — runtime-кастомизация interface_config, логотипов, палитры без пересборки

Безопасность

Timing-safe сравнение HMAC через `timingSafeEqual`, partner token хранится как SHA-256 (rawToken выдаётся один раз). JWT с audience-validation — conference JWT (aud=cosmeet) отвергается при admin-запросе. LDAP injection protection через RFC 4515 `ldap_escape()` с LRU-кэшем (eviction MAX=5000). CORS whitelist через `CORS_ALLOWED_ORIGINS` env (пустой = deny всё). 1С-интеграция через Basic Auth с `timingSafeEqual`. SAML с `wantAssertionsSigned=true` и regex-санитизацией room name. Supply chain — pinned `VERSION_PROSODY_CONTRIB_PLUGINS=v20260306` с SHA-256 checksum для luarocks. AbortController с таймаутом 10 сек для webhook POST. Bcrypt 12 rounds для паролей, секреты только в `.env`.

Production и инфраструктура

Production-инстанс работает на cosmeet.ru (109.73.203.91), Docker Compose с семью контейнерами на проде: cosmeet-web (nginx, 443), cosmeet-api (Express, 3100), cosmeet-postgres (PostgreSQL 16), cosmeet-prosody (XMPP, 5280 WS), cosmeet-jicofo, cosmeet-jvb (UDP 10000), cosmeet-whisper (whisper-asr-webservice, опционально). Node.js >= 24, JDK 11+ для Kotlin/Java компонент, Prosody contrib plugins pinned v20260306. Кодовая база ~510k LOC (TypeScript + Kotlin + Java + Lua), 3496 файлов, 9 компонентов Jitsi-стека и 10 собственных пакетов. Последний major-апдейт 2026-05-07: полная de-jitsификация с новыми Dockerfile.cosmeet и собственными Java forks. 15+ коммитов за апрель–май 2026 с security-fix'ами (authMiddleware, partner token hash, CORS, LDAP injection), admin-панелью, интеграциями, транскрипцией.

CosMeet — корпоративная платформа видеоконференций. Self-hosted, полный собственный бренд, свои мобильные приложения. Цель — заменить Zoom и Teams для корпоративных клиентов COS.
// Начнём сотрудничество //
Олег Чернышов
+
Вы

Обсудим вашу задачу?

Расскажите о ситуации в компании — вместе определим, чем могу быть полезен и с чего начать.

Контакты