Общие задачи (до 15.11.24)
- Автономная загрузка докер-образов и репозитория конфигураций
- Вывод Jitsi через Nginx Proxy Manager
- Настройка Jibri - надёжная запись (без обрывов), трансляция
- Подключение Jitsi Admin
- Регистрация и авторизация через Keycloak
- Создание интерактивных скриптов установки и удаления Jitsi
- Интеграция в Webmin кнопок запуска установки и удаления Jitsi
- Тестирование на отсутствие конфликтов (по портам 80 и 443) с PeerTube, BookStack, HumHub, OnlyOffice, Mailcow
На 5.11.24:
1. Автономная загрузка докер-образов и репозитория конфигураций
Тестировалось на PeerTube, на Jitsi ещё нет.
-----------------------------------------------------------------------------------
2. Вывод Jitsi через Nginx Proxy Manager
На данный момент проблема с подключением к конференции при выводе через Nginx Proxy Manager
Если заходить через https://домен:8443 то проблем нет. Это как-то связано с веб-сокетами. Правда при включении веб-сокетов в Nginx Proxy Manager всё равно любой участник конференции отключается.
То же самое, если настраивать обычный Nginx работающий на порту 80 и 443 (без разницы - в контейнере или при установке из репозитория), и проксировать либо на http://домен:8000 либо на https://домен:8443
------------------------------------------------------------------------------------
3. Настройка Jibri - надёжная запись (без обрывов), трансляция
Контейнер с Jibri запускается, но запись выдаёт ошибку. Кроме того, нет остановки записи (похоже что то со скриптом завершения записи).
Сейчас значения в файле .env такие:
ENABLE_RECORDING=1
XMPP_RECORDER_DOMAIN=recorder.sogo.nbics.net:8443
JIBRI_RECORDER_USER=recorder
JIBRI_RECORDING_DIR=/config/recordings
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh
JIBRI_XMPP_USER=jibri
JIBRI_STRIP_DOMAIN_JID=muc
JIBRI_BREWERY_MUC=jibribrewery
JIBRI_PENDING_TIMEOUT=90
JIBRI_LOGS_DIR=/config/logs
При этом нигде не говорится, что в Prosody нужно задавать пользователей jibri и recorder. Тем не менее по совету ИИ создал пользователя jibri на внутреннем домене jitsi.meet (для регистрации обычных пользователей этот домен срабатывает), а вот для recorder нет поддомена recorder.jitsi.meet в контейнере. Или же там нужен свой домен, пока непонятно.
Кроме того, в логах Jibri есть ошибки при его связи с подсистемой alsa (для звука), хотя на Debian 11 установил всё как положено. Также в логах есть указания на ошибки связи с внутренним контейнерным браузером Chrome. И ещё ошибки - отстутвие прав доступа к localStorage.
------------------------------------------------------------------------------------
4. Подключение Jitsi Admin
Сама админка Jitsi работает нормально, запускается в Докер-контейнере. Её нужно подключить к Jitsi. Пока этим не занимался - там нужно настроить как я понял доступ через JWT (авторизация по токенам). В настройках файла .env авторизация может быть трёх типов - внутренняя, через LDAP и по токенам. Одно из трёх. Пока не знаю как сделать, чтобы одновременно работала и авторизация по токенам (для Jitsi Admin) и через LDAP (для сквозной авторизации).
------------------------------------------------------------------------------------
5. Регистрация и авторизация через Keycloak
Keycloak нужен для регистрации и авторизации пользователей через веб-интерфейс, при этом учётка может использоваться в разных сервисах, не только в Jitsi.
Пока тестировал авторизацию путём запуска контейнера с OpenLDAP.
Keycloak пока не запускал. Его нужно будет потом интегрировать с OpenLDAP.
---------------------------------------------------------------------------------------
6. Создание интерактивных скриптов установки и удаления Jitsi
Пока есть скрипт быстрой установки Jitsi, но без интерактива.
---------------------------------------------------------------------------------------
7. Интеграция в Webmin кнопок запуска установки и удаления Jitsi
Пока есть кнопка развёртывания Jitsi, запускающая неинтерактивный скрипт.
----------------------------------------------------------------------------------------
8. Тестирование на отсутствие конфликтов (по портам 80 и 443) с PeerTube, BookStack, HumHub, OnlyOffice, Mailcow
Тестирование ещё не проводилось
====================================================
На 6.11.24:
2. Вывод Jitsi через Nginx Proxy Manager
Проблема решена.
Во-первых, в файле docker-compose.yml нужно пробросить порт 10000 для Jitsi.
В итоге конфиг должен быть таким:
version: '3.8'
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "81:81"
- "10000:10000"
volumes:
- ./data:/data
Во-вторых, в файле .env для Jitsi настроить следующие переменные:
HTTP_PORT=8000
PUBLIC_URL=https://my-domain.com #Тут прописывается домен, что и в NPM, причём без указания порта
JVB_ADVERTISE_IPS=my_public_ip # Эту переменную оказывается нужно использовать даже для белого айпи.
# Строки для сертификата закомментировать, ну это итак понятно
В-третьих, использовать для проксирования айпи по протоколу http (https не проверял в данном случае)
-----------------------------------------------------------
3. Настройка Jibri - надёжная запись (без обрывов), трансляция
После решения проблемы с https (правильная настройка Jitsi и Nginx proxy manager), автоматически заработала и запись через Jibri. Как оказалось, никаких дополнительных пользователей в Prosody создавать не надо.
Главное, чтобы в настройках файла .env для Jitsi значение переменной XMPP_RECORDER_DOMAIN соотвествовало реальному домену плюс поддомен recorder. Например:
XMPP_RECORDER_DOMAIN=recorder.sogo.nbics.net
Если тут домен задан неправильно, то запись появится, но аудио и видео-потоки захватываться не будут. На итоговом видео отобразится конференция с именами пользователей и значками с отключенным у них микрофоном.
====================================================
На 7.11.24:
3. Настройка Jibri - надёжная запись (без обрывов), трансляция
Трансляция - проблема решена (могут быть сбои, нужно ещё тестировать). Удалось вывести трансляцию на PeerTube.
Для этого:
Зайти в конфиги Jitsi (в моём случае это /root/jitsi-meet-cfg/web). Там есть файлы config.js и interface_config.js
Создать копии этих файлов в том же каталоге, и назвать их соответственно (custom-config.js и custom-interface_config.js)
В файле custom-interface_config.js в блоке config.liveStreaming в параметре enabled вместо false поставить значение true. В итоге блок должен выглядеть так:
config.liveStreaming = {
enabled: true,
dataPrivacyLink: 'https://policies.google.com/privacy',
helpLink: 'https://jitsi.org/live',
termsLink: 'https://www.youtube.com/t/terms',
validatorRegExpString: '^[a-zA-Z0-9]{3,}$'
};
В файле custom-config.js раскомментировать блок TOOLBAR_BUTTONS: [] и внутрь вставить параметры для трансляции. Должно выглядеть так:
TOOLBAR_BUTTONS: [
'microphone', 'camera', 'closedcaptions', 'desktop', 'embedmeeting', 'fullscreen',
'fodeviceselection', 'hangup', 'profile', 'chat', 'recording', 'livestreaming', // добавьте 'livestreaming'
'etherpad', 'sharedvideo', 'settings', 'raisehand', 'videoquality', 'filmstrip',
'invite', 'feedback', 'stats', 'shortcuts', 'tileview', 'videobackgroundblur'
],
После этого надо перезагрузить контейнеры. Я перезагружаю всё следующими командами:
docker compose -f docker-compose.yml -f jigasi.yml -f jibri.yml down
docker compose -f docker-compose.yml -f jigasi.yml -f jibri.yml up -d
===============================================
После этого в интерфейсе Jitsi появится кнопка "Начать трансляцию".
Для того, чтобы начать трансляцию на PeerTube нужно взять ссылку для трансляции (адрес+ключ) и вставить в окно запроса при нажатии кнопки в Jitsi.
Общая схема ссылки такая: rtmp://<ваш_сервер>/live/<ключ_трансляции>
Пример:
rtmp://peertube.nbics.net:1935/live/c63fc311-6b2e-4d1e-a5e8-2aea969da857