Установка Jitsi Meet в Debian 10

Jitsi Meet – это открытое приложение для видеоконференций, основанное на WebRTC. Сервер Jitsi Meet предоставляет конференц-залы, к которым вы можете получить доступ в браузере. Функции Jitsi Meet во многом похожи на Zoom или Skype. Но преимущество Jitsi заключается в том, что все данные проходят только через ваш сервер. Также Jitsi поддерживает сквозное шифрование TLS, благодаря чему никто не сможет отследить ваши звонки. Благодаря Jitsi вы можете быть уверены, что ваша личная информация останется личной.

В этом мануале вы узнаете, как установить и настроить сервер Jitsi Meet в Debian 10. Стандартная конфигурация позволяет любому пользователю создать новый конференц-зал. Это не лучший вариант, если ваш сервер находится в публичном доступе в интернете, поэтому мы настроим Jitsi Meet так, чтобы создавать новые конференц-залы могли только зарегистрированные пользователи. После того как вы создадите конференц-зал, другие пользователи смогут присоединиться к нему, если у них есть уникальный адрес и (опционально) пароль.

Требования

  • Сервер Debian 10, настроенный согласно этому мануалу (включая пользователя sudo). Размер сервера, который вам понадобится, зависит от доступной пропускной способности и предполагаемого количества участников. Ниже вы найдете таблицу, которая поможет вам определить необходимый размер.
  • Доменное имя, направленное на ваш сервер (в этом мануале используется условный домен jitsi.example.com).

При выборе сервера для запуска Jitsi Meet вам необходимо учитывать системные ресурсы, необходимые для размещения конференц-залов. Следующая информация собрана с одноядерной виртуальной машины с поддержкой видео высокого качества:

CPU Пропускная способность
Два участника 3% 30 Кбит/с выгрузка, 100 Кбит/с загрузка
Три участника 15% 7 Мбит/с выгрузка, 6.5 Мбит/с загрузка

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

 1: Установка имени хоста системы

На этом этапе мы изменим имя хоста системы, чтобы оно соответствовало домену, который мы будем использовать для своего экземпляра Jitsi Meet, и разрешим это имя хоста на IP-адрес localhost, 127.0.0.1. Jitsi Meet использует оба эти параметра при установке и создании конфигурационных файлов.

Сначала установите в качестве имени хоста системы тот домен, который вы будете использовать для своего сервера Jitsi. Следующая команда установит текущее имя хоста и отредактирует файл /etc/hostname, в котором имя хоста системы сохраняется между перезагрузками:

sudo hostnamectl set-hostname jitsi.your-domain

Эта команда состоит из таких компонентов:

  • hostnamectl – утилита из набора инструментов systemd, предназначенная для управления именем хоста системы.
  • set-hostname устанавливает имя хоста.

Убедитесь, что команда выполнена успешно, запустив эту команду:

hostname

Она выведет на экран имя хоста, которое вы установили с помощью команды hostnamectl:

jitsi.your-domain

Затем нужно настроить локальное сопоставление имени хоста сервера с IP-адресом 127.0.0.1. Для этого откройте файл /etc/hosts в редакторе:

sudo nano /etc/hosts

Добавьте в файл следующую строку:

127.0.0.1 jitsi.your-domain

Сопоставление домена вашего сервера Jitsi Meet с адресом 127.0.0.1 позволяет ему использовать несколько сетевых процессов, которые принимают локальные соединения друг от друга по IP-адресу 127.0.0.1. Эти подключения проходят проверку подлинности и шифруются с помощью сертификата TLS, который зарегистрирован на ваш домен. Локальное сопоставление домена с 127.0.0.1 позволяет использовать TLS-сертификат для этих локальных сетевых подключений.

Сохраните и закройте файл.

Теперь у вашего сервера есть имя хоста, которое необходимо для установки Jitsi. После этого нам нужно открыть порты брандмауэра для Jitsi и инсталлятора сертификата TLS.

2: Настройка брандмауэра

Следуя мануалу по начальной настройке сервера, вы включили брандмауэр UFW и открыли порт SSH. Серверу Jitsi необходимо несколько портов, чтобы он смог взаимодействовать с вызывающими клиентами. Кроме того, в процессе установки TLS должен быть открыт порт, чтобы центр сертификации смог аутентифицировать запрос.

