Платформа для проведения видеоконференций BigBlueButton. Установка

У всех нас может возникнуть потребность в проведении видеоконференции. Цели могут быть разные: совещание, обучение, а быть может и просто чтобы поболтать с друзьями.

Инструментов для таких задач сейчас представлено немало, но в рамках этой статьи хотелось бы остановиться именно на BigBlueButton. Главная идея при разработке данной платформы — «Она должна быть проста в использовании как большая синяя кнопка».

В данной статье мы поговорим о том, как установить BigBlueButton, в конце лежит ссылочка на интерактив.

Кому интересен данный вопрос — добро пожаловать под кат.

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

На момент написания данной статьи версия BigBlueButton 2.3 является самой свежей. Посмотрим минимальные системные требования для сервера в документации к BBB:

  • Ubuntu 18.04 64-bit OS running Linux kernel 4.x
  • Latest version of docker installed
  • 16 GB of memory with swap enabled
  • 8 CPU cores, with high single-thread performance
  • 500 GB of free disk space (or more) for recordings, or 50GB if session recording is disabled on the server
  • TCP ports 80 and 443 are accessible
  • UDP ports 16384 — 32768 are accessible
  • 250 Mbits/sec bandwidth (symmetrical) or more
  • TCP port 80 and 443 are not in use by another web application or reverse proxy
  • A hostname (such as bbb.example.com) for setup of a SSL certificate
  • IPV4 and IPV6 addresses

Если Вы устанавливаете BigBlueButton для локальной разработки на рабочей станции, Вы можете пренебречь некоторыми требованиями, поскольку к серверу будет подключаться лишь несколько клиентов. Ориентируясь на требования выше, Вы можете понизить их следующим образом:

  • 4 CPU cores/8 GB of memory
  • Installation on a local VM container
  • 50G of disk space
  • IPV4 address only

Вне зависимости от конфигурации оборудования, на сервер нужно будет установить SSL-сертификат. Причина в следующем: чтобы пользователи могли делиться аудио- и видеопотоками со своих компьютеров, все браузеры требуют валидный SSL-сертификат, дабы дать доступ к веб-камере и микрофону пользователя через WebRTC. Если подключаться к BigBlueButton только по IP-адресу, то браузеры заблокируют клиенту BBB доступ к веб-камере и микрофону.

▍ Заказ сервера

Для начала нам нужен сервер для размещения на нём BigBlueButton. На случай если он уже имеется — пролистайте до следующего раздела.

Разберём заказ сервера на примере RUVDS.

Переходим на сайт RUVDS.
Нажимаем на «Выбрать VPS».

В разделе «Своя конфигурация» нажимаем на «Собрать».

В появившейся форме заполняем данные для входа в аккаунт RUVDS и нажимаем «Войти». Если же аккаунта нет, нажимаем «Регистрация». Мы предполагаем, что аккаунт уже есть.

Выбираем из списка нужный дата-центр.

Пролистываем чуть ниже и выбираем нужную конфигурацию сервера. Напомним, что если сервер нужен для проведения видеоконференций, то необходимо 8 ядер CPU и 16 ГБ RAM. Если же на нём предполагается разработка, то будет достаточно 4 ядер и 8 ГБ соответственно.
В случае, если предполагается запись видеоконференций, объём диска должен быть не менее 500 ГБ. Если же не предполагается, то достаточно 100 ГБ; будет с небольшим запасом.
В качестве шаблона сервера выбираем «Docker CE — Ubuntu 18.04».
Затем выбираем необходимый срок аренды сервера.

Пролистав ещё чуть ниже, соглашаемся с условием публичной оферты, предоставляем согласие на обработку персональных данных, а затем нажимаем кнопку «Оплатить».

Появится форма выбора метода оплаты. Выбираем наиболее удобный и проходим через процедуру платежа.

После успешной оплаты появится соответствующее сообщение.
Нажимаем на кнопку «Мои сервера»

Появится список, содержащий только что заказанный сервер. Все необходимые данные для подключения (IP-адрес, user, password) будут находиться в соответствующих полях.

▍ Привязка доменного имени к серверу

Для корректной работы и получения SSL-сертификата, к серверу должно быть привязано доменное имя. Если оно уже привязано — пролистайте до следующего раздела.

Инструкция по привязке доменного имени на примере регистратора reg.ru

Привязка доменного имени к серверу на примере бесплатного сервиса freenom.com

Заходим на сайт freenom.com, вводим желаемое доменное имя и нажимаем на кнопку «Проверить доступность».

Далее нажимаем «Оформить заказ».

Затем кликаем «Use DNS».

В появившихся полях выбираем срок предоставления доменного имени, IP-адрес сервера и нажимаем кнопку «Continue».

В появившейся форме вводим валидный адрес электронной почты и нажимаем «Verify My Email Address».

Проверяем входящую почту на предмет пришедшего письма от Freenom. В пришедшем письме переходим по ссылке валидации.

В открывшейся форме заполняем поля.

После заполнения формы ставим флажок, соглашаясь с условиями, и нажимаем на «Complete Order».

Появление сообщения о подтверждении заказа свидетельствует, что процедура прошла успешно.

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

▍ Подготовка и проверка перед установкой

Итак, у нас есть сервер с 64-битным Ubuntu версии 18.04, с привязанным доменным именем. Перед тем как приступать непосредственно к инсталляции, проведём несколько проверок, чтобы убедиться, что сервер соответствует минимальным требованиям.
Проведение этих проверок сильно уменьшает шансы столкнуться с проблемами в процессе установки.
Также, установим необходимые пакеты и обновим сервер.

Подключимся к серверу по SSH. Инструкцию для пользователей Windows можно найти здесь.

Также, если мы подключаемся под пользователем root, то префиксы команд sudo везде ниже не нужны.

В первую очередь обновим сервер:

sudo apt update
sudo apt dist-upgrade

Затем установим пакет gnupg:

sudo apt install gnupg

Убедимся, что локаль сервера — en_US.UTF-8:

$ cat /etc/default/locale
LANG="en_US.UTF-8"

Если локаль отличается от en_US.UTF-8, наберём несколько команд, чтобы это исправить:

$ sudo apt-get install -y language-pack-en
$ sudo update-locale LANG=en_US.UTF-8"

Затем нужно выйти из SSH-сессии и зайти снова, это перезагрузит настройки локали для сессии.
Наберём команду cat /etc/default/locale. Необходимо убедиться, что есть только одна строка LANG=«en_US.UTF-8».

Если Вы видите ещё одну строку LC_ALL=en_US.UTF-8, уберите её из /etc/default/locale, после чего завершите SSH-сессию и откройте её снова.

Далее, выполняем команду sudo systemctl show-environment и убеждаемся, что видим LANG=en_US.UTF-8:

$ sudo systemctl show-environment
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Если LANG=en_US.UTF-8 нет, то выполняем команду sudo systemctl set-environment LANG=en_US.UTF-8, а затем ещё раз выполняем sudo systemctl show-environment, чтобы убедиться, что в выводных данных LANG=en_US.UTF-8

Затем убедимся, что на сервере есть 16 ГБ оперативной памяти при помощи команды free -h. Выводные данные должны быть примерно такими:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        3.1G        1.0G        305M         11G         12G
Swap:            0B          0B          0B

Если в строке Mem в столбце total менее 15G, то серверу недостаточно памяти для запуска BigBlueButton в боевом режиме, и необходимо увеличить количество памяти хотя бы до 16G. Впрочем, если Вы планируете использовать сервер для задач разработки, 8G будет достаточно.

Далее, убедимся, что на сервер установлена Ubuntu 18.04:

$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"

Удостоверимся, что запущена 64-разрядная версия Ubuntu:

$ uname -m
x86_64

Далее, проверим, что сервер поддерживает IPv6:

$ ip addr | grep inet6
inet6 ::1/128 scope host
...

Если нет строки inet6 ::1/128 scope host, то после установки BigBlueButton нужно будет внести изменения в настройки FreeSWITCH, чтобы отключить поддержку IPv6.

Следующим шагом убедимся, что сервер запущен на ядре Linux v.4.x:

$ uname -r
4.15.0-NNN-generic

Далее, проверим, что у сервера есть минимум 8 ядер. Напоминаем, что для задач разработки достаточно 4 ядра:

$ cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l
8

Итак, мы закончили предустановочные проверки и настройки. Следующий шаг — непосредственно установка BigBlueButton.

▍ Установка BigBlueButton

Установка BigBlueButton производится скриптом bbb-install.sh. Данная ссылка содержит подробную информацию по использованию данного скрипта.

Как пример, команда ниже устанавливает BigBlueButton 2.3, используя имя хоста bbb-test.cf и адрес электронной почты (для Let’s Encrypt) notice@example.com. Она устанавливает (или обновляет, если команда перезапущена позже) последнюю версию BigBlueButton 2.3 при помощи опции -v bionic-230. Также, она устанавливает демо-API (-a) и сетевой экран (-w)

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v bionic-230 -s bbb-test.cf -e notice@example.com  -a -w

