Це стара версія документу!
Уявімо, що наш BBB-сервер встановлений в локальній мережі, відокремленій від Інтернету маршрутизатором. Нехай в нашого сервера локальна адреса 192.168.1.100
. Тоді на маршрутизаторі потрібно налаштувати перенаправлення наступних портів:
TCP 80 - HTTP TCP 443 - HTTPS TCP 7443 - FreeSWITCH TCP 1935 - Redis
та діапазон портів:
UDP 16384-32768 - WebRTC
Додати розділ 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
Встановити ключ репозиторія 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
Після встановлення 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/
Повинна з'явитися приблизно така сторінка:
Перевірити, чи сервер та HTML5 клієнт дійсно працюють, можна встановити демонстраційну сторінку:
sudo apt-get install bbb-demo
Це дозволить підключитися до сервера, вказавши деяке ім'я на сторінці входу (див. вище). При цьому оскільки ми підключилися за HTTP-протоколом, сервер може не дозволити там користуватися мікрофоном або камерою. Зазвичай вони дозволені лише для HTTPS-протоколу. Його ми налаштуємо пізніше.
Якщо демо-версія працює, потрібно видалити цю сторінку, щоб інші анонімні користувачі не могли під'єднуватися до нашого сервера.
sudo apt-get remove bbb-demo
Встановимо ім'я домену для нашого сервера. Наприклад, якщо ім'я 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/
.
Відредагуємо файл /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 у відповідних рядках конфігурації:
#---------------------------------------------------- # 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