Skip to main content

Общие задачи (до 15.11.24)

  1. Автономная загрузка докер-образов и репозитория конфигураций
  2. Вывод Jitsi через Nginx Proxy Manager
  3. Настройка Jibri - надёжная запись (без обрывов),  трансляция
  4. Подключение Jitsi Admin
  5. Регистрация и авторизация через Keycloak
  6. Создание интерактивных скриптов установки и удаления Jitsi
  7. Интеграция в Webmin кнопок запуска установки и удаления Jitsi
  8. Тестирование на отсутствие конфликтов (по портам 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 jibri.yml down
docker compose -f docker-compose.yml -f jibri.yml up -d

===============================================

После этого в интерфейсе Jitsi появится кнопка "Начать трансляцию". 

Для того, чтобы начать трансляцию на PeerTube нужно взять ссылку для трансляции (адрес+ключ) и вставить в окно запроса при нажатии кнопки в Jitsi. 

Общая схема ссылки такая: rtmp://<ваш_сервер>/live/<ключ_трансляции>

Пример:

rtmp://peertube.nbics.net:1935/live/c63fc311-6b2e-4d1e-a5e8-2aea969da857