Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Linux

BigBlueButton - система веб-конференций с открытым исходным кодом для онлайн-обучения

14.07.2020 16:24


12.04.2020 01:32
mamont
 
Система веб-конференций BigBlueButton - вы получаете основные функции, которые вы ожидаете от коммерческой системы веб-конференций (но по лицензии с открытым исходным кодом). Эти функции включают в себя обмен аудио, видео, презентациями и экранами в режиме реального времени, а также инструменты для совместной работы, такие как доска, общие заметки, опрос и комнаты обсуждения. BigBlueButton может записывать ваши сеансы для последующего воспроизведения.


для работы нам понадобится
Ubuntu 16.04 64-bit OS running Linux kernel 4.x
минимальные ресурсы
8GB оперативной памяти (желательно 16GB и более)
4x-ядерный процессор (желательно 8 и более)
белый ip адрес и доменное имя на этот адрес
дополнительно желательно 500Gb и более для видеозаписей

устанавливаем ubuntu-16.04.6-server-amd64
при установке выбираем локаль en_US.UTF-8

настраиваем ip-адрес и проверяем доступ в интернет
Код:
ping -c 3 8.8.8.8
обновляем список пакетов программ
Код:
$ sudo apt-get update
ставим iptables-persistent для сохранения правил iptables
Код:
$ sudo apt-get install iptables-persistent
пишем правила iptables
Код:
$ sudo iptables -F
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables -A INPUT -p icmp -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 7443 -j ACCEPT
$ sudo iptables -A INPUT -p udp --dport 16384:32768 -j ACCEPT
$ sudo iptables -P INPUT DROP
сохраняем правила
Код:
$ sudo /etc/init.d/netfilter-persistent save
ставим некоторое вспомогательное по в том числе apt-transport-tor
Код:
$ sudo apt-get install apt-transport-https apt-transport-tor ca-certificates curl gnupg-agent software-properties-common
Для BigBlueButton необходимы два приложения: ffmpeg(создание записей) и yq(обновление файлов YAML).
Версия по умолчанию ffmpegв Ubuntu 16.04 устарела и yq не существует в репозиториях по умолчанию.
Поэтому перед установкой BigBlueButton необходимо добавить следующие личные архивы пакетов (PPA)
на сервер, чтобы убедиться, что установлены правильные версии.
Код:
$ sudo add-apt-repository ppa:bigbluebutton/support -y
$ sudo add-apt-repository ppa:rmescandon/yq -y
Затем обновляем сервер до последних пакетов.
Код:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
HTML5-клиент BigBlueButton использует MongoDB, ставим
Код:
$ wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org curl
HTML5-клиент BigBlueButton требует наличия сервера nodejs, ставим
Код:
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
скачиваем и добавляем ключ репозитория BigBlueButton
так как РКН закрыл доступ до репозитория используем tor
Код:
$ curl --socks5-hostname localhost:9050 -O https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc
$ sudo apt-key add ./bigbluebutton.asc
добавляем репозиторий. указывая tor+https для того чтобы гарантировано добраться до пакетов.
Код:
$ echo "deb tor+https://ubuntu.bigbluebutton.org/xenial-220/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
устанавливаем bigbluebutton и bbb-html5
так как скачиваться через tor будет медленно, не переживаем, часок другой отдохнем.
Код:
$ sudo apt-get update
$ sudo apt-get install bigbluebutton
$ sudo apt-get install bbb-html5
Примечание 1: Вы можете игнорировать любые ошибки «Невозможность загрузить дополнительные файлы данных»
для ttf-mscorefonts-installer пакета. Это известная проблема с Ubuntu 16.04.

Примечание 2: Если установка завершается с ошибкой перед завершением,
выполните проверку в разделе Перед установкой . Если вы найдете и исправите
ошибки конфигурации, вы можете попытаться завершить установку с помощью
команды sudo apt-get install -f

после установки посмотрим настройку
Код:
$ sudo bbb-conf --check
Любой последующий вывод после строчки ** Potential problems described below ** может указывать на ошибки конфигурации или ошибки установки.

указываем свой домен
Код:
bbb-conf --setip bbb.okeyit.ru
современные браузеры запрешают передачу видео и звука по открытым каналам, для нормальной работы нам нужен сертификат для работы https
проще всего его взять у Let’s Encrypt
ставим инструмент для работы с Let’s Encrypt
Код:
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get install certbot
генерим набор diffie-hellman.
Код:
$ sudo mkdir -p /etc/nginx/ssl
$ sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
это надолго. делаем гимнастику.

