# Развёртывание собственного сервера видеоконференций на Docker ## Теория :book: Jitsi - это набор проектов с открытым исходным кодом, которые предоставляют современные возможности видеоконференцсвязи, которые безопасны, просты в использовании и просты в самостоятельном размещении. Jitsi включает в себя коллекцию проектов: Jitsi Meet - JavaScript-приложение, совместимое с WebRTC, которое использует Jitsi Videobridge для обеспечения высококачественных масштабируемых видеоконференций. Создавайте на основе React и React Native. Jitsi Videobridge (JVB)- WebRTC-совместимый сервер, предназначенный для маршрутизации видеопотоков между участниками конференции. Jitsi Conference Focus (jicofo)- серверный компонент фокусировки, используемый в конференциях Jitsi Meet, который управляет сеансами мультимедиа и действует как балансировщик нагрузки между каждым из участников и видеомостом. Jitsi Gateway to SIP (jigasi)- серверное приложение, позволяющее обычным SIP-клиентам присоединяться к конференциям Jitsi Meet. Инфраструктура вещания Jitsi (jibri) - набор инструментов для записи и / или потоковой передачи конференции Jitsi Meet, который работает путем запуска экземпляра Chrome, отображаемого в виртуальном фреймбуфере, и захвата и кодирования выходных данных с помощью ffmpeg. Внешнее программное обеспечение, используемое Jitsi: Prosody- XMPP-сервер, используемый для передачи сигналов ::: info Мои ресурсы: * ПО виртуализации: VMware Workstation 16 pro; * ОС: Linux Ubuntu Server 22.04; * Виртуальные процессоры: 4; * ОЗУ: 4096; * HDD: 30 GB. ::: ## Установка ### Загрузка образа Загрузим архив с github. ``` wget https://github.com/jitsi/docker-jitsi-meet/archive/refs/tags/stable-8319.zip ``` ![](https://i.imgur.com/GsX4LPg.png) Распакуем архив ``` unzip stable-8319.zip ``` Переходим в распакованную папку. ### Преднастрока ``` cd docker-jitsi-meet-stable-8319/ ``` Создадим .env файл, скопировав и настроив env.example. ``` cp env.example .env ``` Установим надежные пароли в разделе параметры безопасности .env файла, запустив следующий скрипт. ``` ./gen-passwords.sh ``` Создадим необходимые CONFIG каталоги. ``` mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri} ``` ### Запуск Запустим. ``` docker-compose up -d ``` ![](https://i.imgur.com/ganvXUn.png) Перейдём в веб-интерфейс, для корректной работы через 8443 порт, в моём случае не было настроено ssl-ширфования, поэтому ничего работать не будет. ![](https://i.imgur.com/Ok8LiME.png) Создадим видеоконференцию. ![](https://i.imgur.com/gMxdQw1.png) :::warning Также доступен HTTP (не HTTPS) (по умолчанию на порту 8000), но это, например, для настройки обратного прокси; прямой доступ через HTTP вместо HTTPS приводит к ошибкам WebRTC, таким как не удалось получить доступ к микрофону / камере: невозможно использовать микрофон / камеру по неизвестной причине. Не удается прочитать свойство 'getUserMedia' undefined или navigator.mediaDevices не определено. :::