Overview

    Note: This is still in development

    Prerequisites

    A BigBlueButton 1.1 server with HTTPS/SSL

    BigBlueButton setup

    In case you’re running a development environment, create a self-signed certificate. Above we detail the steps to create a self-signed certificate for dev.bigbluebutton.local:

    $ sudo mkdir -p /etc/nginx/ssl
    $ sudo openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048
    $ sudo openssl req -x509 -newkey rsa:4096 -keyout /etc/nginx/ssl/dev.bigbluebutton.local.key -out /etc/nginx/ssl/dev.bigbluebutton.local.crt -days 36500 -subj '/CN=dev.bigbluebutton.local' -nodes
    $ sudo keytool -import -trustcacerts -keystore /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts -storepass changeit -noprompt -alias dev.bigbluebutton.local -file /etc/nginx/ssl/dev.bigbluebutton.local.crt
    

    Configure the domain name dev.bigbluebutton.local (replace 10.0.3.203 by the server IP). In your machine, run:

    $ echo '10.0.3.203 dev.bigbluebutton.local' | sudo tee -a /etc/hosts

    In your server, run:

    $ echo '10.0.3.203   dev.bigbluebutton.local' | sudo tee -a /etc/hosts
    $ sudo bbb-conf --setip dev.bigbluebutton.local
    

    Configure HTTPS on BigBlueButton

    server {
         listen   80;
         listen [::]:80;
         server_name  dev.bigbluebutton.local;
         listen 443 ssl;
         listen [::]:443 ssl;
         ssl_certificate /etc/nginx/ssl/dev.bigbluebutton.local.crt;
         ssl_certificate_key /etc/nginx/ssl/dev.bigbluebutton.local.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;
    

    Setup the development environment

    Setup the HTML5 development environment

    Install Kurento

    # Extracted from http://doc-kurento.readthedocs.io/en/stable/installation_guide.html
    $ echo "deb http://ubuntu.kurento.org xenial kms6" | sudo tee /etc/apt/sources.list.d/kurento.list
    $ wget -O - http://ubuntu.kurento.org/kurento.gpg.key | sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get install kurento-media-server-6.0
    $ sudo service kurento-media-server-6.0 start
    

    Instructions

    Add the following block to /etc/bigbluebutton/nginx/html5.nginx:

    location /html5video {
      proxy_pass http://127.0.0.1:3002;
      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;
    }
    
    location /kurento {
      proxy_pass http://127.0.0.1:8888;
      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;
    }
    

    Restart nginx:

    $ sudo systemctl restart nginx
    

    Revert to the development branch:

    $ cd ~/dev/bigbluebutton/
    $ git fetch https://github.com/lfzawacki/bigbluebutton.git kurento-html5-video:kurento-html5-video
    $ git checkout kurento-html5-video
    

    Enable the HTML5 Client to use HTTPS

    $ sed -i 's|httpsConnection: .*|httpsConnection: true|g' bigbluebutton-html5/private/config/development/public/app.yaml

    Enable kurento-apps to connect to Kurento using a self-signed certificate

    $ sed -i 's|acceptSelfSignedCertificate: .*|acceptSelfSignedCertificate: true|g' labs/kurento-html5-video/config/default.yml

    Set the Kurento URL on kurento-apps

    $ sed -i 's|HOST|dev.bigbluebutton.local|g' labs/kurento-html5-video/config/default.yml

    Set the kurento-apps URL on the HTML5 client

    $ sed -i 's|HOST|dev.bigbluebutton.local|g' bigbluebutton-html5/private/config/development/public/kurento.yaml

    Start the HTML5 server

    $ cd bigbluebutton-html5/
    $ ./start.sh