How to Configure Websocket in Jitsi Videobridge

Written by: Bagus Facsi Aginsa
Published at: 02 Jun 2020


The SCTP data channel is deprecated by jitsi, so right now it is recommended to use WebSocket on the videobridge.

Sudo Privileges

Before starting, we will make sure that we have no permission issue on the configuration.

sudo su

Config on JVB Server

Jitsi videobridge config

Open file the videobridge configuration file

nano /etc/jitsi/videobridge/sip-communicator.properties

Modify this configuration

org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri

And then add these lines:

org.jitsi.videobridge.STATISTICS_TRANSPORT=colibri
org.jitsi.videobridge.rest.jetty.port=9090
org.jitsi.videobridge.rest.COLIBRI_WS_DISABLE=false
org.jitsi.videobridge.rest.COLIBRI_WS_TLS=true
org.jitsi.videobridge.rest.COLIBRI_WS_DOMAIN=<your.jvb.domain>:443
org.jitsi.videobridge.rest.COLIBRI_WS_SERVER_ID=<jvb-id>

The jetty port can be different than 9090, but don’t use 8080. Because it is already used by jvb statistics API. <jvb-id> is a unique string that marks your jvb, it can be anything like jvb-1, media-1, or even a hash like acdnc76yi23cjen9g38jkdjm3azq. But note that it will be used in the Nginx configuration below.

Install NGINX

apt-get update
apt-get install nginx

Config NGINX

Create a file for handling WebSocket

nano /etc/nginx/sites-available/videobridge

Copy & paste this config

server {
        listen 443 ssl;
        server_name <your.jvb.domain>;

        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_certificate /path/to/<your.jvb.domain>.crt;
        ssl_certificate_key /path/to/<your.jvb.domain>.key;

        location ~ ^/colibri-ws/<jvb-id>/(.*) {
                proxy_pass http://127.0.0.1:9090/colibri-ws/<jvb-id>/$1$is_args$args;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                tcp_nodelay on;
        }
}

Don’t forget to adjust the <your jvb domain>, <jvb-id> & SSL certificate.

ln -s /etc/nginx/sites-available/videobridge.conf /etc/nginx/sites-enabled/
nginx -t
service nginx reload

Restart Videobridge

systemctl restart jitsi-videobridge2

Check service

To ensure the WebSocket is on, check jvb log

grep 'wss:' /var/log/jitsi/jvb.log

You should see that your WebSocket URL is live.

Check the listening port on the server, make sure 443 and 9090 is listening:

netstat -ntplu

Lastly, check from the browser that nothing is blocking the jvb WebSocket:

https://<your jvb domain>/colibri-ws/<jvb id>/

You will get the error 405 from the jetty, that is fine. If you don’t get the 405 error, then your configuration is still not correct.

Config on Main Server

Jitsi Meet Config

Open client configuration at /etc/jitsi/meet/<domain>-config.js and add or uncomment this configuration:

openBridgeChannel: 'websocket',