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

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


bigbluebutton

BigBlueButton

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

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.txt · В останнє змінено: 2020/05/23 23:17 by wombat