Користувальницькькі налаштування

Налаштування сайту


bigbluebutton

Це стара версія документу!


BigBlueButton

Версія 2.6

Чи не найсуттєвішою відмінністю версії 2.6 є встановлення TURN-сервера за замовчуванням на тому ж комп'ютері, що й BigBlueButton. Це звільняє від необхідності використання додаткових сторонніх серверів для забезпечення підключення клієнтам з використанням TURN. Це досягається автоматичним встановленням та налаштуванням програми HAProxy на стандартному порті 443 (HTTPS), яка вміє відрізняти та перерозподіляти різні типи запитів до відповідних програм, зокрема, до TURN-сервера чи веб-сервера.

Проблема з Firefox

Якщо браузер Firefox не приймає та не передає зображення веб-камери або демонстрацію екрану, можливо, потрібно додати наступні рядки до файлу “/etc/bigbluebutton/bbb-html5.yml”:

"/etc/bigbluebutton/bbb-html5.yml"
public:
  media:
    forceRelayOnFirefox: false

Таке рішення підказано відповіддю на форумі, хоча і суперечить офіційній документації на момент написання цієї статті.

Можливо, це пов'язано із відомою вадою Firefox. Додаткову інформацію можна також прочитати у відповідних гілках форумів BigBlueButton та mediasoup.

Встановлення

1. Переадресування портів

Уявімо, що наш BBB-сервер встановлений в локальній мережі, відокремленій від Інтернету маршрутизатором. Нехай в нашого сервера локальна адреса 192.168.1.100. Тоді на маршрутизаторі потрібно налаштувати перенаправлення наступних портів:

TCP 80   - HTTP
TCP 443  - HTTPS
TCP 7443 - FreeSWITCH
TCP 1935 - Redis

та діапазон портів:

UDP 16384-32768 - WebRTC

2. Встановлення необхідних програм

Додати розділ multiverse до списку репозиторії Ubuntu у файлі /etc/apt/sources.list. Наприклад,

deb http://archive.ubuntu.com/ubuntu xenial multiverse

Підключити додаткові джерела програм та оновити систему:

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

Встановити 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

Встановити nodejs:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

3. Встановлення BBB

Встановити ключ репозиторія BigBlueButton:

wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -

Встановити основний сервер BigBlueButton та HTML5 клієнт:

echo "deb https://ubuntu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
sudo apt-get update
sudo apt-get install bigbluebutton
sudo apt-get install bbb-html5
sudo apt-get dist-upgrade

4. Перший запуск

Після встановлення BBB-сервера та HTML5 клієнта потрібно перезапустити сервер:

sudo bbb-conf --restart

Тоді можна перевірити його стан:

sudo bbb-conf --status
nginx —————————————————► [✔ - active]
freeswitch ————————————► [✔ - active]
redis-server ——————————► [✔ - active]
bbb-apps-akka —————————► [✔ - active]
bbb-transcode-akka ————► [✔ - active]
bbb-fsesl-akka ————————► [✔ - active]
red5 ——————————————————► [✔ - active]
mongod ————————————————► [✔ - active]
bbb-html5 —————————————► [✔ - active]
bbb-webrtc-sfu ————————► [✔ - active]
kurento-media-server ——► [✔ - active]
etherpad ——————————————► [✔ - active]
bbb-web ———————————————► [✔ - active]

або

sudo bbb-conf --check

Якщо все запустилося та працює, можна відкрити в браузері:

http://192.168.1.100/

Повинна з'явитися приблизно така сторінка:

5. Демо

Перевірити, чи сервер та HTML5 клієнт дійсно працюють, можна встановити демонстраційну сторінку:

sudo apt-get install bbb-demo

Це дозволить підключитися до сервера, вказавши деяке ім'я на сторінці входу (див. вище). При цьому оскільки ми підключилися за HTTP-протоколом, сервер може не дозволити там користуватися мікрофоном або камерою. Зазвичай вони дозволені лише для HTTPS-протоколу. Його ми налаштуємо пізніше.

Якщо демо-версія працює, потрібно видалити цю сторінку, щоб інші анонімні користувачі не могли під'єднуватися до нашого сервера.

sudo apt-get remove bbb-demo

6. SSL

Встановимо ім'я домену для нашого сервера. Наприклад, якщо ім'я bbb.myserver.org вже зареєстроване та вказує на IP-адресу нашого сервера (наприклад, 123.123.123.123),

ping bbb.myserver.org
PING bbb.myserver.org (123.123.123.123) 56(84) bytes of data.
64 bytes from 123.123.123.123: icmp_seq=1 ttl=44 time=27.5 ms

sudo bbb-conf --setip bbb.myserver.org

Далі нам необхідний буде дійсний SSL-сертифікат. Якщо його немає, його досить легко можна отримати за допомогою програми Certbot.

Веб-сервер

Згенеруємо параметри Діфі-Хелмана. Це не відбудеться миттєво, а займе кілька хвилин.

sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096

Потрібно увімкнути у веб-сервері можливість роботи за протоколом HTTPS та вказати дійсний сертифікат та ще деякі параметри. Для цього відредагуємо файл /etc/nginx/sites-available/bigbluebutton наступним чином:

