О Lumina — self-hosted платформа видеозвонков

Lumina — это сервис защищённых видеовстреч, который вы можете использовать на lumina.su или развернуть на собственном сервере. Открытый код, end-to-end шифрование, никаких трекеров третьих сторон и никакой регистрации.

Зачем нужна ещё одна платформа видеозвонков

Корпоративные сервисы видеоконференций закрыты, требуют учётную запись, навязывают мобильные приложения, ограничивают длительность встречи и собирают неограниченную телеметрию. Для личного общения, удалённой работы и онлайн-образования всё это лишнее. Нужна платформа, где встречу можно создать за секунду, отдать ссылку собеседнику и забыть — без лимитов, без профилей, без трекеров.

Lumina сделана как раз для этого. Любой участник открывает lumina.su, нажимает «Новая встреча», получает ссылку и делится ей. Встреча работает прямо в браузере, без установки приложения — а если хотите, ставится как Progressive Web App за один клик.

Шифрование и приватность

Медиапотоки в Lumina передаются через SFU (LiveKit), а ключ шифрования генерируется в браузере и хранится во фрагменте URL (#key=…). Фрагмент URL никогда не отправляется на сервер — это базовое свойство HTTP. Поэтому сервер видит только зашифрованные пакеты и не может прослушать встречу, даже если его скомпрометируют.

Сигнальный канал, чат и сообщения о подключении проходят через наш backend на Rust (axum), но каждая запись, идущая на запись в Redis, переподписывается сервером — клиент не может подменить идентичность. Администратор сервера не имеет доступа к содержимому звонка.

Архитектура в одной картинке

  • Frontend: React 19 + TypeScript + Vite, Progressive Web App с offline-режимом.
  • Signalling: Rust axum-сервер, Redis для состояния комнат и fan-out между нодами.
  • Media: LiveKit SFU на той же машине (systemd), порт 7880 сигнал, 50000-60000 UDP для медиа.
  • TURN: встроенный TURN LiveKit + опциональный coturn на 3478 UDP / 5349 TLS.
  • Edge: nginx с HTTP/2, строгой CSP, HSTS preload, `limit_req` и закрытой LiveKit admin plane.
  • Лицензия и код: опубликованы на GitHub.

Принципы, которых мы держимся

  • Self-hosted по умолчанию. Один скрипт ставит Lumina на чистую Ubuntu 22.04+. Вся инфраструктура — ваша.
  • Минимум телеметрии. Единственный внешний скрипт — Яндекс.Метрика на lumina.su. В self-hosted-сборках её можно убрать одной правкой.
  • Без учётных записей. Нет регистрации, нет email, нет идентификатора устройства. Участники присоединяются по одноразовой ссылке.
  • Правила сервера жёстче клиента. Backend переписывает отправителя сообщений из JWT — клиент не может притвориться другим участником.
  • Открытый код. Исходники публичны. Любой может проверить архитектуру безопасности или развернуть копию.

Для кого Lumina

Мы делаем Lumina для небольших и средних команд, учителей и репетиторов, HR-специалистов, врачей на онлайн-консультациях, журналистов, студентов и семей, которым надо поговорить по видеосвязи без лишних хлопот. Lumina подходит для встреч до 100 человек в одной комнате; на выделенном VPS мы уверенно держим десятки одновременных комнат.

Как попробовать

Просто откройте главную, нажмите «Новая встреча» и поделитесь ссылкой. Если хотите поднять собственный сервер — смотрите инструкцию в репозитории на GitHub. Там же есть полный список параметров, архитектурные решения и security-раздел.

Если нужно установить Lumina как приложение — перейдите на страницу установки, где расписаны шаги для iOS, Android, Windows, macOS и Linux.