запрашиваем сертификат
Код:
$ sudo certbot --webroot -w /var/www/bigbluebutton-default/ -d bigbluebutton.example.com certonly
Это сгенерирует следующие файлы
Код:
$ ls /etc/letsencrypt/live/bigbluebutton.example.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem
отредактируем файл конфигурации nginx /etc/nginx/sites-available/bigbluebutton
и добавляем использование ssl

Код:
server {
  server_name bigbluebutton.example.com;
  listen 80;
  listen [::]:80;
  listen 443 ssl;
  listen [::]:443 ssl;
  ssl_certificate /etc/letsencrypt/live/bigbluebutton.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/bigbluebutton.example.com/privkey.pem;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
  ssl_prefer_server_ciphers on;
  ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;
перезапускаем nginx
Код:
$ sudo /etc/init.d/nginx restart
Сертификаты Let's Encrypte действительны в течение 90 дней и могут быть автоматически продлены. Чтобы автоматически запрашивать обновление раз в неделю, отредактируйте файл crontab для root.
Код:
$ sudo crontab -e
И добавьте следующие две строки внизу:
Код:
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx
Редактируем файл /etc/bigbluebutton/nginx/sip.nginx и меняем протокол и порт в строке proxy_pass, как показано:

Код:
location /ws {
  proxy_pass https://203.0.113.1:7443;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
  proxy_read_timeout 6h;
  proxy_send_timeout 6h;
  client_body_timeout 6h;
  send_timeout 6h;
}
Отредактируйте /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
и обновите свойство bigbluebutton.web.serverURLдля использования HTTPS:
Код:
#----------------------------------------------------
# This URL is where the BBB client is accessible. When a user successfully
# enters a name and password, she is redirected here to load the client.
bigbluebutton.web.serverURL=https://bigbluebutton.example.com
Редактируем файл /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties
и обновим свойство jnlpUrl и jnlpFile к HTTPS:
Код:
streamBaseUrl=rtmp://bigbluebutton.example.com/screenshare
jnlpUrl=https://bigbluebutton.example.com/screenshare
jnlpFile=https://bigbluebutton.example.com/screenshare/screenshare.jnlp
также должны обновить файл /var/www/bigbluebutton/client/conf/config.xml чтобы сообщить клиенту BigBlueButton о загрузке компонентов через HTTPS.
Вы можете сделать обновление с помощью одной команды
Код:
$ sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml
Открыть /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml и изменить:
Код:
  kurento:
    wsUrl: ws://bbb.example.com/bbb-webrtc-sfu
в
Код:
  kurento:
    wsUrl: wss://bbb.example.com/bbb-webrtc-sfu
а так же
Код:
  note:
    enabled: true
    url: http://bbb.example.com/pad
в
Код:
  note:
    enabled: true
    url: https://bbb.example.com/pad
Редактируем /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml для работы видеозаписей через https:
Код:
playback_protocol: https
так как флеш уже устарел включим использование html5 по умолчанию.
Редактируем /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
меняем false на true в строчках
Код:
# Force all attendees to join the meeting using the HTML5 client
attendeesJoinViaHTML5Client=true
# Force all moderators to join the meeting using the HTML5 client
moderatorsJoinViaHTML5Client=true
перезапускаем все компоненты bigbluebutton
Код:
$ sudo bbb-conf --restart
дальше нам понадобится установить панель управления greenlight

ставим docker и docker-compose
Код:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
создаем каталог Greenlight для его конфигурации
Код:
  mkdir ~/greenlight && cd ~/greenlight
генерируем образ Greenlight
Код:
  docker run --rm bigbluebutton/greenlight:v2 cat ./sample.env > .env
docker нужен секретный ключ для запуска, генерируем
Код:
  docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret
редактируем .env файл. установите SECRET_KEY_BASE опцию на этот ключ.

смотрим секретный ключ bigbluebutton
Код:
$ sudo bbb-conf --secret
редактируем .env файл установите BIGBLUEBUTTON_ENDPOINT URL-адрес и установите BIGBLUEBUTTON_SECRET секретный ключ.

проверяем настройку
Код:
  docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check
добавим виртуальный каталог в nginx, Конфигурация Nginx для этого подкаталога хранится в образе Greenlight.
Чтобы добавить этот файл конфигурации на ваш сервер BigBlueButton, запустите:
Код:
docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx
так как на корневой странице не будем ничего ставить настроим перенаправление на Greenlight
для этого добавим следующую запись в нижней части /etc/nginx/sites-available/bigbluebutton перед последним } символом.

