Configuring on-premise conferencing and group calls - mesibo live

mesibo live is the mesibo conferencing and group calls server which allows you to add conferencing and group calls features to your app. The mesibo live is included in the mesibo docker image, however, it requires different parameters and needs to run separately as an additional instance(s).

You can run multiple instances of the mesibo live server depending on the load. The mesibo live is distributed and the most sophisticated conferencing and group call server which automatically performs load balancing and scales up or down as you add or remove more instances.

Server Requirements

Note that conferencing and group calls are CPU and bandwidth-intensive features and hence you must run each instance of mesibo live on a separate server with robust CPU and ample networking bandwidth.

We strongly advise deploying mesibo live on dedicated servers over cloud instances for optimal performance. However, if you opt for cloud instances, ensure that the chosen cloud instance is configured with adequate CPU and networking resources. Note that each cloud providers offer specialized configurations for high performance networking which you should use, such as AWS Enhanced Networkingopen_in_new

It is crucial to avoid co-deployment of mesibo live instances with your primary on-premise server, as this will severely degrade the overall performance of your main server. Hence, such a configuration is strongly discouraged.

Running mesibo live server

In this section, we will describe how to launch mesibo live. Note that, you must have normal mesibo on-premise running to use mesibo live. You also need to open all UDP ports for mesibo live to work.

There are two steps

  1. Create a token for each mesibo live instance. You MUST NOT use the app token with mesibo live
  2. Use the token generated in Step 1 to configure and launch the mesibo live instance

Step 1: Creating a token for mesibo live

The mesibo live server communicates with the main mesibo server as one of your app users. Hence, like all other users, it requires a user access token but with a special flag. You can create a token for mesibo live server by sending the following request to the backend APIs

In this example, we will create a user with the address "mesibo-live-1" (you can choose any address). If you are running multiple instances, you need to use a different address for each instance.

{
  "op":"useradd",
  "token": "ptlk9hdel1gqxf3p0s15f5f5gtusldej18tl794suzit",
  "user": {
	"address":"mesibo-live-1",

  	"token": {
		"expiry": 525600
		"live": true
  	}
  }
}

You do not need to specify appid in this case.

If the request is successful, the response will be like this,

{ 
  "user": {
	"uid":123,
	"address":"mesibo-live-1",
	"token":"79a818d76fe45fb5a3ac395a0a98251c3db"
  },
  "op":"useradd",
  "result":true
}

You need to copy the token and use it in the next step.

Step 2: Run mesibo live

You can now run mesibo live using the token you generated in the previous step,

$ sudo docker run --entrypoint /mesibo/bin/live -v /etc/mesibo:/etc/mesibo \
        --net=host --name mesibo-live --rm -d mesibo/mesibo 79a818d76fe45fb5a3ac395a0a98251c3db

If you are running mesibo live for the first time, you can replace -d with -it so that you can view logs

$ sudo docker run --entrypoint /mesibo/bin/live -v /etc/mesibo:/etc/mesibo \
        --net=host --name mesibo-live --rm -it mesibo/mesibo 79a818d76fe45fb5a3ac395a0a98251c3db

You should see messages on the mesibo live server as well as on the main mesibo on-premise server about the mesibo live status.

Troubleshooting

Please check the following if your users are not able to communicate on a group call

Server is Live

mesibo live server should print active status. If not, ensure that the token is correct and generated as described above.

E0703-222433-730 (8850): starting mesibo live
E0703-222433-730 (8866): connecting...
E0703-222434-710 (8866): mesibo live is active

Public IP Address

mesibo live server automatically detects the public IP of your server on start and also logs it.

E1303-084749-716 (1): starting mesibo live
E1303-084749-716 (22): connecting...
E1303-084750-029 (22): mesibo live is active
E1303-084750-029 (22): Setting public IP: 1.2.3.4

However, in some cases especially with some cloud providers, the public IP may not be detected correctly or if you would like to use a particular IP (for example, to use it in a private setup), you can specify it on the command line,

$ sudo docker run --entrypoint /mesibo/bin/live -v /etc/mesibo:/etc/mesibo --net=host \
        --name mesibo-live --rm -it mesibo/mesibo 79a818d76fe45fb5a3ac395a0a98251c3db 1.2.3.4

Open UDP Ports

Ensure that you have opened all UDP ports on your server. mesibo live server prints logs when it starts receiving media from clients and also when it loses media frames.

E0703-222440-845 (8856): started audio frames 19
E0703-222442-069 (8856): started video frames 19
E0703-222513-380 (8856): missing audio frames 19
E0703-222514-381 (8856): missing video frames 19

If you do not see the above logs, one of the likely reasons is that the UDP ports on your servers are blocked. You can quickly verify by using network tools like nc, for example,

nc -u <your server IP> 30000

Now send some data by typing some text and pressing the Enter key. You should get a connection refused error. If not, likely, the UDP ports are not open. This is a quick and indirect way to test for an open port.

For an accurate test, run a simple UDP server on your host (test with different ports),

nc -ul -p 30000

and repeat the above steps to send data. You should receive data on your server. If you don't receive data, UDP ports on your server are not open and you should configure till the above test succeeds.