Сейчас вы откроете такие порты:

  • 80/tcp, указанный в запросе сертификата TLS.
  • 443/tcp, который нужен веб-странице для создания конференц-зала.
  • 4443/ tcp и 10000/udp – для передачи и приема зашифрованного трафика.

Выполните следующие команды ufw, чтобы открыть эти порты:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 4443/tcp
sudo ufw allow 10000/udp

Убедитесь, что все порты открылись. Это можно сделать с помощью команды ufw status:

sudo ufw status

Вы получите такой вывод:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
4443/tcp                   ALLOW       Anywhere
10000/udp                  ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
4443/tcp (v6)              ALLOW       Anywhere (v6)
10000/udp (v6)             ALLOW       Anywhere (v6)

Теперь сервер готов к установке Jitsi.

3: Установка Jitsi Meet

Сейчас мы добавим на свой сервер стабильный репозиторий Jitsi, а затем установим из этого репозитория пакет Jitsi Meet – так мы получим последний стабильный пакет Jitsi.

Сначала установите пакет gnupg, который позволяет управлять криптографическими ключами:

sudo apt install gnupg

Затем загрузите GPG-ключ для Jitsi с помощью утилиты wget:

wget https://download.jitsi.org/jitsi-key.gpg.key

Пакетный менеджер apt будет использовать этот ключ для проверки пакетов, которые вы загрузите из репозитория Jitsi.

Добавьте GPG ключ, который вы скачали, в связку ключей apt с помощью утилиты apt-key:

sudo apt-key add jitsi-key.gpg.key

Теперь вы можете удалить файл ключа GPG, он больше не нужен:

rm jitsi-key.gpg.key

После этого можно добавить репозиторий Jitsi на свой сервер, создав новый исходный файл, содержащий репозиторий Jitsi. Откройте новый файл в редакторе:

sudo nano /etc/apt/sources.list.d/jitsi-stable.list

Добавьте в файл такую строку, чтобы указать нужный репозиторий:

deb https://download.jitsi.org stable/

Сохраните и закройте файл.

Обновите систему, чтобы собрать список пакетов из репозитория Jitsi, а затем установите jitsi-meet:

sudo apt update
sudo apt install jitsi-meet

Во время установки jitsi-meet вам будет предложено ввести домен (например, jitsi.your-domain), который вы хотите использовать для своего экземпляра Jitsi Meet.

Примечание: Чтобы переместить курсор из поля имени хоста и выделить кнопку <OK>, используйте клавишу TAB. Нажмите Enter, когда выделите <OK>, чтобы отправить имя хоста.

Затем появится новое диалоговое окно, которое спросит, должен ли Jitsi создать самоподписанный сертификат TLS или использовать уже имеющийся у вас.

Если у вас нет TLS-сертификата для вашего домена Jitsi, выберите первый вариант, Generate a new self-signed certificate.

Эта опция установит Jitsi Meet с помощью самоподписанного сертификата TLS. Позже такой сертификат вызовет предупреждения браузера, поэтому лучше получить доверенный сертификат.

4: Получение доверенного TLS-сертификата

Jitsi Meet использует сертификаты TLS для шифрования трафика, чтобы посторонние не могли прослушивать ваши звонки. Сертификаты TLS – это те же сертификаты, которые используются веб-сайтами для включения URL-адресов по HTTPS.

Jitsi Meet предоставляет программу для автоматической загрузки TLS-сертификата, которая использует утилиту Certbot. Вам нужно установить эту программу.

Сначала установите пакет certbot:

sudo apt install certbot

Теперь ваш сервер готов к установке программы для получения TLS-сертификата, предоставленной Jitsi Meet.

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

Когда вы запустите сценарий, он запросит у вас адрес электронной почты:

-------------------------------------------------------------------------
This script will:
- Need a working DNS record pointing to this machine(for domain jitsi.example.com)
- Download certbot-auto from https://dl.eff.org to /usr/local/sbin
- Install additional dependencies in order to request Let’s Encrypt certificate
- If running with jetty serving web content, will stop Jitsi Videobridge
- Configure and reload nginx or apache2, whichever is used
- Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks
- Add command in weekly cron job to renew certificates regularly
You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf)
by providing an email address for important account notifications
Enter your email and press [ENTER]:

