Бесплатное программное обеспечение для видеоконференций на вашем собственном сервере — установка Jitsi Meet на сервер Linux

Автор: | 28 сентября, 2022

Особенности Jitsi Meet

  • Совершенно бесплатно
  • Поделитесь экраном своего компьютера с другими (Screensharing)
  • Режим докладчика, который позволяет одновременно использовать экран и камеру
  • Вы можете поделиться системным звуком во время демонстрации экрана
  • Вы можете назначить авторизованных пользователей модераторами. Модератор может отключить звук у каждого участника одним щелчком мыши
  • Связь по сети зашифрована с использованием DTLS-SRTP
  • Сквозное шифрование
  • Вы можете установить пароль для своей конференции, чтобы предотвратить вход случайных незнакомцев
  • Запишите конференцию и сохраните ее в Dropbox
  • Транслируйте на YouTube Live и сохраняйте запись на YouTube
  • Приложения для Android и iOS
  • Текстовый чат
  • Вы можете поделиться текстовым документом
  • Телефонный доступ к конференции
  • Исходящий вызов телефонному абоненту
  • Вы можете встроить вызов Jits Meet на любую веб-страницу с помощью всего нескольких строк кода
  • Сервис интегрируется со Slack, Google Calendar, Office 365. Это обеспечивает расширение для Google Chrome.
  • Для удобства общения во время групповых встреч есть функция “поднять руку”. Так член команды может сигнализировать о том, что хочет взять слово.

Системные требования

  • Сервер: должен работать на 1 ядре, 1 ГБ ОЗУ — рекомендуется (как минимум) 2 ядра, 2 ГБ ОЗУ (масштабируйте по вашим потребностям)
  • ОС: минимальная версия Debian 10 (только sshd и базовые системные утилиты) — Ubuntu 18.04/22
  • имя хоста: meet.example.com (измените его на фактический домен, который вы используете) создайте записи DNS A для meet.example.com

Two Participants CPU 5% Server Bandwidth 30Kbps Up, 100Kbps Down
Three Participants CPU 15% Server Bandwidth 5Mbps Up, 3Mbps Down

Подготовка после установки ОС Ubuntu Server Linux

В локальной сети Сконфигурим сеть, задав статический ip:

