With COVID-19 forcing many of us to work from home, we are all using video-conferencing software a lot more nowadays.
I know of the “as a service” providers like ZOOM, Google Hangouts (or Meet) etc… But what are my options if I am interested in self-hosting video conferencing software?
To keep this structured, it would be great if for each answer: pick a specific software (Jitsi, Big Blue Button, more?) and cover:
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
#ION
I’ll cover a relatively new project called ion, it is described as a “Distributed RTC System using Go and Flutter”
GitHub Link: https://github.com/pion/ion
Here are some of the advantages of ion, as listed by one of the core contributors:
To test, I installed it on a
$15 3 CPU/1GB RAM/60GB SSD
Droplet with the DigitalOcean Docker One-Click image.Prerequisites
Because the developers have containerized everything in Docker, the only software you need pre-installed is:
The last prerequisite is **a domain **to point to your server. Without a domain, you can’t easily connect via HTTPS, and some browsers block audio/video features on HTTP connections.
Installation
here’s a 2 minute video walkthrough of installation [youtube tE7sR4q2FDA 350 595]
Step 1. Create a server
With git, Docker, and docker-compose installed. If you’re using DigitalOcean the Docker One-Click has all this, if you’re installing from scratch you can reference how to install git and how to install docker
Step 2. Point a domain to your server
One magical feature of ion is that if you are using a domain, the startup process uses Let’s Encrypt to automatically generate SSL certs for the app. This step is important because some modern browsers will block video/audio streaming on non-secure (HTTP) connections.
Step 3. Clone the
ion
repouse git to clone the latest version of the ion codebase onto your server, once it is complete, move to the new ion directory.
Step 4. Set ENV Vars
Specify your domain and email address to use in the Let’s Encrypt registration process via environment variables
These will be used to generate SSL certs in the automated setup that runs next.
Step 5. Start the app
via docker-compose:
This will start the app and log all output of all containers to your commandline, exiting via the commandline will stop the app. If you want to run it in the background you can use
docker-compose up -d
for daemon mode.Step 6. Access the app
Once you see in the logs that the app has been successfully initialized (sometimes the Let’s Encrypt process can take a couple minutes) access the site at
https://yourdomain.com:8080
. You should see a login screen where you enter a room name, and your nickname.Depending on your browser, you’ll need to grant access to camera and microphone, and enable video autoplay.
At this point ion behaves very much like most video conferencing apps, you can generate a share link to send others, you can mute/unmute and turn video on and off, and message other participants via text.
Conclusion
ion looks very good, especially for those who are interested in developing something more on top of an open source video conferencing stack, and those who are interested in running video conferencing with limited resources.
Upon first impression, it stands out from the others in that the software uses very low amount of resources.
One part that I still need to dig into is how is the video streamed. When video conference software fully utilizes webRTC, each video stream is just going peer-to-peer instead of through the server, and conferences with more than 4 participants can quickly overwhelm a good internet connection.
Big Blue Button (BBB)
In my opinion, ZOOM is a great solution, it has a free option that lets you host meetings and it is quite intuitive to use. The downside of Zoom is the fact that it has a limit of 40 minutes in case you have a meeting with 3 or more people. In this case, if you want to have a longer meeting and not have your conference drop every 40 minutes you need to pay for a subscription.
On the other side there are opensource projects like BigBlueButton (BBB for short) which allow you to host your own conferencing solution and have better control over your conferences and not have to create a new meeting every 40 minutes.
Some of the features why I think it is worth giving BBB a try are:
Chat with public and private messages
Hosting visual meetings with your webcams
Screen sharing
Polling - ask your users questions at any time
Multi-user whiteboard - I think that this is amazing as you can draw together and have an actual interactive meetings
In my opinion, BigBlueButton is a great open-source web conferencing system that you can install on a Ubuntu 16.04 64-bit Droplet. The main downside is that it requires quite a bit of resources, for example, you need a Droplet with at least 4GB of RAM and even they recommend that it is much better to go for 8GB of RAM initially.
One of the great things about BBB is they provide you with an installation script that you could use to automate the deployment. The installation process usually takes around 30 minutes or so.
Prerequisites
You need an Ubuntu 16.04 64-bit Droplet with at least 4GB RAM but they recommend 8GB RAM for better stability
If you go for 4GB RAM Droplet, then you need to make sure that you have SWAP enabled, you can follow the steps here: https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04
SSH access to your Droplet
Installation
I would recommend using the
[bbb-install.sh](https://github.com/bigbluebutton/bbb-install)
to let you have a server up and running within 30.To do that, first SSH to your Droplet, and then run:
This command would install BBB without an SSL certificate. If you would like to install BigBlueButton with an SSL you could use the following command instead:
Note that you would need to have your domain name pointed to your Droplet’s IP address in order for the above to work.
Note: This would work only on Ubuntu 16.04, if you try to run this on Ubuntu 18.04, for example, you will get the following error:
As described in their official documentation, the command above, will download the latest version of
bbb-install.sh
installation script, send it to the BASH shell interpreter, and pass the parameters-v xenial-220
which specifies you want to install the latest build BigBlueButton 2.2 version, and-a
which specifies want to install the API demos (this makes it easy to do a few quick tests on the server).The whole process could take up to 30 minutes, so you might want to run this in a
screen
session in case your SSH connection drops. You can take a look at this article on how to do that:https://www.digitalocean.com/community/tutorials/how-to-install-and-use-screen-on-an-ubuntu-cloud-server
For more information on the process you could take a look at the official documentation here:
https://github.com/bigbluebutton/bbb-install
There is actually an official video tutorial from BBB on how to install it on DigitalOcean:
Conclusion
This is one way of hosting your own video conferencing solution and having full control over your infrastructure. BigBlueButton is feature-rich solution that could help your organization or school have productive meetings during periods of social distancing like the current situation.
Feel free to share other self-hosted conferencing solutions as well!
Hope that this helps! Regards, Bobby