Система веб-конференций 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-адрес и проверяем доступ в интернет
обновляем список пакетов программ
Код:
$ 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.
И добавьте следующие две строки внизу:
Код:
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"]
перезагружаемся
и пробуем зайти