sudo nano /etc/netplan/*.yaml
sudo nano /etc/netplan/00-installer-config.yaml
# This is the network config written by ‘subiquity’
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
      dhcp4: false
      addresses:
      - 10.16.10.100/24
      routes:
      - to: default
        via: 10.16.10.1
      nameservers:
          addresses:
          - 10.16.10.3
          - 10.16.10.254
          - 8.8.8.8
      optional: true

Проверка синтаксиса Yaml https://yamlchecker.com/ проверка конфиг файла и примененим конфигурации

admin@meet:~$ sudo netplan generate
admin@mett:~$ sudo netplan apply

Open the NMTUI Menu to Edit the Connection
apt install network-manager
nmtui

Изменить имя хоста adjust hostname

sudo hostnamectl set-hostname meet
sudo nano /etc/hosts
127.0.1.1 meet.example.com meet
hostname -f

Jitsi Meet не включен в репозиторий Ubuntu по умолчанию. Мы можем установить его из официального репозитория пакетов Jitsi, который также содержит несколько других полезных программных пакетов. Войдите на свой сервер через SSH, затем выполните следующую команду, чтобы добавить официальный репозиторий Jitsi.

1)update system обновим систему

sudo apt-get update && apt-get upgrade

2)Импортируйте открытый ключ Jitsi, чтобы менеджер пакетов APT мог проверять целостность пакетов, загруженных из этого репозитория.

wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
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 > /dev/null
sudo apt install apt-transport-https
sudo apt install mc
sudo apt-add-repository universe
echo 'deb https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list

3)Затем обновите локальный индекс пакета и установите Jitsi Meet в Ubuntu.

sudo apt-get update
sudo apt-get install jitsi-meet -y

Во время установки вам необходимо ввести имя хоста для вашего экземпляра Jitsi. Это имя хоста, которое будет отображаться в адресной строке веб-браузера, когда посетители присоединятся к вашей видеоконференции. Вы можете использовать описательное имя хоста, например meet.example.com.

jitsi-meet-install-hostname

На следующем экране вы можете выбрать вариант SSL:

Let’s Encrypt certificates

I want to use my own certificate

Generate a new self-signed certificate

Проверка SSL сертификата https://www.ssllabs.com/ssltest/

После завершения установки Jitsi Meet автоматически запустится. Вы можете проверить его статус с помощью:

systemctl status jitsi-videobridge2
andrey@meet:~$ systemctl status jitsi-videobridge2
● jitsi-videobridge2.service - Jitsi Videobridge
     Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-09-28 19:51:14 UTC; 39s ago
   Main PID: 5965 (java)
      Tasks: 48 (limit: 65000)
     Memory: 185.1M
        CPU: 8.169s
     CGroup: /system.slice/jitsi-videobridge2.service
             └─5965 java -Xmx3072m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp>

сен 28 19:51:14 meet systemd[1]: Starting Jitsi Videobridge...
сен 28 19:51:14 meet systemd[1]: Started Jitsi Videobridge.

4)Откройте порты в брандмауэре

sudo apt install net-tools
sudo netstat -lnptu | grep java
sudo ss -lnptu | grep java

Следующие порты должны быть открыты в вашем брандмауэре, чтобы разрешить трафик на сервер Jitsi Meet:

  • 80 TCP => Для проверки/обновления сертификата SSL с помощью Let’s Encrypt.
  • 443 TCP => Для общего доступа к Jitsi Meet.
  • 10000 UDP => для общих сетевых аудио/видеосовещаний.
  • 22 TCP => Для доступа к вашему серверу с использованием SSH (соответственно измените порт, если он не 22).
  • 3478 UDP => Для запроса stun-сервера (coturn, необязательно, для его включения требуется изменение config.js).
  • 5349 TCP => Для резервной сетевой видео/аудио связи по TCP (например, когда UDP заблокирован), обслуживается coturn. Необходимый
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 10000/udp

5)Сертификат TLS Certificate SSL

Пути хранения сертификатов crt key в /etc/ssl/ и /etc/jitsi/meet/

Перейдите в службу хостинга DNS (обычно это ваш регистратор домена), чтобы создать запись DNS A для вашего имени хоста Jitsi (meet.example.com). Затем запустите следующий скрипт, чтобы получить доверенный сертификат Let’s Encrypt TLS:

sudo apt install certbot
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

6)Включите HTTP2

HTTP2 может улучшить скорость загрузки веб-страницы. Чтобы включить HTTP2 в Nginx, отредактируйте файл конфигурации виртуального хоста.

sudo nano /etc/nginx/sites-enabled/meet.example.com.conf

Найдите следующие две строки.

listen 443 ssl;
listen [::]:443 ssl;

Добавьте http2 в конце каждой строки.

listen 443 ssl http2;
listen [::]:443 ssl http2;

Сохраните и закройте файл. Затем перезагрузите Nginx, чтобы изменения вступили в силу.

sudo systemctl reload nginx

Начните новую онлайн-встречу

jitis-meet-web443

Теперь посетите https://meet.example.com, и вы сможете начать конференцию. Для передачи звука вам необходимо разрешить веб-браузеру использовать ваш микрофон. А для передачи видео вам необходимо разрешить веб-браузеру доступ к вашей камере. Дайте вашей встрече название и нажмите кнопку Go. После начала собрания вы можете при желании установить пароль для собрания.

Настройте аутентификацию пользователя*

По умолчанию любой может перейти к вашему серверу Jitsi Meet, создать комнату и начать собрание. Чтобы настроить аутентификацию пользователя, отредактируйте файл конфигурации Prosody. https://jitsi.github.io/handbook/docs/devops-guide/secure-domain/

sudo nano /etc/prosody/conf.d/meet.example.com.cfg.lua

Найдите следующую строку. Next, find the line you need to edit in this file using nano’s search function: CTRL+W. Press CTRL+W then enter authentication = «anonymous» into the search field. Press ENTER to run the search.

authentication = "anonymous"

Измените его на следующее, что потребует от пользователя ввода имени пользователя и пароля для начала конференции. или authentication = «internal_hashed«

authentication = "internal_plain"

Однако мы не хотим, чтобы участники вводили имя пользователя и пароль при присоединении к конференции, поэтому нам нужно создать анонимный вход для гостей, добавив следующие строки в конец этого файла. Обратите внимание, что вам не нужно создавать запись A DNS для guest.meet.example.com.

VirtualHost "guest.meet.example.com"
    authentication = "anonymous"
    c2s_require_encryption = false
    modules_enabled = {
            "bosh";
            "ping";
            "pubsub";
            "speakerstats";
            "turncredentials";
            "conference_duration";
    }

Сохраните и закройте файл. Затем отредактируйте файл конфигурации Jitsi Meet.

sudo nano /etc/jitsi/meet/meet.example.com-config.js

Найдите следующую строку:

// anonymousdomain: 'guest.example.com',

Удалите двойные косые черты и измените гостевой домен. Замените meet.example.com своим настоящим именем хоста Jitsi Meet.

anonymousdomain: 'guest.meet.example.com',

Сохраните и закройте файл. Затем отредактируйте файл конфигурации Jicofo.

sudo nano -w /etc/jitsi/jicofo/sip-communicator.properties

Добавьте следующую строку в конец этого файла старая и новая версия jitsi.

org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.meet.example.com
org.jitsi.jicofo.auth.URL=XMPP:meet.example.com

sudo nano /etc/jitsi/jicofo/jicofo.conf

jicofo
  authentication: {
    enabled: true
    type: XMPP
    login-url: meet.example.com
  }

Сохраните и закройте файл. Перезапустите службы systemd, чтобы изменения вступили в силу.

sudo systemctl restart jitsi-videobridge2 prosody jicofo
sudo systemctl restart prosody.service jicofo.service jitsi-videobridge2.service

Чтобы создать учетные записи пользователей в Jisi Meet, выполните следующую команду. Вам будет предложено ввести пароль для нового пользователя.

sudo prosodyctl register username meet.example.com
sudo prosodyctl register user your_domain password

Теперь, если вы создаете комнату в Jitsi Meet, вам нужно будет ввести имя пользователя и пароль.

Картинки и логотипы обновления /usr/share/jitsi-meet/images/

https://jitsi.org https://bigbluebutton.org/ https://jitsi-club.gitlab.io/jitsi-self-hosting/en/01-deployment-howto/00-installation/ https://bva.dyndns.info/wiki/service/jitsi

jitis-meet-Authentication-moderator

Fail2Ban for Prosody https://jitsi-club.gitlab.io/jitsi-self-hosting/en/01-deployment-howto/01-authentication/

Fail2ban доступен в исходных текстах пакетов Linux и может быть установлен в системах на основе debian

sudo apt install fail2ban

Интеграция Prosody mod_log_auth для регистрации процессов входа в систему с IP-адресом.

sudo apt install mercurial

Mercurial весь репозиторий модулей Prosody копируем на локальный сервер, здесь в папку «prosody-modules».

hg clone https://hg.prosody.im/prosody-modules/ prosody-modules

После этого мы можем скопировать модуль в нужное место на нашем сервере. Для этого нам сначала нужно определить путь на нашем сервере, где требуются модули от Prosody:

sudo prosodyctl about

В выводе нам нужно найти строки

Plugin directories: 
 /usr/share/jitsi-meet/prosody-plugins/ 
 /usr/lib/prosody/modules/

Результаты поиска. Вот пути, перечисленны, где Prosody включает модули. Мы копируем mod_log_auth.lua из коллекции модулей, загруженной с помощью Mercurial выше, в одну из папок плагинов Prosody.

Затем модуль все равно нужно активировать в файле /etc/prosody/prosody.cfg.lua в блоке modules_enabled:

modules_enabled = {
"log_auth";
}

оставьте все существующие строки в блоке modules_enabled без изменений, только добавте строку

"log_auth";

Затем перезапустите Prosody, и теперь Prosody будет записывать попытки входа в данные журнала:

sudo service prosody restart

Создать фильтр Fail2ban для Prosody

Теперь fail2ban должен соответствующим образом обрабатывать логины, которые появляются в журнале соединений. Для этого создаем фильтр

/etc/fail2ban/filter.d/prosody.conf
# catch prosody failed logins 

[Definition] 
failregex = Failed authentication attempt \(not-authorized\) for user .* from IP: <HOST> 
ignoreregex =

Затем определите бло-тюрьму для вышеупомянутого фильтра в /etc/fail2ban/jail.d/prosody.conf, здесь в файле журнала /var/log/prosody/prosody.log , при 4 неудачных входах в систему в течение 300 секунд с IP-адреса будет заблокированн на 600 секунд.

# Prosody/Jitsi
[prosody]
enabled = true
filter = prosody
logpath = /var/log/prosody/prosody.log
maxretry = 4
findtime = 300
bantime = 600
port = http,https
ignoreip = 127.0.0.1/8

Затем перезапустите fail2ban:

sudo service fail2ban restart
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Советы по устранению неполадок Jitsi meet

Если вы видите ошибку You have been disconnected (Вы были отключены) при запуске собрания в Jitsi, возможно, вы забыли изменить meet.example.com на свое настоящее имя хоста Jitsi Meet в файлах конфигурации. и Проверить SSL сертификат

jitsi-meet-You have been disconnected

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *