![](https://habrastorage.org/webt/6-/5f/aq/6-5faq2b4xpcaif5dna3tazlldw.jpeg)
У всех нас может возникнуть потребность в проведении видеоконференции. Цели могут быть разные: совещание, обучение, а быть может и просто чтобы поболтать с друзьями.
Инструментов для таких задач сейчас представлено немало, но в рамках этой статьи хотелось бы остановиться именно на BigBlueButton. Главная идея при разработке данной платформы — «Она должна быть проста в использовании как большая синяя кнопка».
В данной статье мы поговорим о том, как установить BigBlueButton на свой сервер. Кому интересен данный вопрос — добро пожаловать под кат.
▍ Системные требования
На момент написания данной статьи версия BigBlueButton 2.3 является самой свежей. Посмотрим минимальные системные требования для сервера в документации к BBB:
Если Вы устанавливаете BigBlueButton для локальной разработки на рабочей станции, Вы можете пренебречь некоторыми требованиями, поскольку к серверу будет подключаться лишь несколько клиентов. Ориентируясь на требования выше, Вы можете понизить их следующим образом:
- 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
Вне зависимости от конфигурации оборудования, на сервер нужно будет установить SSL-сертификат. Причина в следующем: чтобы пользователи могли делиться аудио- и видеопотоками со своих компьютеров, все браузеры требуют валидный SSL-сертификат, дабы дать доступ к веб-камере и микрофону пользователя через WebRTC. Если подключаться к BigBlueButton только по IP-адресу, то браузеры заблокируют клиенту BBB доступ к веб-камере и микрофону.
- 4 CPU cores/8 GB of memory
- Installation on a local VM container
- 50G of disk space
- IPV4 address only
▍ Заказ сервера
Для начала нам нужен сервер для размещения на нём BigBlueButton. На случай если он уже имеется — пролистайте до следующего раздела.
Нажимаем на «Выбрать VPS».
![](https://habrastorage.org/webt/p5/zk/if/p5zkif4rghfmlvynvzclwxir6pe.png)
В разделе «Своя конфигурация» нажимаем на «Собрать».
![](https://habrastorage.org/webt/h7/v9/x9/h7v9x9wkr6n3hak3hcuiewznqey.png)
В появившейся форме заполняем данные для входа в аккаунт RUVDS и нажимаем «Войти». Если же аккаунта нет, нажимаем «Регистрация». Мы предполагаем, что аккаунт уже есть.
![](https://habrastorage.org/webt/km/zp/l2/kmzpl2s9vv-ge9b1uvg46thcrne.png)
Выбираем из списка нужный дата-центр.
![](https://habrastorage.org/webt/fv/ze/jm/fvzejmfx79audmh1jh2d0qcydku.png)
Пролистываем чуть ниже и выбираем нужную конфигурацию сервера. Напомним, что если сервер нужен для проведения видеоконференций, то необходимо 8 ядер CPU и 16 ГБ RAM. Если же на нём предполагается разработка, то будет достаточно 4 ядер и 8 ГБ соответственно.
В случае, если предполагается запись видеоконференций, объём диска должен быть не менее 500 ГБ. Если же не предполагается, то достаточно 100 ГБ; будет с небольшим запасом.
В качестве шаблона сервера выбираем «Docker CE — Ubuntu 18.04».
Затем выбираем необходимый срок аренды сервера.
![](https://habrastorage.org/webt/fc/dc/on/fcdcon_fgbvtgat8zvtk107jpny.png)
Пролистав ещё чуть ниже, соглашаемся с условием публичной оферты, предоставляем согласие на обработку персональных данных, а затем нажимаем кнопку «Оплатить».
![](https://habrastorage.org/webt/ef/ev/pb/efevpbtruepeggvi-3z93uo2yxa.png)
Появится форма выбора метода оплаты. Выбираем наиболее удобный и проходим через процедуру платежа.
![](https://habrastorage.org/webt/wq/il/7m/wqil7mdb1thgeyqr-bgc1q_2txg.png)
После успешной оплаты появится соответствующее сообщение.
Нажимаем на кнопку «Мои сервера»
Появится список, содержащий только что заказанный сервер. Все необходимые данные для подключения (IP-адрес, user, password) будут находиться в соответствующих полях.
![](https://habrastorage.org/webt/q1/l0/0o/q1l00oeb3ffohdvd8fuu7ngi6k0.png)
▍ Привязка доменного имени к серверу
Для корректной работы и получения SSL-сертификата, к серверу должно быть привязано доменное имя. Если оно уже привязано — пролистайте до следующего раздела.
Инструкция по привязке доменного имени на примере регистратора reg.ru
![](https://habrastorage.org/webt/x7/z7/_t/x7z7_twgeyjup3dkbbcm5d0fb-c.png)
Далее нажимаем «Оформить заказ».
![](https://habrastorage.org/webt/uz/jp/a9/uzjpa9nv-3efvphsjbwkd31tssw.png)
Затем кликаем «Use DNS».
![](https://habrastorage.org/webt/8w/22/a7/8w22a7iiwbc3ypmmrb7wxtbmazq.png)
В появившихся полях выбираем срок предоставления доменного имени, IP-адрес сервера и нажимаем кнопку «Continue».
![](https://habrastorage.org/webt/gp/wv/nk/gpwvnkjy5hqjjiadpayz1bepms4.png)
В появившейся форме вводим валидный адрес электронной почты и нажимаем «Verify My Email Address».
![](https://habrastorage.org/webt/gs/we/vr/gswevrmgalwvbixzbegdicmy2r4.png)
Проверяем входящую почту на предмет пришедшего письма от Freenom. В пришедшем письме переходим по ссылке валидации.
![](https://habrastorage.org/webt/5g/8o/kf/5g8okf5ycya9kccj3hgamlwlku8.png)
В открывшейся форме заполняем поля.
![](https://habrastorage.org/webt/d6/lc/ko/d6lckoq43s7zhqz_rhcu4hekgns.png)
После заполнения формы ставим флажок, соглашаясь с условиями, и нажимаем на «Complete Order».
![](https://habrastorage.org/webt/jm/dt/7q/jmdt7qo9w_wfsaw08gjv8t0kjfw.png)
Появление сообщения о подтверждении заказа свидетельствует, что процедура прошла успешно.
![](https://habrastorage.org/webt/wn/sh/47/wnsh47kur4toqge5ykq5u7wqyp0.png)
Потребуется некоторое время, пока обновленная информация о доменных записях распространится между другими 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
Раздел Potential problems может содержать ошибки конфигурации или ошибки установки. Во многих случаях сообщения в разделе будут содержать рекомендации как устранить эти ошибки.
Также, можно использовать команду 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»:
![](https://habrastorage.org/webt/is/vi/ae/isviaevn7hztug1xu9nvj5oljyg.png)
Затем давайте попробуем включить микрофон в конференции:
![](https://habrastorage.org/webt/vz/cb/zy/vzcbzyjcqgfw_b0wnrht374oe2a.png)
Разрешаем доступ к микрофону:
![](https://habrastorage.org/webt/vy/sh/tn/vyshtn5bcn1kxkfuo-cagfxteza.png)
Нажимаем на «Да», если наш голос слышен, или на «Нет» в противном случае:
![](https://habrastorage.org/webt/up/af/db/upafdbmd5ir9sbtnczyhjzulam0.png)
Итак, открылась сама конференция:
![](https://habrastorage.org/webt/1v/i8/ye/1vi8yey-vmg7jekkanu9aufwocu.png)
В ней уже можно проводить собрания, несмотря на то, что это API — демонстрационное.
Если потребуется разработать что-либо на базе BigBlueButton, продукт обладает обширной документацией, что здорово поможет в деле.
Ну что же, пора и завершаться. Стабильной работы оборудования и приятных конференций!
![](https://habrastorage.org/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)
Комментарии (18)
Renaissance
16.08.2021 15:02+2Про установку Greenlight, а еще лучше, про установку любого другого WebUI (с регистрацией, правами и прочими функциями) планируются статьи?
Просто пользоваться этим на стандартном bbb-demo не комильфо, абсолютно.
SerjV
17.08.2021 12:15А кроме Гринлайта есть еще WebGUI для BBB?.. Т.е. помимо интеграций разной степени доделанности с другими продуктами, которые резонно рассматривать в контексте этих продуктов, а не BBB?..
И кстати ж да, странно, что установка Гринлайта не рассмотрена в статье — она ж «искаропки» инсталлятором делается!Renaissance
17.08.2021 12:19Их мало, например https://github.com/THM-Health/PILOS
SerjV
17.08.2021 13:21Хмм… Действительно было бы интересно посмотреть на альтернативы и сравнение их возможностей, раз они есть…
Спасибо за информацию, т.к. думал, что, из-за «интеграционной» направленности BBB, кроме гринлайта другой морды и нет за, эээээ, ненадобностью. Тем более, что Гринлайт можно поставить при инсталляции BBB.
И опять же… Инсталляция дело нехитрое, можно и по родному мануалу сделать (хотя тому, кто «слышал» про BBB, но вживую не пробовал, дополнительная информация не помешает), а вот про фишки типа альтернативных WebUI или балансировки нагрузки почитать — было бы интересно и тем, кто его видел… (например, мне :) )Renaissance
17.08.2021 13:23Если я не ошибаюсь, балансировка на стороне самого bbb, webui как единая точка входа для запуска просто, не более.
SerjV
17.08.2021 17:14Тогда в чём смысл проекта типа github.com/blindsidenetworks/scalelite и статей типа aws.amazon.com/ru/blogs/opensource/how-to-build-a-scalable-bigbluebutton-video-conference-solution-on-aws?
p.s. и про игрища из разряда «нельзя, но если хочется — то можно» в виде рекомендации запускать BBB на железе, но при желании можно и в виртуалке, тоже стоит рассказать…Renaissance
17.08.2021 17:21Тут я ошибся. Увы, опыта требующего балансировки с ним у меня не было.
Проекты кстати хорошие, тоже неплохо было бы упомянуть что такое возможно.
SerjV
18.08.2021 04:35Да вот же… Это ж самое интересное )
А так BBB с Greenline и Letsencrypt можно поставить штатным инсталлятором в одну команду. Дольше объяснять что из возможного там зачем, в каких случаях оно надо или наоборот, не надо.
И даже, почитав доку, кое-какую кастомизацию гринлайну и BBB сделать (правда, там есть подозрение на наличие нюансов)…
posledny
31.08.2021 18:06Так вроде установка и настройка Greenlight хорошо описана в доке https://docs.bigbluebutton.org/greenlight/gl-install.html. У нас больше года крутится, все прекрасно работает, абсолютно стабильно переваривает >100 участников одновременно, если видео не включать )
Miiko
16.08.2021 20:38все браузеры требуют валидный SSL-сертификат, дабы дать доступ к веб-камере и микрофону пользователя через WebRTC.
Это не совсем так - для доступа к локальным устройствам никакому браузеру SSL сертификат на сервере не нужен. Он нужен для установки TLS соединения с сервером (без которого WebRTC peer connection не работает).
kiloper
17.08.2021 10:44Давно используем, про масштабирование его расскажите пожалуйста, параметры железа и выдерживаемую нагрузку.
Nesmiyanov Автор
17.08.2021 11:31Требования по железу согласно официальной документации:
- Ubuntu 18.04 64-bit OS running Linux kernel 4.x
- 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
По прикидкам сервер должен выдерживать 15-20 человек, зависит от скорости соединения.
По масштабированию подсказать не могу, к сожалению.Renaissance
17.08.2021 13:26По прикидкам сервер должен выдерживать 15-20 человек, зависит от скорости соединения. По масштабированию подсказать не могу, к сожалению.
по только голосу, без трансляции экрана, данная конфигурация выдержит и большее количество участников. А вот для трансляции экрана уже больше требования к каналу сети, при чем больше на стороне клиентов (если они из одной точки участвуют).
Mchechulin
31.08.2021 18:06Как по мне, то BBB всё-таки приложение для проведения вебинаров или каких-то обучающих занятий. Просто для ВКС можно использовать Jitsi Meet. Там гораздо проще разобраться с той же аутентификацией пользователей, хотя без чтения мануалов тоже не обойтись.
Ion_Storm
Оу! Сколько лет прошло, а проект еще жив и развивается? Круто, спасибо, буду иметь в виду.
Renaissance
После начала пандемии он стал развиваться раз в 10 быстрее и сейчас релизы выходят достаточно часто, по несколько раз в месяц (в 2019 году это был один, максимум два релиза в месяц).