Blame

3c6a54 Mayekkuzu 2024-11-12 19:43:41 1
# Jitsi-Meet
2
3
**Jitsi Meet** - аналог веб-конференций по типу Яндекс-Телемоста и Zoom, только с упором на self-hosted. Работает на WebRTC, позволяет шарить экранчик, собирать друзьяшек, имеет клиенты на мобилки и приложение на Electron. Можно чатиться, ставить реакции, а в рамках организации можно прикрутить LDAP, Etherpad и прочие штуки которые так любят в организациях. В рамках компании если необходимо организовать свой собственный сервер конференций - лучшее решение. Дискорд, конечно, не заменяет, имеются неудобства при шаринге окна и звуком, потому как звук с микрофона и звук с шары обьединен. Нужно ставить громкость в видео в 10% чтобы не перебивала речь и не оглушала собеседников.
4
5
Если хочется без особого пердолинга то лучше взять VDS, потому что если брать домашний сервер в котором все завернуто через реверс-прокси, нужно дополнительно пердолиться с тем чтобы открывать порты. Инсталляция в докере и прокинутый наружу через Nginx Proxy инстанс позволяет общаться тет-а-тет, но подключение третьего собеседника валит всю конференцию. Возможно проблема с STUN но мне было лениво разбираться
6
7
Самая копеечная виртуалка в timeweb позволяет держать до 10 пользователей одновременно (1 ядро/1 гб RAM)
8
9
Сам комплект ПО состоит из нескольких компонентов:
10
11
- **Jitsi Meet** - по сути UI
12
- **Prosody** - Внутренний XMPP сервер написаный на Lua. И да, говорят что другие XMPP-серверы использовать в данном комплекте нельзя, потому как очень много своей специфики
13
- **Jicofo** - компонент XMPP который позволяет соединять клиентов
14
- **Jitsi Videobridge** - внутренний маршрутизатор видео/аудио между участниками конференции. Этот компонент не занимается транскодингом видео
15
- **Jigasi** - опциональный компонент для подключения SIP-телефонии. В конференцию можно позвать участника через SIP-телефонию. В данной инструкции не используется.
16
- **Jibri** - опциональный компонент для записи видео. Звучит просто, но на деле внутри имеет в себе X11 Server, Chromium, Selenium, IceWM и еще кучу барахла. По сути имитирует участника конференции который находится с участниками в одной комнате и записывает экран, но не отображается в списке
17
18
19
# Подготовка поддомена
20
21
Создаем A-запись в панели управления вашего регистратора домена
22
```
23
Record Type: A
24
Hostname: jitsi.domain.com
25
Public IP: IP-адрес сервера VDS
26
TTL: 1800
27
```
28
29
# Установка на Debian 12
30
31
Для начала установим OpenJDK 11. Для этого подключаем доп репозиторий в /etc/apt/sources.list. Добавляем строчку:
32
```
33
deb http://deb.debian.org/debian unstable main non-free contrib
34
```
35
Далее обновляем репозиторий и ставим jdk:
36
```
37
sudo apt update
38
sudo apt install openjdk-11-jdk
39
```
40
Указываем hostname на VDS-сервере:
41
```
42
sudo hostnamectl set-hostname jitsi.domain.com
43
```
44
Устанавливаем пакеты curl, gnupg, ufw и lua5.2, потому как с коробки их нет в комплекте с базовой системой Debian
45
```
46
sudo apt install curl gnupg lua5.2 ufw
47
```
48
Добавим репозиторий Prosody
49
```
50
sudo curl -sL https://prosody.im/files/prosody-debian-packages.key -o /etc/apt/keyrings/prosody-debian-packages.key
51
echo "deb [signed-by=/etc/apt/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list
52
```
53
Добавим репозиторий Jitsi
54
```
55
curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
56
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
57
```
58
Обновляем репозиторий
59
```
60
sudo apt update
61
```
62
Указываем какие порты будут открыты с помощью UFW и включаем фаирволл
63
```
64
sudo ufw allow 80/tcp
65
sudo ufw allow 443/tcp
66
sudo ufw allow 10000/udp
67
sudo ufw allow 22/tcp
68
sudo ufw allow 3478/udp
69
sudo ufw allow 5349/tcp
70
sudo ufw enable
71
```
72
Устанавливаем пакет jitsi-meet
73
```
74
sudo apt install jitsi-meet
75
```
76
При установке будет задан вопрос о домене и сертификате. Выбирайте Let's Encrypt Certificate. Далее вводим почту. Таким образом автоматически установится новый сертификат
77
Далее можно заходить и пробовать создать комнату и звать друзей попробовать
78
79
## Дополнительная настройка
80
Если используется сценарий когда сервер находится за NAT, или же есть проблема когда собеседники друг друга не слышат то нужно внести в фаил /etc/jitsi/videobridge/sip-communicator.properties дополнительно такие строчки:
81
```
82
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
83
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
84
```
85
86
## Включение авторизации
87
Необходимая вещь, когда сервер торчит в интернеты наружу. Позволяет только авторизованным юзерам создавать комнаты, при этом гостевой доступ уже в созданные комнаты остается без пароля. При этом создатель комнаты может дополнительно защитить паролем вход в комнату.
88
89
Открываем фаил /etc/prosody/conf.avail/jitsi.domain.com.cfg.lua и в поле VirtualHost с именем хоста меняем jitsi-anonymous на internal_hashed. Таким образом мы переключим анонимный вход на встроенный механизм аутентификации.
90
91
Теперь добавим возможность подключения гостям. После блока где мы переключили механизм аутентицикации добавляем следующее:
92
```
93
VirtualHost "guest.jitsi.domain.com"
94
authentication = "anonymous"
95
c2s_require_encryption = false
96
```
97
Важно уточнить что домен guest.jitsi.domain.com не нужно создавать в панели регистратора и прописывать A-запись и генерировать сертификат. Особенность работы конфигурации Jitsi Meet.
98
99
Теперь открываем /etc/jitsi/meet/jitsi.domain.com-config.js и блок hosts приводим к такому виду:
100
```
101
hosts: {
102
// XMPP domain.
103
domain: 'jitsi.domain.com',
104
anonymousdomain: 'guest.jitsi.domain.com',
105
```
106
Последним моментом необходимо привести блок authentication в фаиле /etc/jitsi/jicofo/jicofo.conf к такому виду:
107
```
108
authentication: {
109
enabled: true
110
type: XMPP
111
login-url: jitsi.domain.com
112
}
113
```
114
Перезапускаем сервисы:
115
```
116
sudo systemctl restart prosody jicofo jitsi-videobridge2
117
```
118
Для создания учетной записи воспользуемся командой:
119
```
120
sudo prosodyctl register LOGIN jitsi.domain.com PASSWORD
121
```
dee409 Mayekkuzu 2024-12-11 15:38:53 122
## Zabbix мониторинг
123
Шаблон берем из зеркала здесь: https://git.y2z.ru/PublicMirrors/jitsi-videobridge-zabbix-template
124
125
Теперь для работы необходимо активировать REST API в модуле colibri
126
127
Исходя из предыдущей установки, правим файлы:
128
Добавляем блок в `/etc/jitsi/videobridge/jvb.conf`
129
```
130
apis {
131
rest {
132
enabled = true
133
}
134
}
135
```
136
Добавляем в конце строчку в файле `/etc/jitsi/videobridge/config`
137
```
138
JVB_OPTS="--apis=rest,xmpp"
139
```
140
Приводим ниже перечисленные строчки к виду и добавляем если они отсутствуют в файле `/etc/jitsi/videobridge/sip-communicator.properties`
141
```
142
org.jitsi.videobridge.ENABLE_STATISTICS=true
143
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri
144
org.jitsi.videobridge.STATISTICS_INTERVAL=5000
145
```
146
Рестартим все сервисы
147
```
148
sudo systemctl restart prosody jicofo jitsi-videobridge2
149
```
150
Проверяем работу API:
151
```
152
curl localhost:8080/colibri/stats | jq
153
```
154
Если появляется JSON-ответ то все работает. Просто подключаете плагин и все заработает без дополнительных настроек