server {
  server_name bbb.myserver.org;
  listen 80;
  listen [::]:80;
 
  #--- Додати наступні рядки ---
  listen 443 ssl;
  listen [::]:443 ssl;
 
  ssl_certificate /etc/ssl/certs/bbb.myserver.org.crt;
  ssl_certificate_key /etc/ssl/private/bbb.myserver.org.key;
  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;
  #-----------------------------

Тут

  • bbb.myserver.org – ім'я домену, яке ми зареєстрували для нашого сервера.
  • /etc/ssl/certs/bbb.myserver.org.crt – шлях до файлу з SSL-сертифікатом сервера для нашого домену. Якщо сертифікат було отримано за допомогою certbot, то він зазвичай розміщується у файлі /etc/letsencrypt/live/bbb.myserver.org/fullchain.pem. Його можна скопіювати до теки /etc/ssl/certs/.
  • /etc/ssl/private/bbb.myserver.org.key – шлях до файлу з секретним ключем, що відповідає сертифікату. certbot зазвичай розміщує ключ у файлі /etc/letsencrypt/live/bbb.myserver.org/privkey.pem, і його також можна скопіювати до теки /etc/ssl/certs/.

FreeSWITCH

Відредагуємо файл /etc/bigbluebutton/nginx/sip.nginx:

location /ws {
  proxy_pass https://123.123.123.123: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;
}

Тут важливо звернути увагу на рядок proxy_pass https://123.123.123.123:7443;, який містить, по-перше явну вказівку використовувати протокол HTTPS, по-друге, зовнішню IP-адресу нашого сервера (тобто адресу, яку має маршрутизатор у зовнішній мережі Інтернет, а також, на яку зареєстровано домен bbb.myserver.org), а також порт 7443.

HTTPS у BBB

Потрібно відредагувати наступні файли, вказавши в них протокол HTTPS у відповідних рядках конфігурації:

/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
#----------------------------------------------------
# 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
streamBaseUrl=rtmp://bigbluebutton.example.com/screenshare
jnlpUrl=https://bigbluebutton.example.com/screenshare
jnlpFile=https://bigbluebutton.example.com/screenshare/screenshare.jnlp
/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
note:
    enabled: true
    url: https://bbb.example.com/pad
/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml
playback_protocol: https

Далі у файлі /var/www/bigbluebutton/client/conf/config.xml вказати, що BBB має завантажувати компоненти за протоколом HTTPS. Це можна зробити однією командою:

sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml

Далі змінити ws на wss у файлі

/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
kurento:
    wsUrl: wss://bbb.example.com/bbb-webrtc-sfu

І перезапустити сервер

sudo bbb-conf --restart

7. NAT

Kurento

FreeSWITCH

/opt/freeswitch/conf/vars.xml
<X-PRE-PROCESS cmd="set" data="external_rtp_ip=123.123.123.123"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=123.123.123.123"/>
/opt/freeswitch/conf/sip_profiles/external.xml
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>

Віртуальний мережевий інтерфейс

Для того, щоб FreeSWITCH видавав клієнтам зовнішню IP-адресу, потрібно, щоб під час запуску він приєднався до мережевого інтерфейсу з цією адресою. Оскільки реального мережевого інтерфейсу із зовнішньою адресою всередині нашої локальної мережі нема. створимо віртуальний мережевий інтерфейс з такою адресою:

sudo ip addr add 123.123.123.123/32 dev lo

та перевіримо, чи він створився:

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 123.123.123.123/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

А для того, щоб не створювати цей віртуальний інтерфейс кожного разу вручну, можна його параметри внести до файлу конфігурації мережі:

/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
        post-up ip addr add 123.123.123.123/32 dev lo
        pre-down ip addr del 123.123.123.123/32 dev lo

Далі також потрібно вказати зовнішню адресу у файлі

/opt/freeswitch/conf/sip_profiles/external.xml
<param name="wss-binding"  value="123.123.123.123:7443"/>

Red5

Перевірити, чи вказано локальну IP-адресу у наступному файлі:

/usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties
bbb.sip.app.ip=192.168.1.100
bbb.sip.app.port=5070
 
freeswitch.ip=192.168.1.100
freeswitch.port=5060

Веб-сервер

/etc/bigbluebutton/nginx/sip.nginx
location /ws {
        proxy_pass https://123.123.123.123: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;
}

BBB

Якщо дозволено приєднання користувачів тільки для слухання (це можна перевірити наступним чином:)

grep enableListenOnly /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
    enableListenOnly: true

то необхідно також внести наступні зміни до файлу

/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml
freeswitch:
    ip: 123.123.123.123
    sip_ip: 192.168.1.100
    port: 7443

Коли всі файли конфігурації відредаговано, перезапустити BBB-сервер:

bbb-conf --restart

Додаткові можливості

Greenlight

TURN-сервер

Заборона перекодування відеозаписів при роботі від батареї

Якщо BigBlueButton встановлено на ноутбуку, задля економії заряду батареї бажано тимчасово вимкнути оброблення черги відеозаписів, адже перекодування відео потребує багатьох ресурсів, і може швидко витратити заряд батареї. Для того, щоб автоматично зупиняти чергу відеозаписів після відключення живлення від мережі та поновлювати її після підключення до мережі створимо новий файл із правилами для udev:

"/etc/udev/rules.d/50-disable-BBB-recordings-processing-while-on-battery.rules"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/bin/systemctl stop bbb-rap-starter.service"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/bin/systemctl start bbb-rap-starter.service"

після чого перезапустимо udev:

sudo systemctl restart udev.service
bigbluebutton.1690909617.txt.bz2 · В останнє змінено: 2023/08/01 20:06 by wombat