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

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


bigbluebutton

Розбіжності

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

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

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
bigbluebutton [2020/05/24 01:33]
wombat [6. SSL]
bigbluebutton [2024/03/20 10:51] (поточний)
wombat Запуск/зупинка Greenlight
Рядок 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]].
 +
 +
 +
 +
 +
 +
  
  
Рядок 218: Рядок 428:
 ===== 7. NAT ===== ===== 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
  
  
bigbluebutton.1590273226.txt.gz · В останнє змінено: 2020/05/24 01:33 by wombat