====== 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" на кінці) та відредагувати його вміст таким чином: location = / { return 307 /gl; } **Примітка:** У файлі ''/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, або окремими частинами цього скрипту в залежності від потреби. Зокрема, варто звернути увагу на команди, пов'язані із видаленням файлів. Якщо, наприклад, нам потрібно перенести записи сеансів до нової системи, то потрібно їх або скопіювати десь окремо, або не видаляти теки, в яких вони лежать. #!/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 ==== Greenlight v3 ==== === Перенесення ролей === === Перенесення користувачів === === Перенесення кімнат === === Перенесення налаштувань === === Оновлення паролів === Після оновлення Greenlight потрібно оновити паролі усіх користувачів. Це мають зробити самі користувачі, запитавши скидання пароля на сторінці входу до Greenlight. Але для того, щоб повідомити усім користувачам про необхідність скидання пароля, в комплекті є також готовий скрипт для розсилання усім користувачам нашого сервера повідомлення із запрошенням змінити пароль. Але перш ніж ним скористатися, варто взяти до уваги, що деякі поштові сервери блокують масові розсилання повідомлень. Наприклад, якщо листи надсилаються занадто швидко. Я стикнувся із такою проблемою, тому перші кілька повідомлень завжди надсилалися нормально, але наступні усі блокувалися. Тому для себе я знайшов таке рішення: я додав до скрипту невелику паузу між надсиланням листів. Зробити це можна так: Відкрити файл скрипту ''lib/tasks/reset_password_email.rake'' для редагування прямо в контейнері: sudo docker exec -it greenlight-v3 vi lib/tasks/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 та додати туди функцію ''sleep(5)'' (пауза у 5 секунд) ось у цьому місці (важливо дотримуватися відступів ліворуч!): 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 зберегти цей файл, закрити, а тоді вже запустити скрипт: 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''": public: media: forceRelayOnFirefox: false Таке рішення підказано [[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'' наступним чином: 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 у відповідних рядках конфігурації: #---------------------------------------------------- # 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 streamBaseUrl=rtmp://bigbluebutton.example.com/screenshare jnlpUrl=https://bigbluebutton.example.com/screenshare jnlpFile=https://bigbluebutton.example.com/screenshare/screenshare.jnlp note: enabled: true url: https://bbb.example.com/pad 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'' у файлі kurento: wsUrl: wss://bbb.example.com/bbb-webrtc-sfu І перезапустити сервер sudo bbb-conf --restart ===== 7. NAT ===== ==== Kurento ==== externalAddress=123.123.123.123 ==== FreeSWITCH ==== === Віртуальний мережевий інтерфейс === Для того, щоб FreeSWITCH видавав клієнтам зовнішню IP-адресу, потрібно, щоб під час запуску він приєднався до мережевого інтерфейсу з цією адресою. Оскільки реального мережевого інтерфейсу із зовнішньою адресою всередині нашої локальної мережі нема. створимо віртуальний мережевий інтерфейс з такою адресою: sudo ip addr add 123.123.123.123/32 dev lo та перевіримо, чи він створився: ip addr 1: lo: 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 А для того, щоб не створювати цей віртуальний інтерфейс кожного разу вручну, можна його параметри внести до файлу конфігурації мережі: # 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 Далі також потрібно вказати зовнішню адресу у файлі ==== Red5 ==== Перевірити, чи вказано **локальну** IP-адресу у наступному файлі: bbb.sip.app.ip=192.168.1.100 bbb.sip.app.port=5070 freeswitch.ip=192.168.1.100 freeswitch.port=5060 ==== Веб-сервер ==== 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 то необхідно також внести наступні зміни до файлу freeswitch: ip: 123.123.123.123 sip_ip: 192.168.1.100 port: 7443 Коли всі файли конфігурації відредаговано, перезапустити 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]]: 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 ===== Запис сеансів до відеофайлу ===== Спочатку потрібно встановити додатковий пакет((https://docs.bigbluebutton.org/administration/customize/#install-additional-recording-processing-formats)): sudo apt install bbb-playback-video Потім потрібно додати відповідний формат до файлу: steps: archive: "sanity" sanity: "captions" captions: - "process:presentation" - "process:video" "process:presentation": "publish:presentation" "process:video": "publish:video" Але цей файл буде перезаписаний під час оновлення або перевстановлення BigBlueButton. Тому можна зберегти ці налаштування також в окремому файлі: ''/etc/bigbluebutton/recording/recording.yml'' Після зміни файлу потрібно перезапустити службу: systemctl restart bbb-rap-resque-worker.service