Ваша студия.
На вашем сайте.
Трансляции, вебинары и транскрибация с аккаунтом MillerRings или YETI³. Пароль сайта остаётся на сайте.
Полный Rekvio — отдельное пространство.
Native runtime сохраняет медиатеку, плейлисты, очередь обработки, трансляции, вебинары, записи, чат, модерацию, белую доску и расписание. SDK-пакет отвечает за привязку сайта, безопасный вход и план установки.
Установите пакет интеграции.
python3 -m venv .venv-rekvio
source .venv-rekvio/bin/activate
python -m pip install --index-url https://engine.yeti3.ru/sdk/simple/ 'yeti3-rekvio==0.1.1'
python -c "from yeti3_rekvio import Package; print(Package.manifest.id)"Ожидаемый вывод: rekvio.site
В существующем Django-сайте установите yeti3-rekvio[django]==0.1.1 в окружение этого сайта. Зависимости Django берутся из PyPI через основной индекс, пакет YETI3 — через дополнительный SDK-индекс.
python -m pip install --extra-index-url https://engine.yeti3.ru/sdk/simple/ 'yeti3-rekvio[django]==0.1.1'Чужое остаётся чужим.
| Граница | Защита |
|---|---|
| Разные сайты | Разные PostgreSQL базы и роли, vhost RabbitMQ, отдельный защищённый Redis, каталоги медиа и ключи входа. |
| Разные пользователи | Идентификатор берётся из серверной сессии сайта. Переданные в форме user_id, site и role игнорируются. |
| Повтор ссылки входа | Тикет связан с сайтом и аудиторией; PostgreSQL атомарно фиксирует использование. |
| Приватные вебинары | Проверка владельца, приглашения, модератора и отзыва доступа до выдачи токена LiveKit. |
| Файлы и расшифровки | Существующие owner-проверки Rekvio; отсутствие публичного alias каталога медиа, кеша и индексации личных API. |
Публичный доступ появляется только после явной публикации владельцем. Обычному пользователю сайта не выдаётся роль глобального администратора Rekvio.
Подключение в три этапа.
Отдельный runtime
Оператор разворачивает защищённый app_extension с адаптером rekvio_site_runtime, отдельными данными и учётными записями общих сервисов. Копировать .env или БД исходного rekvio.ru запрещено. Приватные медиа не монтируются через общий каталог.
Домен и лицензия
media.millerrings.ru и media.yeti3.ru должны иметь DNS, HTTPS и ограниченный frame-ancestors своего основного сайта. Проверка лицензии должна подтверждать сайт и установку rekvio.site, а не просто наличие любого оплаченного аккаунта.
Студия внутри сайта
Хост настраивает settings.YETI3_REKVIO: site, origin, отдельный секрет key и настоящий серверный callback license_check. Callback нельзя заменять константой True.
from django.urls import include, path
urlpatterns += [
path("rekvio/", include("yeti3_rekvio.django_urls")),
]Пользователь входит в аккаунт сайта и открывает /rekvio/. Два подтверждения открывают полную собственную студию внутри страницы.
Проверяется работа, а не только наличие кнопки.
Обязательны два сайта и по два пользователя. Проверьте чужой uid, чужую запись, расшифровку, тикет другого сайта, повторный тикет, отозванное приглашение и reconnect LiveKit. Затем проведите тестовый эфир, сохраните запись, распознайте её и откройте результат в медиатеке.
Ответ 402 подтверждает работу ограничения оплаты, но не успешный эфир. Для приёмки используйте изолированное тестовое окружение с отдельным тестовым биллингом или согласованный оплаченный тест.