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

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

05.06.2020 8:02


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
Просмотров: 92
Размер:	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. 
меняете шаблон либо только локаль и заливаете обратно и перезапускаете контейнер.

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