Как настроить сервер записи и потоковой передачи Jibri для Jitsi Meet
В текущем руководстве по Docker для Jitsi описано важное изменение в развертывании: начиная с версии stable-11146, контейнеры запускаются с непривилегированным UID/GID 1000, и каталоги постоянных данных должны быть доступны для записи этому пользователю контейнера. Сервису Jibri также больше не требуется эта SYS_ADMINвозможность. Более старые руководства, рекомендующие привилегированные контейнеры или широкие 777права доступа, не следует копировать в текущее развертывание без проверки инструкций для конкретной версии.
В этом пошаговом руководстве используется Docker Compose для существующей самостоятельной установки Jitsi Meet. Он основан на явно гипотетическом примере: команда Riverview уже использует Jitsi по адресу meet.example.net, хранит конфигурацию в /opt/jitsi-meet-cfg, и хочет, чтобы модераторы записывали встречи локально и иногда транслировали их на RTMP-сервер. Это пример конфигурации, а не отчет о реальной установке или тестировании.
Примечание к иллюстрации: Приведенные ниже изображения экрана представляют собой схематические примеры, а не снимки реального сервера; отображаемый вывод команд и состояния совещаний носят иллюстративный характер.
Чем занимается Jibri и что ей нужно.
Jibri — это инфраструктура Jitsi для трансляции конференций, предназначенная для записи или прямой трансляции. Она подключается к совещанию через браузер, захватывает аудио и видео, а затем кодирует выходные данные. Таким образом, работоспособность Jibri зависит от согласования веб-сервисом Jitsi, сервером Prosody XMPP и Jicofo внутренней учетной записи для записи и комнаты Jibri «brewery», где объявляют о наличии доступных экземпляров.
Используйте полную установку Jitsi Meet, которой вы управляете; Jibri нельзя подключить к общедоступному сервису meet.jit.si, как если бы это был ваш собственный сервер. В проекте Jibri описывается запуск на отдельной машине или виртуальной машине без использования каких-либо посторонних рабочих нагрузок, использующих его дисплей или аудиоустройства. Официальный пакет развертывания Docker Compose включает Jibri в качестве дополнительной службы. Для небольшой установки это может быть отдельный контейнер на хосте Compose; для длительного использования выделите ему выделенные ресурсы ЦП, памяти и диска или разместите его на хосте с соответствующими ресурсами.
Один экземпляр Jibri может обрабатывать только одну сессию записи или потоковой передачи одновременно. Если Riverview ожидает одновременных сессий, следует спланировать пул Jibri с несколькими экземплярами и учесть дополнительную конфигурацию аудиопетли, описанную в руководстве Jitsi. Добавление большего количества контейнеров без уникальных аудиоустройств не является полным планом масштабирования.
Пример настроек среды для включения Jibri; значения паролей представляют собой замаскированные заполнители.
Шаг 1: Подготовка среды Docker Jitsi Meet
Начните с официального релиза Docker Jitsi Meet и соответствующих файлов Compose. Файлы Compose .envи файлы Compose должны быть из одного релиза. В файле среды включите запись:
ENABLE_RECORDING=1
В конфигурации Jitsi Compose используются внутренние учетные записи XMPP для самого Jibri и для сессии браузера записи. Установите надежные, уникальные значения для паролей Jibri и записи и храните их в секрете. Для совершенно нового стека gen-passwords.shскрипт проекта может сгенерировать внутренние пароли служб. Он изменяет файл среды, поэтому сначала сделайте его резервную копию. Если стек Jitsi уже запущен, не следует автоматически перегенерировать все пароли: все запущенные компоненты должны получить соответствующие обновленные учетные данные во время запланированного перезапуска.
В примере Riverview ENABLE_RECORDING=1это обязательный параметр, в то время как шаблон среды выпуска предоставляет имена и значения по умолчанию для пользователя XMPP, пользователя записи, brewery MUC, пути к хранилищу и других параметров. Не вставляйте пароли в публичные сообщения об ошибках, скриншоты терминала или чаты общего собрания.
Перед запуском службы подготовьте постоянный каталог Jibri для непривилегированного пользователя контейнера.
Шаг 2: Создайте доступное для записи постоянное хранилище.
Записи должны сохраняться после замены контейнера, поэтому настройка Compose в Jitsi монтирует постоянное хранилище хоста для Jibri. В примере CONFIG=/opt/jitsi-meet-cfgкаталог хоста — это /opt/jitsi-meet-cfg/storage/jibri. Создайте его перед запуском службы и сделайте его доступным для записи для UID/GID контейнера 1000:
В числовом списке должны быть указаны владелец и группа 1000. Используйте фактический CONFIGпуть из файла среды, если он отличается. Избегайте рекурсивного изменения прав собственности на весь каталог конфигурации Jitsi; примените необходимые права собственности к пути к хранилищу Jibri и сохраните существующие записи при настройке установленного хоста. В системах SELinux сохраняйте настройки меток томов из соответствующего официального файла Compose, а не удаляйте их.
Каталог для записи в контейнере можно настроить; в руководстве приведен пример для JIBRI_RECORDING_DIRкаталога /storage/recordings, смонтированного в каталог хранилища Jibri хоста. Перед изменением проверьте шаблон среды вашей версии. Убедитесь, что на хосте достаточно свободного места на диске и есть план хранения: работающий регистратор со временем может заполнить небольшой объем памяти.
Шаг 3: Запустите Jibri с соответствующим файлом Compose.
Из каталога, содержащего официальные файлы Jitsi Compose и настроенный файл среды, запустите базовый стек с параметром переопределения Jibri:
docker compose -f docker-compose.yml -f jibri.yml up -d
В официальном руководстве используется этот шаблон Compose для добавления Jibri в развертывание Docker. Переопределение Jibri определяет образ контейнера сервиса, конфигурацию, точки монтирования хранилища и выделение общей памяти. Используйте файл, входящий в комплект выбранного вами релиза; избегайте смешивания текущего пакета jibri.ymlс более старым .envили пакетом Compose.
Проверьте, работает ли служба Jibri, и проанализируйте её журналы совместно с Jicofo и Prosody:
Запущенный контейнер — это первоначальная проверка, а не доказательство возможности записи конференции. Jibri должен пройти аутентификацию на правильном хосте XMPP и подключиться к ожидаемому внутреннему MUC Brewery. Если в журналах отображаются ошибки аутентификации, сравните домен XMPP, внутренний MUC, учетную запись Jibri, учетную запись регистратора и пароли в файле среды и сгенерированной конфигурации службы. Значения должны совпадать; изменение пароля только одного компонента приведет к нарушению рукопожатия.
Запустите службу Jibri Compose и проверьте ее состояние; этот экран является иллюстративным и не подтверждает работоспособность протестированной системы.
Шаг 4: Проверьте запись и поток RTMP.
Присоединяйтесь к тестовому совещанию, meet.example.netиспользуя учетную запись модератора. В меню «Дополнительные действия» совещания убедитесь, что доступны действия записи и прямой трансляции. Начните с короткой записи, дождитесь завершения сессии и проверьте настроенный путь к хранилищу хоста для выходных данных. Запись должна остаться доступной после пересоздания контейнера Jibri, поскольку она хранится на смонтированном томе хоста, а не только в доступном для записи слое контейнера.
Для прямой трансляции используйте URL-адрес приема RTMP и ключ потока, предоставленные службой назначения. Введите текущие значения поставщика в рабочем процессе прямой трансляции Jitsi и проверьте статус предварительного просмотра или приема на стороне назначения. Панели мониторинга и метки поставщика могут меняться, поэтому используйте текущие инструкции RTMP для стороны назначения. Относитесь к ключу потока как к паролю: не публикуйте его в чате совещания или на скриншотах статей. Запись в локальное хранилище и отправка прямой трансляции в службу RTMP — это связанные функции Jibri, но у них разные адреса назначения и проверки.
После настройки Jibri меню совещания может отображать действия записи и прямой трансляции; доступность меню зависит от развертывания системы.
Устранение неполадок в точке отказа.
Запись или потоковая передача не отображаются: подтвердите ENABLE_RECORDING=1наличие активного файла среды и то, что соответствующий стек Compose был воссоздан после изменения. Проверьте сгенерированную конфигурацию веб-сервера, Prosody и Jicofo вместо редактирования файлов внутри запущенного контейнера; Docker перегенерирует конфигурацию сервиса из входных данных хоста.
Действие отображается, но Jibri не может подключиться: проверьте журналы Jibri и Jicofo на наличие ошибок аутентификации XMPP или MUC. Проверьте внутренний хост, домен регистратора, имя пивоварни и оба внутренних пароля на соответствие одной и той же версии Compose.
Если контейнер завершает работу или перезапускается: проверьте его журналы на наличие отсутствующего или недоступного для записи пути к хранилищу. На текущих образах без прав root убедитесь, что смонтированный каталог доступен для записи пользователем с UID/GID 1000. Также проверьте объем памяти хоста и конфигурацию разделяемой памяти, предоставленную официальным файлом Jibri Compose.
Сессия начинается, но файл записи не появляется: Убедитесь, что настроенный каталог записи соответствует тому тому хоста и что сессия была остановлена/завершена нормально. Проверьте свободное место на диске и права доступа к файлам.
Запись работает, но потоковая передача не удаётся: перепроверьте URL-адрес приема RTMP и ключ потока, текущие требования к целевому устройству и исходящий сетевой путь хоста. Вместо открытия дополнительных входящих портов без доказательств, просмотрите журналы Jibri на предмет сбоя потоковой передачи.
Если совещание проходит успешно, но вам требуется больше одновременных записей, целенаправленно увеличивайте мощность. Ограничение Jibri на одну сессию на экземпляр означает, что для одновременной работы требуется больше экземпляров; в руководстве Docker также упоминается выбор отдельных интерфейсов обратной связи для нескольких экземпляров. Протестируйте еще один экземпляр, прежде чем расширять пул, и убедитесь, что каждый экземпляр может создавать отдельную запись.
Используйте эти официальные источники.
Следуйте инструкциям, соответствующим вашей версии развертывания, а не копируйте настройки из другой версии Jibri. В руководстве по Docker для Jitsi описан рабочий процесс Compose, запись переменных, путь к хранилищу, права доступа к контейнерам без прав root и текущие примечания к Jibri. В файле README проекта Jibri объясняется роль Jibri, ограничение на использование одной сессии и модель конфигурации. Официальное определение службы Compose для Jibri и шаблон среды являются источником достоверной информации об именах переменных и точках монтирования, специфичных для каждой версии.