====== Installation of Big Blue Button 2.0 on Ubuntu server 16.04 ====== ===== Network ===== vim /etc/network/interfaces auto lo iface lo inet loopback auto ens18 iface ens18 inet static address 195.154.50.30 netmask 255.255.255.255 post-up ip route add 192.168.60.254 dev ens18 post-up ip route add 0.0.0.0/0 via 192.168.60.254 pre-down ip route del 0.0.0.0/0 via 192.168.60.254 pre-down ip route del 192.168.60.254 dev ens18 vim /etc/resolv.conf nameserver 9.9.9.9 # or another DNS search vim /etc/hosts reboot ===== Installation ===== ==== Prerequisites ==== **If KVM** : # apt install qemu-guest-agent apt update apt upgrade locale-gen en_US.UTF-8 apt install haveged ==== Installation automatique ==== wget https://raw.githubusercontent.com/bigbluebutton/bbb-install/master/bbb-install.sh chmod +x ./bbb-install.sh ./bbb-install.sh -v xenial-200 -s bbb-conf --setip === Configuration SSL === == Nginx == mkdir /etc/nginx/ssl cp private-key.key /etc/nginx/ssl chmod 0600 /etc/nginx/ssl/private-key.key cp certificate.crt /etc/nginx/ssl openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048 vim /etc/nginx/sites-enabled/bigbluebutton Add after "server_name" : listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/certificate.crt; ssl_certificate_key /etc/nginx/ssl/private-key.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-2048.pem; == FreeSWITCH == vim /opt/freeswitch/conf/sip_profiles/external.xml Change "ws-binding" to "wss-binding" and ":5066" by ":7443". vim /etc/bigbluebutton/nginx/sip.nginx proxy_pass https://:7443; == Load HTTPS connection default == vim /var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties bigbluebutton.web.serverURL=https:// vim /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties jnlpUrl=https:///screenshare jnlpFile=https:///screenshare/screenshare.jnlp sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml vim /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml playback_protocol: https vim /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp String BigBlueButtonURL = "https:///bigbluebutton/"; bbb-conf --restart ===== HTML5 client installation ===== ==== MongoDB and NodeJS ==== apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.4.list apt update apt install install -y mongodb-org curl curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - apt install -y nodejs ==== HTML5 client ==== apt install bbb-html5 To load HTML5 client by default, edit ///var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties// : # Force all attendees to join the meeting using the HTML5 client attendeesJoinViaHTML5Client=true # Force all moderators to join the meeting using the HTML5 client moderatorsJoinViaHTML5Client=true bbb-conf --restart If the service "kurento-media-server" is masked : systemctl unmask kurento-media-server systemctl enable kurento-media-server systemctl start kurento-media-server ===== Greenlight frontend ===== ==== Docker ==== apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt update apt install docker-ce ==== Greenlight ==== mkdir ~/greenlight && cd ~/greenlight docker run --rm bigbluebutton/greenlight:v2 cat ./sample.env > env docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret Write the secret on the "SECRET_KEY_BASE" parameter in "//~/greenlight/env//". bbb-conf --secret Write the URL and the secret in "//~/greenlight/env//" file on the "BIGBLUEBUTTON_ENDPOINT" and "BIGBLUEBUTTON_SECRET" parameters. Check configuration : docker run --rm --env-file env bigbluebutton/greenlight:v2 bundle exec rake conf:check === Nginx === docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx systemctl restart nginx To make Greenlight the HTTP home page of BBB, add this on bottom of ///etc/nginx/sites-available/bigbluebutton// : location = / { return 307 /b; } Same, but for HTTPS : location = / { return 301 https://$server_name/b; } Rebot : systemctl restart nginx ==== Starting Greenlight ==== sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose cd ~/greenlight docker run --rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > docker-compose.yml docker-compose up -d ==== Stopping Greenlight ==== docker-compose down ===== Error 1002 for WebRTC ===== [[http://docs.bigbluebutton.org/10install.html|"Audio not working" section]] Edit ///opt/freeswitch/conf/vars.xml// Remove Change by Change by Change by Edit ///opt/freeswitch/conf/sip_profiles/external.xml// Change by Edit ///usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties// bbb.sip.app.ip= bbb.sip.app.port=5070 freeswitch.ip= freeswitch.port=5060 Edit ///etc/bigbluebutton/nginx/sip.nginx// location /ws { proxy_pass https://: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-conf --restart ===== Links ===== [[http://docs.bigbluebutton.org/install/install.html|BBB installation]] [[http://docs.bigbluebutton.org/html/html5-install.html#step-by-step-installation|HTML5 client installation]] ===== Nginx configuration file ===== server { listen 443 ssl; listen [::]:443 ssl; listen 80; listen [::]:80; server_name ; ssl_certificate /etc/nginx/ssl/certificate.crt; ssl_certificate_key /etc/nginx/ssl/private-key.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-2048.pem; access_log /var/log/nginx/bigbluebutton.access.log combined_ssl; # Handle RTMPT (RTMP Tunneling). Forwards requests # to Red5 on port 5080 location ~ (/open/|/close/|/idle/|/send/|/fcs/) { proxy_pass http://127.0.0.1:5080; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffering off; keepalive_requests 1000000000; } # Handle desktop sharing tunneling. Forwards # requests to Red5 on port 5080. location /deskshare { proxy_pass http://127.0.0.1:5080; proxy_redirect default; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; include fastcgi_params; } # BigBlueButton landing page. location / { root /var/www/bigbluebutton-default; index index.html index.htm; expires 1m; } # Include specific rules for record and playback include /etc/bigbluebutton/nginx/*.nginx; #error_page 404 /404.html; # Redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } }