Це стара версія документу!
Зміст
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
- /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
externalAddress=123.123.123.123
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}"/>
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

