В данной инструкции мы сделаем небольшой обзор по развертыванию сервиса проведения конференцсвязи Jitsi на Linux Ubuntu / Debian.
Подготовка сервера
Установка системы видеоконференцсвязи
Настройка SSL
Аутентификация пользователей
Оптимизация для работы от 100 пользователей
Прежде чем приступить к установке Jitsi, выполним работы по подготовке системы.
Для работы Jitsi необходимо наличие статического белого IP-адреса.
Через NAT данный сервис не работает, поэтому либо мы настраиваем видеоконференцию только внутри локальной сети, либо отдаем внешний адрес серверу.
Для корректной работы сервера видеоконференции нам нужно открыть следующие порты:
Вводим команды:
iptables -I INPUT -p tcp —match multiport —dports 80,443 -j ACCEPT
iptables -I INPUT -p udp —dport 10000:20000 -j ACCEPT
iptables -I INPUT -p tcp —dport 4443 -j ACCEPT
Также нам может потребоваться открыть дополнительные порты:
Выполняем:
iptables -I INPUT -p tcp —dport 5222 -j ACCEPT
iptables -I INPUT -p tcp —dport 5349 -j ACCEPT
iptables -I INPUT -p udp —dport 3478 -j ACCEPT
iptables -I INPUT -p tcp —dport 8080 -j ACCEPT
iptables -I INPUT -p tcp —dport 8888 -j ACCEPT
Для сохранения правил используем netfilter-persistent:
apt install iptables-persistent
netfilter-persistent save
В стандартных хранилищах пакетов Ubuntu нет Jitsi и необходимых для нее компонентов. Выполним необходимые настройки.
1. Добавляем репозиторий universe:
apt update
apt install software-properties-common gnupg2 curl
apt-add-repository universe
Если мы получим сообщение:
‘universe’ distribution component is already enabled for all sources.
… значит он уже есть в нашей системе. Идем дальше.
2. Также добавим репозиторий packages.prosody.im и установим его ключ:
curl -fsSL https://prosody.im/files/prosody-debian-packages.key | gpg —dearmor -o /etc/apt/trusted.gpg.d/prosody-debian-packages.gpg
echo «deb http://packages.prosody.im/debian $(lsb_release -sc) main» > /etc/apt/sources.list.d/prosody.list
3. Установим теперь репозиторий и gpg-ключ для самого jitsi:
curl -fsSL https://download.jitsi.org/jitsi-key.gpg.key | sh -c ‘gpg —dearmor > /etc/apt/trusted.gpg.d/jitsi-keyring.gpg’
echo ‘deb https://download.jitsi.org stable/’ > /etc/apt/sources.list.d/jitsi-stable.list
Обновим кэш apt:
apt update
Настройка закончена.
Для установки jitsi важно задать имя сервера, а также обеспечить его разрешение в локальный адрес. Для получения бесплатного сертификата от Let’s Encrypt данное имя также должно разрешаться из Интернет и вести на наш сервер по портам 80 и 443.
Выполняем команду:
hostnamectl set-hostname jitsi.remontka.com
* где jitsi.remontka.com — имя нашего сервера.
Открываем файл:
vi /etc/hosts
Добавляем строку с внешним адресом и именем сервера, например:
1.2.3.4 jitsi.remontka.com
Мы готовы приступить к установке сервиса видеосвязи.
Мы готовы к установке программного обеспечения из настроенных репозиториев. Для начала установим socat:
apt install socat
* socat — инструмент для переадресации запросов к сокетам c хостовой машины на клиентскую. Данный пакет рекомендуется установить до установки jitsi.
Теперь устанавливаем сам jitsi:
apt install jitsi-meet
В ходе установки система задаст несколько вопросов.
Указываем имя нашего сервера (его мы задавали при подготовке сервера):
* где jitsi.remontka.com — то имя, которое мы задали серверу и указали в файле hosts.
Теперь установщик предложит создать самоподписанный сертификат или использовать уже имеющийся. В нашем примере мы дадим ответ для создания сертификата:
Готово. Jitsi установлен.
Для запуска первой конференции переходим по ссылке https://jitsi.remontka.com , где jitsi.remontka.com — имя нашего сервера. Откроется веб-интерфейс (браузер отобразит ошибку безопасности из-за самоподписанного сертификата — игнорируем) и мы можем сразу перейти к созданию конференции, кликнув по Создать конференцию :
Для корректной работы сервера нужен правильный сертификат. Его можно купить или получить бесплатно от Let’s Encrypt. Рассмотрим оба варианта.
В процессе установки jitsi, если мы выбрали использование сертификата Let’s Encrypt, он будет автоматически получен.
Но если при установки сертификат не был получени или мы ранее использовали свой сертификат, в Jitsi есть готовый скрипт для получения сертификата от Let’s Encrypt — запускаем его:
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Система потребует ввести адрес электронной почты:
Enter your email and press [ENTER]: master@remontka.com
После нажатия ENTER будет выполнена проверка имени хоста, который мы указали при установке (он должен вести на наш сервер по портам 80 и 443). Если проверка пройдена, мы увидим сообщение об успешном получении сертификата и путь до файлов fullchain.pem и privkey.pem.
Сертификат установлен.
Предположим, мы купили сертификат и поместили его по путям /etc/jitsi/meet/jitsi.remontka.com.crt (открытый ключ) и /etc/jitsi/meet/jitsi.remontka.com.key (закрытый).
Открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/$(hostname).conf
* где $(hostname) должен вернуть jitsi.remontka.com — имя, которое мы задали серверу.
Находим директивы ssl_certificate и ssl_certificate_key . Для них задаем правильные пути до сертификатов:
ssl_certificate /etc/jitsi/meet/jitsi.remontka.com.crt;
ssl_certificate_key /etc/jitsi/meet/jitsi.remontka.com.key;
После проверяем корректность конфигурационного файла и перезапускаем nginx:
nginx -t && nginx -s reload
Сертификат установлен.
По умолчанию после установки Jitsi пользователи могут заходить в систему и создавать комнаты для беседы без проверки подлинности. Для того, чтобы наша система требовала ввода логина и пароля, меняем настройку нашего сервера.
В первую очередь, откроем на редактирование конфигурационный файл компонента Prosody XMPP:
vi /etc/prosody/conf.avail/$(hostname).cfg.lua
Находим группу опций VirtualHost «<имя сервера>» и приводим к виду опции:
VirtualHost «jitsi.remontka.com»
— authentication = «jitsi-anonymous» — do not delete me
authentication = «internal_hashed»
…
* мы закомментировали строку с jitsi-anonymous , чтобы запретить анонимные соединения и добавили authentication = «internal_hashed» , чтобы требовать аутентификацию по логину и паролю.
Также в самый низ данного файла добавим:
…
VirtualHost «guest.jitsi.remontka.com»
authentication = «anonymous»
c2s_require_encryption = false
* в данном примере мы определяем хост guest.jitsi.remontka.com для анонимных запросов. Они нужны для возможности гостевого подключения к созданным конференциям. Важно отметить, что данное имя узла является внутренним и его нам не нужно добавлять в систему NS для его разрешения в IP-адрес.
Теперь откроем файл:
vi /etc/jitsi/meet/$(hostname)-config.js
Найдем строки:
hosts: {
// XMPP domain.
domain: ‘jitsi.remontka.com’
* где jitsi.remontka.com — имя нашего узла.
Добавим ниже строку с опцией anonymousdomain:
hosts: {
// XMPP domain.
domain: ‘jitsi.remontka.com’
anonymousdomain: ‘guest.jitsi.remontka.com’,
* данной строкой мы передаем серверу инструкцию, на каком хосте выполнять аутентификацию для анонимных пользователей.
Создаем файл:
vi /etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:jitsi.remontka.com
* где jitsi.remontka.com — имя нашего узла.
Перезапускаем службы:
systemctl restart jitsi-videobridge2 prosody jicofo
Создаем учетную запись для модератора (пользователя, под которым можно авторизоваться, чтобы создать комнату):
prosodyctl register admin $(hostname)
* в данном примере мы создаем пользователя admin .
После ввода команды система попросит ввести пароль для создаваемого пользователя. Придумываем и дважды его вводим.
Пробуем создать конференцию — мы должны увидеть сообщение, требующее дождаться модератора. Говорим, что мы и есть модератор:
Появится окно для ввода логина и пароля. Вводим данные для созданной учетной записи:
Мы должны получить права модератора и комната будет создана.
С системными настройками по умолчанию рекомендуется использовать Jitsi для 100 пользователей и меньше. Если число участников будет превышать, рекомендуется увеличить параметры:
Открываем файл:
vi /etc/systemd/system.conf
Приводим к виду вышеописанные опции:
DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000
Применяем настройки:
systemctl daemon-reexec
Проверить применение можно командой:
systemctl show —property DefaultLimitNOFILE
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…