Установка Jitsi Meet в Ubuntu 18.04

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

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

Требования

  • Сервер Ubuntu 18.04, настроенный согласно этому мануалу (включая пользователя 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: Настройка брандмауэра

Следуя мануалу по начальной настройке сервера Ubuntu 18.04, вы включили брандмауэр 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.

Сначала загрузите GPG ключ Jitsi с помощью утилиты wget:

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

Пакетный менеджер apt будет использовать этот ключ GPG для проверки пакетов, которые вы загрузите из репозитория 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 в вашу систему, чтобы получить ​​последнюю версию Certbot. Выполните следующую команду, чтобы добавить новый репозиторий и обновить систему:

sudo add-apt-repository ppa:certbot/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, который будет запускаться каждую неделю.

Инсталлятор TLS использовал порт 80, чтобы подтвердить, что указанный домен действительно вам принадлежит. Теперь, когда вы получили сертификат, вашему серверу больше не нужен открытый порт 80, потому что он предназначен для незашифрованного HTTP-трафика. Jitsi Meet обслуживает соединения только через HTTPS, через порт 443.

Закройте порт 80 в брандмауэре с помощью следующей команды:

sudo ufw delete allow 80/tcp

Теперь сервер 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, чтобы загрузить новую конфигурацию:

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

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

Заключение

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

Tags: , , , ,

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