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

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


bigbluebutton

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Наступна ревізія
Попередня ревізія
bigbluebutton [2020/05/20 21:59]
wombat створено
bigbluebutton [2024/04/01 22:32] (поточний)
wombat Запис сеансів до відеофайлу
Рядок 1: Рядок 1:
 ====== BigBlueButton ====== ====== BigBlueButton ======
  
 +
 +
 +====== Версія 2.6 ======
 +
 +Чи не найсуттєвішою відмінністю версії 2.6 є [[https://​docs.bigbluebutton.org/​new-features/#​bbb-install-26sh-installs-a-local-turn-server-and-shares-port-443-by-default | встановлення TURN-сервера за замовчуванням]] на тому ж комп'​ютері,​ що й BigBlueButton. Це звільняє від необхідності використання додаткових сторонніх серверів для забезпечення підключення клієнтам з [[#​turn-сервер|використанням TURN]]. Це досягається автоматичним встановленням та налаштуванням програми [[https://​www.haproxy.org/​ | HAProxy]] на стандартному порті 443 (HTTPS), яка вміє відрізняти та перерозподіляти різні типи запитів до відповідних програм,​ зокрема,​ до TURN-сервера чи веб-сервера.
 +
 +
 +
 +===== Оновлення з попередніх версій =====
 +
 +
 +==== З версії 2.5 ====
 +
 +Оновлення з версії 2.5 відбувається повністю автоматично((https://​docs.bigbluebutton.org/​administration/​install/#​upgrading-from-bigbluebutton-25)) за допомогою скрипту [[https://​github.com/​bigbluebutton/​bbb-install/​blob/​master/​bbb-install-2.6.sh | ''​bbb-install-2.6.sh''​]].
 +
 +Приклад команди для оновлення сервера BigBlueButton:​
 +
 +  sudo GL_PATH='/​gl'​ ./​bbb-install-2.6.sh -v focal-260 -s bbb.myserver.org -e email@domain.com -g
 +
 +Тут ''​bbb.myserver.org''​ -- це доменне ім'​я,​ прив'​язане до нашого сервера,​ а ''​email@domain.com''​ -- це адреса електронної пошти, що використовується для реєстрації SSL-сертифіката для цього домену. Сертифікат отримується автоматично від [[ssl#​let_s_encrypt|Let'​s Encrypt]] під час встановлення.
 +
 +Змінна ''​GL_PATH='/​gl'''​ тут вказує на те, що сторінка Greenlight буде розташована в нашому випадку за адресою ''​bbb.myserver.org/​gl''​. Якщо ми хочемо,​ щоб веб-сервер за замовчуванням переспрямовував користувачів з адреси ''​bbb.myserver.org''​ на адресу ''​bbb.myserver.org/​gl'',​ потрібно після оновлення BigBlueButton знайти файл ''/​usr/​share/​bigbluebutton/​nginx/​greenlight-redirect.nginx.disabled'',​ перейменувати його на ''/​usr/​share/​bigbluebutton/​nginx/​greenlight-redirect.nginx''​ (тобто прибрати слово "​.disabled"​ на кінці) та відредагувати його вміст таким чином:
 +
 +<file nginx "/​usr/​share/​bigbluebutton/​nginx/​greenlight-redirect.nginx">​
 +location = / {
 +  return 307 /gl;
 +}
 +</​file>​
 +
 +**Примітка:​** У файлі ''/​usr/​share/​bigbluebutton/​nginx/​greenlight-redirect.nginx.disabled''​ за замовчуванням може бути записано переспрямування на шлях "''/​b''"​. Але якщо цей шлях на нашому сервері досі використовувався попередньою (другою) версією Greenlight, то на даному етапі нам не можна вказувати його для третьої версії,​ бо доступ до обох версій //​одночасно//​ нам ще знадобиться для перенесення облікових записів з Greenlight v2 до Greenlight v3.
 +
 +Якщо скрипт ''​bbb-install-2.6.sh''​ вдало завершив свою роботу,​ в нас має бути запущена нова версія BigBlueButton. Далі треба налаштувати Greenlight v3 та перенести до неї усю інформацію з попередньої версії.
 +
 +
 +
 +
 +==== З версії 2.4 ====
 +
 +Якщо ми проводимо оновлення з версії BigBluButton 2.4 або старішої,​ яка працює на Ubuntu 18.04, то офіційна документація радить((https://​docs.bigbluebutton.org/​administration/​install/#​upgrading-from-bigbluebutton-24)) видалити BigBlueButton,​ оновити операційну систему до версії Ubuntu 20.04, а вже потім встановити BigBlueButton 2.6 з нуля.
 +
 +Видалити BigBlueButton та всі супутні пакети,​ а також різні сліди їхнього перебування в системі -- не дуже очевидна річ. Тому можна скористатися неофіційним [[https://​github.com/​bigbluebutton/​bbb-install/​issues/​1#​issuecomment-1347008149 | скриптом]],​ запропонованим на форумі BigBlueButton,​ або окремими частинами цього скрипту в залежності від потреби. Зокрема,​ варто звернути увагу на команди,​ пов'​язані із видаленням файлів. Якщо, наприклад,​ нам потрібно перенести записи сеансів до нової системи,​ то потрібно їх або скопіювати десь окремо,​ або не видаляти теки, в яких вони лежать.
 +
 +
 +
 +<file bash "​uninstall_bigbluebutton.sh">​
 +#!/bin/bash
 +
 +# stop bbb
 +bbb-conf --stop
 +
 +# docker cleanup
 +docker ps -q -all | xargs docker stop
 +docker ps -q -all | xargs docker rm
 +docker rmi --force $(docker images -a -q)
 +docker system prune
 +service docker stop
 +rm -rf /​var/​lib/​docker/​*
 +apt purge docker-ce docker-ce-cli containerd.io -y
 +
 +# delete bbb dependencies
 +dpkg -l | grep -w bbb |  awk '​{print $2}' | xargs apt-get purge -y
 +dpkg -l | grep -w mongodb | awk '​{print $2}' | xargs apt-get purge -y
 +dpkg -l | grep -w kurento | awk '​{print $2}' | xargs apt-get purge -y
 +
 +apt-get purge openjdk* openjdk-*-jre kms-* -y
 +apt-get autoremove -y
 +apt-get clean
 +
 +# delete ruby, gems
 +apt-get purge ruby rubygems -y
 +rm /​var/​lib/​gems/​2.* -rf
 +
 +# delete nginx
 +update-rc.d nginx remove
 +apt purge nginx nginx-common -y
 +
 +# delete redis
 +apt purge redis-server -y
 +rm -rf /​var/​lib/​redis ​
 +rm -rf /​var/​log/​redis
 +
 +cd /​etc/​apt/​sources.list.d/​
 +ls | grep bigbluebutton | xargs rm
 +ls | grep mongodb | xargs rm
 +ls | grep node | xargs rm
 +ls | grep rmescandon | xargs rm
 +ls | grep libreoffice | xargs rm
 +
 +cd /​etc/​apt/​trusted.gpg.d/​
 +ls | grep bigbluebutton | xargs rm
 +ls | grep rmescandon | xargs rm
 +ls | grep libreoffice | xargs rm
 +
 +# deactivate docker in /​etc/​apt/​sources.list
 +sed -i '​s/​^deb \[arch\=amd64\] https\:​\/​\/​download\.docker\.com\/​linux\/​ubuntu bionic stable$/​\#​deb \[arch\=amd64\] https\:​\/​\/​download\.docker\.com\/​linux\/​ubuntu bionic stable/​g'​ /​etc/​apt/​sources.list
 +
 +cd /​var/​lib/​apt/​lists/​ && ls | grep bigbluebutton | xargs rm
 +cd /​var/​lib/​apt/​lists/​ && ls | grep libreoffice | xargs rm
 +cd /​var/​lib/​apt/​lists/​ && ls | grep certbot | xargs rm
 +cd /​var/​lib/​apt/​lists/​ && ls | grep mongodb | xargs rm
 +cd /​var/​lib/​apt/​lists/​ && ls | grep docker | xargs rm
 +
 +apt-key del $(apt-key list | awk '​NR=='​`expr $(apt-key list | grep --line-number --regexp "​BigBlueButton"​ | cut --fields 1 --delimiter ":"​) - 1`'​{print;​exit}'​ | sed -e 's/ //g')
 +apt-key del $(apt-key list | awk '​NR=='​`expr $(apt-key list | grep --line-number --regexp "​Kurento"​ | cut --fields 1 --delimiter ":"​) - 1`'​{print;​exit}'​ | sed -e 's/ //g')
 +apt-key del $(apt-key list | awk '​NR=='​`expr $(apt-key list | grep --line-number --regexp "​MongoDB"​ | cut --fields 1 --delimiter ":"​) - 1`'​{print;​exit}'​ | sed -e 's/ //g')
 +apt-key del $(apt-key list | awk '​NR=='​`expr $(apt-key list | grep --line-number --regexp "​Docker"​ | cut --fields 1 --delimiter ":"​) - 1`'​{print;​exit}'​ | sed -e 's/ //g')
 +
 +# delete leftovers like logs and other files
 +#
 +# MAKE THE BACKUP OF RECORDINGS FIRST !!! (IF NECESSARY)
 +#
 +# rm -rf /​var/​bigbluebutton /​opt/​freeswitch /​usr/​share/​etherpad-lite /​usr/​local/​bigbluebutton /​etc/​bigbluebutton ​ /​usr/​share/​meteor /​usr/​share/​bbb-libreoffice-conversion /​usr/​share/​bbb-web /​etc/​systemd/​system/​bbb-webrtc-sfu.service.d /​var/​tmp/​bbb-kms-last-restart.txt /​var/​log/​bigbluebutton /​var/​log/​kurento-media-server /​var/​log/​bbb-apps-akka /​var/​log/​bbb-fsesl-akka /​var/​log/​bbb-webrtc-sfu /​var/​lib/​kurento /​var/​kurento /​var/​log/​mongodb /​etc/​kurento /​run/​bbb-fsesl-akka ./​run/​bbb-apps-akka /​etc/​systemd/​system/​multi-user.target.wants/​bbb-web.service /​etc/​systemd/​system/​multi-user.target.wants/​bbb-rap-resque-worker.service /​etc/​systemd/​system/​multi-user.target.wants/​bbb-rap-starter.service ~/​.bundle/​cache
 +
 +# delete user related content
 +deluser bigbluebutton ​
 +# deluser redis
 +deluser mongodb
 +deluser kurento
 +# only this group needs to be removed, all other are deleted anyway!
 +delgroup mongodb
 +
 +# update
 +apt-get autoremove -y
 +apt-get update
 +apt-get dist-upgrade -y
 +</​file>​
 +
 +
 +==== Greenlight v3 ====
 +
 +
 +
 +=== Перенесення ролей ===
 +
 +=== Перенесення користувачів ===
 +
 +=== Перенесення кімнат ===
 +
 +=== Перенесення налаштувань ===
 +
 +
 +
 +=== Оновлення паролів ===
 +
 +Після оновлення Greenlight потрібно оновити паролі усіх користувачів. Це мають зробити самі користувачі,​ запитавши скидання пароля на сторінці входу до Greenlight.
 +
 +Але для того, щоб повідомити усім користувачам про необхідність скидання пароля,​ в комплекті є також готовий скрипт для розсилання усім користувачам нашого сервера повідомлення із запрошенням змінити пароль.
 +
 +Але перш ніж ним скористатися,​ варто взяти до уваги, що деякі поштові сервери блокують масові розсилання повідомлень. Наприклад,​ якщо листи надсилаються занадто швидко. Я стикнувся із такою проблемою,​ тому перші кілька повідомлень завжди надсилалися нормально,​ але наступні усі блокувалися. Тому для себе я знайшов таке рішення:​ я додав до скрипту невелику паузу між надсиланням листів. Зробити це можна так:
 +
 +Відкрити файл скрипту ''​lib/​tasks/​reset_password_email.rake''​ для редагування прямо в контейнері:​
 +
 +  sudo docker exec -it greenlight-v3 vi lib/​tasks/​reset_password_email.rake
 +
 +знайти в ньому наступні рядки:
 +
 +<file ruby "​reset_password_email.rake">​
 +      success '​Successfully sent reset password email to:'
 +      info    " ​ name: #​{user.name}"​
 +      info    " ​ email: #​{user.email}"​
 +    rescue StandardError => e
 +      err "​Unable to send reset password email to:\n  name: #​{user.name} \n  email: #​{user.email} \n  error: #{e}"
 +    end
 +  end
 +</​file>​
 +
 +та додати туди функцію ''​sleep(5)''​ (пауза у 5 секунд) ось у цьому місці (важливо дотримуватися відступів ліворуч!):​
 +
 +<file ruby "​reset_password_email.rake">​
 +      success '​Successfully sent reset password email to:'
 +      info    " ​ name: #​{user.name}"​
 +      info    " ​ email: #​{user.email}"​
 +    ​
 +    sleep(5)
 +    ​
 +    rescue StandardError => e
 +      err "​Unable to send reset password email to:\n  name: #​{user.name} \n  email: #​{user.email} \n  error: #{e}"
 +    end
 +  end
 +</​file>​
 +
 +зберегти цей файл, закрити,​ а тоді вже запустити скрипт:​
 +
 +  sudo docker exec -it greenlight-v3 bundle exec rake migration:​reset_password_email\[https://​bbb.myserver.org/​gl]
 +
 +
 +=== Перенесення записів ===
 +
 +  sudo docker exec -it greenlight-v3 bundle exec rake server_recordings_sync
 +
 +===== Проблема з Firefox =====
 +
 +Якщо браузер Firefox не приймає та не передає зображення веб-камери або демонстрацію екрану,​ можливо,​ потрібно додати наступні рядки до файлу "''/​etc/​bigbluebutton/​bbb-html5.yml''":​
 +
 +<file yaml "/​etc/​bigbluebutton/​bbb-html5.yml">​
 +public:
 +  media:
 +    forceRelayOnFirefox:​ false
 +</​file>​
 +
 +Таке рішення підказано [[https://​github.com/​bigbluebutton/​bigbluebutton/​issues/​16614#​issuecomment-1536586460 | відповіддю на форумі]],​ хоча і суперечить [[https://​docs.bigbluebutton.org/​support/​troubleshooting/#​im-having-troubles-seeing-webcams-or-screen-sharing-in-firefox | офіційній документації]] на момент написання цієї статті.
 +
 +Можливо,​ це пов'​язано із відомою [[https://​bugzilla.mozilla.org/​show_bug.cgi?​id=1034964 | вадою Firefox]]. Додаткову інформацію можна також прочитати у відповідних гілках форумів [[https://​github.com/​bigbluebutton/​bigbluebutton/​issues/​13746 | BigBlueButton]] та [[https://​github.com/​versatica/​mediasoup/​issues/​650 | 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/​
 +
 +Повинна з'​явитися приблизно така сторінка:​
 +
 +{{:​bbb-demopage.png?​direct&​200|}}
 +
 +
 +
 +
 +===== 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|SSL-сертифікат]]. Якщо його немає, його досить легко можна отримати за допомогою програми [[https://​certbot.eff.org/​lets-encrypt/​ubuntuxenial-other | Certbot]].
 +
 +
 +
 +==== Веб-сервер ====
 +
 +Згенеруємо параметри Діфі-Хелмана. Це не відбудеться миттєво,​ а займе кілька хвилин.
 +
 +  sudo mkdir -p /​etc/​nginx/​ssl
 +  sudo openssl dhparam -out /​etc/​nginx/​ssl/​dhp-4096.pem 4096
 +
 +Потрібно увімкнути у веб-сервері можливість роботи за протоколом HTTPS та вказати дійсний сертифікат та ще деякі параметри. Для цього відредагуємо файл ''/​etc/​nginx/​sites-available/​bigbluebutton''​ наступним чином:
 +
 +<file conf>
 +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;​
 +  #​-----------------------------
 +</​file>​
 +
 +Тут
 +  * ''​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'':​
 +
 +<file conf>
 +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;
 +}
 +</​file>​
 +
 +Тут важливо звернути увагу на рядок ''<​nowiki>​proxy_pass https://​123.123.123.123:​7443;</​nowiki>'',​ який містить,​ по-перше явну вказівку використовувати **протокол HTTPS**, по-друге,​ зовнішню **IP-адресу** нашого сервера (тобто адресу,​ яку має маршрутизатор у зовнішній мережі Інтернет,​ а також, на яку зареєстровано домен ''​bbb.myserver.org''​),​ а також **порт 7443**.
 +
 +
 +
 +
 +==== HTTPS у BBB ====
 +
 +Потрібно відредагувати наступні файли, вказавши в них протокол HTTPS у відповідних рядках конфігурації:​
 +
 +<file conf /​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
 +</​file>​
 +
 +<file conf /​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
 +</​file>​
 +
 +<file conf /​usr/​share/​meteor/​bundle/​programs/​server/​assets/​app/​config/​settings.yml>​
 +note:
 +    enabled: true
 +    url: https://​bbb.example.com/​pad
 +</​file>​
 +
 +<file conf /​usr/​local/​bigbluebutton/​core/​scripts/​bigbluebutton.yml>​
 +playback_protocol:​ https
 +</​file>​
 +
 +Далі у файлі ''/​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''​ у файлі
 +<file conf /​usr/​share/​meteor/​bundle/​programs/​server/​assets/​app/​config/​settings.yml>​
 +kurento:
 +    wsUrl: wss://​bbb.example.com/​bbb-webrtc-sfu
 +</​file>​
 +
 +І перезапустити сервер
 +
 +  sudo bbb-conf --restart
 +
 +
 +
 +===== 7. NAT =====
 +
 +
 +
 +
 +==== Kurento ====
 +
 +
 +
 +<file ini /​etc/​kurento/​modules/​kurento/​WebRtcEndpoint.conf.ini>​
 +externalAddress=123.123.123.123
 +</​file>​
 +
 +
 +==== FreeSWITCH ====
 +
 +<file xml /​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"/>​
 +</​file>​
 +
 +
 +<file xml /​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}"/>​
 +</​file> ​   ​
 +
 +=== Віртуальний мережевий інтерфейс ===
 +
 +Для того, щоб 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
 +
 +А для того, щоб не створювати цей віртуальний інтерфейс кожного разу вручну,​ можна його параметри внести до файлу конфігурації мережі:​
 +
 +<file conf /​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
 +</​file>​
 +
 +Далі також потрібно вказати зовнішню адресу у файлі
 +<file xml /​opt/​freeswitch/​conf/​sip_profiles/​external.xml>​
 +<param name="​wss-binding" ​ value="​123.123.123.123:​7443"/>​
 +</​file>​
 +
 +
 +
 +==== Red5 ====
 +
 +Перевірити,​ чи вказано **локальну** IP-адресу у наступному файлі:
 +<file conf /​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
 +</​file>​
 +
 +
 +==== Веб-сервер ====
 +
 +
 +<file conf /​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;
 +}
 +</​file>​
 +
 +==== BBB ====
 +
 +Якщо дозволено приєднання користувачів тільки для слухання (це можна перевірити наступним чином:​)
 +
 +  grep enableListenOnly /​usr/​share/​meteor/​bundle/​programs/​server/​assets/​app/​config/​settings.yml
 +      enableListenOnly:​ true
 +то необхідно також внести наступні зміни до файлу
 +<file yml /​usr/​local/​bigbluebutton/​bbb-webrtc-sfu/​config/​default.yml>​
 +freeswitch:
 +    ip: 123.123.123.123
 +    sip_ip: 192.168.1.100
 +    port: 7443
 +</​file>​
 +
 +Коли всі файли конфігурації відредаговано,​ перезапустити BBB-сервер:​
 +  bbb-conf --restart
 +
 +
 +
 +====== Додаткові можливості ======
 +
 +===== Greenlight =====
 +
 +http://​docs.bigbluebutton.org/​greenlight/​gl-overview.html
 +
 +v3 : https://​docs.bigbluebutton.org/​greenlight/​v3/​install/​
 +
 +==== Логи Greenlight ====
 +
 +Продивитися логи (журнал роботи) Greenlight можна засобами Docker:
 +
 +Простий показ журналу:​
 +    sudo docker logs greenlight-v3
 +
 +Показ з часовими мітками:​
 +    sudo docker logs -t greenlight-v3
 +
 +Відстежування журналу по мірі його доповнення:​
 +    sudo docker logs -f greenlight-v3
 +
 +Відстежування,​ починаючи з останніх 50-ти рядків,​ з часовими мітками:​
 +    sudo docker logs -t -n50 -f greenlight-v3
 +
 +
 +==== Запуск/​зупинка Greenlight ====
 +
 +Якщо файли Greenlight встановлено у теку ''/​root/​greenlight-v3/'',​ то для зупинки або запуску потрібно перейти до цієї теки:
 +
 +  cd /​root/​greenlight-v3/​
 +
 +Зупинити:​
 +  docker-compose down
 +
 +Запустити:​
 +  docker-compose up -d
 +  ​
 +  ​
 +  ​
 +FIXME
 +
 +===== TURN-сервер =====
 +
 +[[turn|TURN/​STUN сервер]]
 +
 +http://​docs.bigbluebutton.org/​2.2/​setup-turn-server.html#​configure-bigbluebutton-to-use-the-coturn-server
 +
 +FIXME
 +
 +
 +===== Заборона перекодування відеозаписів при роботі від батареї =====
 +
 +Якщо BigBlueButton встановлено на ноутбуку,​ задля економії заряду батареї бажано тимчасово вимкнути оброблення черги відеозаписів,​ адже перекодування відео потребує багатьох ресурсів,​ і може швидко витратити заряд батареї. Для того, щоб автоматично зупиняти чергу відеозаписів після відключення живлення від мережі та поновлювати її після підключення до мережі створимо новий файл із правилами для [[https://​en.wikipedia.org/​wiki/​Udev|udev]]:​
 +
 +<file 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"​
 +</​file>​
 +
 +після чого перезапустимо udev:
 +
 +  sudo systemctl restart udev.service
 +
 +
 +
 +
 +
 +===== Запис сеансів до відеофайлу =====
 +
 +Спочатку потрібно встановити додатковий пакет((https://​docs.bigbluebutton.org/​administration/​customize/#​install-additional-recording-processing-formats)):​
 +
 +  sudo apt install bbb-playback-video
 +
 +Потім потрібно додати відповідний формат до файлу:
 +
 +<file yaml "/​usr/​local/​bigbluebutton/​core/​scripts/​bigbluebutton.yml">​
 +steps:
 +  archive: "​sanity"​
 +  sanity: "​captions"​
 +  captions:
 +    - "​process:​presentation"​
 +    - "​process:​video"​
 +  "​process:​presentation":​ "​publish:​presentation"​
 +  "​process:​video":​ "​publish:​video"​
 +</​file>​
 +
 +Але цей файл буде перезаписаний під час оновлення або перевстановлення BigBlueButton. Тому можна зберегти ці налаштування також в окремому файлі: ''/​etc/​bigbluebutton/​recording/​recording.yml''​
 +
 +Після зміни файлу потрібно перезапустити службу:​
 +
 +  systemctl restart bbb-rap-resque-worker.service
  
bigbluebutton.1590001193.txt.gz · В останнє змінено: 2020/05/20 21:59 by wombat