# Развёртывание собственного сервера видеоконференций на 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
```

Распакуем архив
```
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
```

Перейдём в веб-интерфейс, для корректной работы через 8443 порт, в моём случае не было настроено ssl-ширфования, поэтому ничего работать не будет.

Создадим видеоконференцию.

:::warning
Также доступен HTTP (не HTTPS) (по умолчанию на порту 8000), но это, например, для настройки обратного прокси; прямой доступ через HTTP вместо HTTPS приводит к ошибкам WebRTC, таким как не удалось получить доступ к микрофону / камере: невозможно использовать микрофон / камеру по неизвестной причине. Не удается прочитать свойство 'getUserMedia' undefined или navigator.mediaDevices не определено.
:::