Перед выполнением команды замените электронную почту notice@example.com на валидную.

После того как скрипт bbb-install.sh закончит свою работу, можно проверить состояние сервера командой bbb-conf —check.

Результат будет примерно таким:

$ sudo bbb-conf --check
BigBlueButton Server 2.3.10 (2419)
                    Kernel version: 4.15.0-153-generic
                      Distribution: Ubuntu 18.04.5 LTS (64-bit)
                            Memory: 16414 MB
                         CPU cores: 8

/etc/bigbluebutton/bbb-web.properties (override for bbb-web)
/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties (bbb-web)
       bigbluebutton.web.serverURL: https://bbb-test.cf
                defaultGuestPolicy: ALWAYS_ACCEPT
                 svgImagesRequired: true

/etc/nginx/sites-available/bigbluebutton (nginx)
                       server_name: bbb-test.cf
                              port: 80, [::]:80
                              port: 443 ssl

/opt/freeswitch/etc/freeswitch/vars.xml (FreeSWITCH)
                       local_ip_v4: 193.108.114.47
                   external_rtp_ip: 193.108.114.47
                   external_sip_ip: 193.108.114.47

/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml (FreeSWITCH)
                        ext-rtp-ip: $${local_ip_v4}
                        ext-sip-ip: $${local_ip_v4}
                        ws-binding: 193.108.114.47:5066
                       wss-binding: 193.108.114.47:7443

/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml (record and playback)
                     playback_host: bbb-test.cf
                 playback_protocol: https
                            ffmpeg: 4.2.4-1ubuntu0.1bbb2~18.04

/etc/bigbluebutton/nginx/sip.nginx (sip.nginx)
                        proxy_pass: 193.108.114.47
                          protocol: http

/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml (Kurento SFU)
                        kurento.ip: 193.108.114.47
                       kurento.url: ws://127.0.0.1:8888/kurento
                    kurento.sip_ip: 193.108.114.47
                    localIpAddress: 193.108.114.47
               recordScreenSharing: true
                     recordWebcams: true
                  codec_video_main: VP8
               codec_video_content: VP8

/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml (HTML5 client)
                             build: 1829
                        kurentoUrl: wss://bbb-test.cf/bbb-webrtc-sfu
                  enableListenOnly: true
                    sipjsHackViaWs: true

/usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml (STUN Server)
                              stun: stun.l.google.com:19302


# Potential problems described below
..........................
# Warning: The API demos are installed and accessible from:
#
#    https://bbb-test.cf
#
# and
#
#    https://bbb-test.cf/demo/demo1.jsp
#
# These API demos allow anyone to access your server without authentication
# to create/manage meetings and recordings. They are for testing purposes only.
# If you are running a production system, remove them by running:
#
#    apt-get purge bbb-demo

Также, можно использовать команду sudo bbb-conf —status чтобы проверить все ли процессы BigBlueButton стартовали и работают.

Примерный результат:

nginx —————————————————► [ - active]
freeswitch ————————————► [ - active]
redis-server ——————————► [ - active]
bbb-apps-akka —————————► [ - active]
bbb-fsesl-akka ————————► [ - active]
tomcat8 ———————————————► [ - active]
mongod ————————————————► [ - active]
bbb-html5 —————————————► [ - active]
bbb-webrtc-sfu ————————► [ - active]
kurento-media-server ——► [ - active]
bbb-html5-backend@1 ———► [ - active]
bbb-html5-backend@2 ———► [ - active]
bbb-html5-frontend@1 ——► [ - active]
bbb-html5-frontend@2 ——► [ - active]
etherpad ——————————————► [ - active]
bbb-web ———————————————► [ - active]

▍ Итог

Итак, мы рассмотрели системные требования к BigBlueButton, выполнили предустановочные операции и провели установку продукта.
Перейдём по ссылке bbb-test.cf и посмотрим что мы получили в итоге.

Появится приветственное меню. Введём в поле ввода своё имя и нажмём «Join»:

Затем давайте попробуем включить микрофон в конференции:

Разрешаем доступ к микрофону:

Нажимаем на «Да», если наш голос слышен, или на «Нет» в противном случае:

Итак, открылась сама конференция:

В ней уже можно проводить собрания, несмотря на то, что это API — демонстрационное.
Если потребуется разработать что-либо на базе BigBlueButton, продукт обладает обширной документацией, что здорово поможет в деле.

Ну что же, пора и завершаться. Стабильной работы оборудования и приятных конференций!

Источник: https://habr.com/ru/company/ruvds/blog/570804/

Was this helpful?

0 / 0