Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія Наступна ревізія Both sides next revision | ||
bigbluebutton [2020/05/24 00:19] wombat |
bigbluebutton [2020/05/24 02:17] wombat Додаткові можливості |
||
---|---|---|---|
Рядок 101: | Рядок 101: | ||
===== 6. SSL ===== | ===== 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 | ||
Рядок 109: | Рядок 221: | ||
+ | ==== 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 | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ===== TURN-сервер ===== | ||
+ | |||
+ | [[turn|TURN/STUN сервер]] | ||
+ | |||
+ | http://docs.bigbluebutton.org/2.2/setup-turn-server.html#configure-bigbluebutton-to-use-the-coturn-server | ||
+ | |||
+ | FIXME | ||