Этот адрес будет отправлен сервису https://letsencrypt.org (который выдает сертификат). По этому адресу вы будете получать уведомления о безопасности и других вопросах, связанных с сертификатом TLS. Введите адрес электронной почты, чтобы продолжить установку. После этого программа будет установлена без дополнительных запросов.

Теперь экземпляр Jitsi Meet использует подписанный сертификат TLS. Обновление сертификата также будет выполняться автоматически, поскольку инсталлятор разместил сценарий обновления в /etc/cron.weekly/letsencrypt-renew, который будет запускаться каждую неделю.

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

Стандартная конфигурация Jitsi Meet позволяет создавать новый конференц-зал любому пользователю, который посещает домашнюю страницу Jitsi Meet. Это повышает использование системных ресурсов; в целом такая настройка нежелательна, так как поддерживает неавторизованных пользователей. Далее мы мы покажем, как изменить эту настройку Jitsi Meet, чтобы создавать конференции могли только зарегистрированные пользователи.

5: Ограничение создания конференц-залов

Давайте изменим настройку сервера Jitsi Meet, чтобы разрешить создание конференц-залов только зарегистрированным пользователям. Файлы, которые вам нужно отредактировать, были созданы инсталлятором и содержат ваш домен.

В следующих примерах вместо вашего домена указан условный your_domain.

Сначала откройте файл /etc/prosody/conf.avail/your_domain.cfg.lua в текстовом редакторе:

sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

Найдите эту строку:

...
authentication = "anonymous"
...

Измените ее вот так:

...
authentication = "internal_plain"
...

Эта конфигурация позволяет Jitsi Meet принудительно выполнять аутентификацию, прежде чем разрешить создание конференц-зала новому посетителю.

Затем в том же файле поместите следующий раздел (добавьте его в конец файла):

...
VirtualHost "guest.your_domain"
authentication = "anonymous"
c2s_require_encryption = false

Эта конфигурация позволяет анонимным пользователям присоединяться к конференц-залам, созданным аутентифицированным пользователем. Однако у гостя должен быть уникальный адрес и пароль для входа.

Здесь мы добавили guest. перед вашим доменным именем (например, из домена jitsi.your-domain получится guest.jitsi.your-domain). Имя хоста guest. используется Jitsi Meet только для внутренних целей. Вы никогда не будете вводить его в браузер или создавать для него DNS-записи.

Откройте другой файл, /etc/jitsi/meet/your_domain-config.js, с помощью текстового редактора:

sudo nano /etc/jitsi/meet/your_domain-config.js

Отредактируйте эту строку:

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

чтобы она выглядела так:

...
anonymousdomain: 'guest.your_domain',
...

Опять же, с помощью имени хоста guest.your_domain, которое вы использовали ранее, эта конфигурация сообщает Jitsi Meet, какое внутреннее имя хоста использовать для неавторизованных гостей.

Затем откройте /etc/jitsi/jicofo/sip-communicator.properties:

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

И добавьте следующую строку, чтобы завершить изменения конфигурации:

org.jitsi.jicofo.auth.URL=XMPP:your_domain

Эта конфигурация направляет один из процессов Jitsi Meet на локальный сервер, который выполняет аутентификацию пользователя, а она теперь обязательная.

Ваш экземпляр Jitsi Meet теперь настроен так, что только зарегистрированные пользователи могут создавать конференц-залы. После создания конференц-зала к нему может присоединиться любой желающий, даже неавторизованные пользователи. Однако для этого им потребуется это уникальный адрес конференц-зала и (опционально) пароль, установленный создателем комнаты.

Теперь, когда Jitsi Meet требует аутентификации для создания комнаты, вам необходимо зарегистрировать пользователей и их пароли. Для этого можно воспользоваться утилитой prosodyctl.

Выполните следующую команду, чтобы добавить пользователя на свой сервер:

sudo prosodyctl register user your_domain password

Добавленный вами пользователь не является системным. Такие пользователи смогут только создать конференц-зал, но не смогут войти на ваш сервер через SSH.

Перезапустите процессы Jitsi Meet и Nginx, чтобы загрузить новую конфигурацию:

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

Теперь Jitsi Meet запрашивает имя пользователя и пароль при создании конференц-зала.

Заключение

В этом мануале вы научились устанавливать сервер Jitsi Meet для проведения безопасных видеоконференций. Больше о Jitsi можно узнать в вики проекта.

Tags: , , ,

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