Код:
location = / {
  return 307 /b;
}
скопировать docker-compose.yml файл с изображения Greenlight в ~/greenlightкаталог. Для этого запустите:
Код:
 docker run --rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > docker-compose.yml
генерим случайный пароль для базы данных
Код:
export pass=$(openssl rand -hex 8); sed -i 's/POSTGRES_PASSWORD=password/POSTGRES_PASSWORD='$pass'/g' docker-compose.yml;sed -i 's/DB_PASSWORD=password/DB_PASSWORD='$pass'/g' .env
запускаем Greenlight
Код:
docker-compose up -d
создаем учетную запись администратора
Код:
docker exec greenlight-v2 bundle exec rake user:create["mamont","e@mail","Password","admin"]
перезагружаемся
Код:
shutdown -r now
и пробуем зайти
Нажмите на изображение для увеличения
Название: привет.png
Просмотров: 108
Размер:	85.8 Кб
ID:	10757
12.04.2020 08:47
mamont
 
на docs.bigbluebutton есть установочный скрипт, только он не устанавливает Greenlight, https и не настраивает html5, а так же не может работать в России из за блокировок роскомнадзора. если кто-то возьмется сделать доработанную версию установочного скрипта, будет еще лучше.
26.05.2020 12:03
kravit
 
Добрый день. Спасибо за статью. С помощью ее я смог установить bigbluebutton и Greenlight. Все работает отлично, но есть вопрос?
Как можно изменить начальную страницу в Greenlight?
Когда пользователь регистрируется хотелось изменить текст приветствия и может добавить свои картинки и др.
Я так понял что Greenlight работает на docker.
при установке Greenlight создается каталог /home/bbb/greenlight но в этом каталоге кроме настроечного файла и папки db нет.
Если вы знаете? можете подсказать как изменить начальную страницу регистрации пользователя?
Заранее спасибо!
27.05.2020 15:43
mamont
 
greenlight работает в docker.
надо достать файлы страницы приветствия из docker
SQL код:
docker cp greenlight-v2:/usr/src/app/app/views/main/index.html.erb 
это сама страничка-шаблон в который текст подставляется из локали.
SQL код:
docker cp greenlight-v2:/usr/src/app/config/locales/ru.yml 
это файл русской локали, там есть такой текст:
SQL код:
 landing:
    
about"%{href} это упрощенный веб интерфейс для вашего сервера веб конференций открытым исходным кодом BigBlueButton. Вы можете создавать свои собственные комнаты для проведения встр
    welcome: Добро пожаловать в BigBlueButton. 
меняете шаблон либо только локаль и заливаете обратно и перезапускаете контейнер.
05.06.2020 08:28
Lodin
 
Спасибо за отличную инструкцию.
Подскажите, есть проблемы со звуком на сотовых. При использовании мобильной связи нет звука и не возможно включить микрофон, при этом если включить вайфай на телефоне все работает?
05.06.2020 11:30
mamont
 
сложно сказать. может быть все что угодно. настройки телефона по экономии трафика мобильного интернета, настройки безопасности браузера по использованию микрофона. недостаток скорости мобильного интернета. возможна даже блокировка сотовым оператором определенных видов трафика. попробуйте сим-карту другого оператора.
08.06.2020 16:36
vendogs
 
Во-первых, действительно БОЛЬШОЕ спасибо за инструкцию. Вроде бы и перевод с официальной английской, но всё-таки адаптация и разобраться гораздо проще. Начинал с официальной инструкции, а заканчивал уже по Вашей. Спасибо.

Прошу помощи в редактировании файла локализации. Точнее по вашей команде docker cp greenlight-v2:/usr/src/app/config/locales/ru.yml . выгрузил и отредактировал ru.yml.
Вопрос: как реализовать "заливаете обратно и перезапускаете контейнер"?
В линуксе не бум-бум. Эксперементировать не хочу, так как сервер уже в работе =)

Спасибо еще раз.
08.06.2020 16:44
mamont
 
команда
SQL код:
sudo docker cp greenlight-v2:/usr/src/app/config/locales/ru.yml 
скопирует файл ru.yml в каталог в котором сейчас находитесь.
команда
SQL код:
sudo docker cp ./ru.yml greenlight-v2:/usr/src/app/config/locales/ru.yml 
перезапишет этот же файл из текущего каталога в контейнер.

для перезапуска
SQL код:
sudo docker restart greenlight-v2 

Правка: mamont, 08.06.2020 16:55 Причина: уточнение

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.