Jitsi [Link] is an open-source Video Conferencing for web and mobile.
- HD audio and video;
- Unlimited meetings;
- Up to 50 participants at a time;
- End-to-end encryption;
- Simultaneous screen sharing;
- Remote control;
- Integration with Google, Microsoft, and Slack;
- and more.
Initial configuration
sudo hostnamectl set-hostname example.com sudo nano /etc/hosts
Add the same domain as follows:
127.0.0.1 localhost example.com
Firewall
sudo ufw limit 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 4443 sudo ufw allow 10000 sudo ufw enable sudo ufw status numbered
Installing
wget https://download.jitsi.org/jitsi-key.gpg.key sudo apt-key add jitsi-key.gpg.key sudo echo "deb https://download.jitsi.org stable/" > /etc/apt/sources.list.d/jitsi-stable.list sudo apt update sudo apt install jitsi-meet -y
When prompted answer the same domain: example.com
Then select: Generate a new self-signed certificate.
The certificate will be located at: /etc/jitsi/meet/
At this point, it is already secure and ready to be used but let’s move on to create a public certificate.
Install Let’s Encrypt and Certbot
sudo apt install certbot -y sudo sed -i 's/\.\/certbot-auto/certbot/g' /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh sudo ln -s /usr/bin/certbot /usr/sbin/certbot sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Inform your email for getting the reminders when the certificate is about to expire.
Use your browser to get access to the framework: https://example.com
Right away the server is up and running. Any visitor can create a meeting by giving a name to it:
Then copy and share the link on the address bar: https://example.com/firstmeeting
Note the name of the meeting appended to the server address.
Workload tests on the server:
- I was using the most basic Linode virtual machine: 1vCPU and 1GB RAM.
- 3 participants with audio and video (Linux, Win10, and Android): CPU utilization around 20%.
- Added 1 more participant sharing screen: CPU utilization around 40%.
Access Control
It will prevent anyone from the internet to create meetings and consume the resources of your server.
sudo nano /etc/prosody/conf.avail/example.com.cfg.lua
Edit the authentication option:
... VirtualHost "example.com" ... authentication = "internal_plain" ...
This configuration will allow only registered users to create meetings and access them.
If you want to invite participants that are not part of your company (registered users) add at the very bottom of the file the following options:
VirtualHost "guest.example.com" authentication = "anonymous" c2s_require_encryption = false
Do not create the guest subdomain, it is just internal to the Jitsi.
sudo nano /etc/jitsi/meet/example.com-config.js
Change the “anonymousdomain” option accordingly:
... hosts: { ... domain: 'example.com', ... anonymousdomain: 'guest.example.com', ...
Next…
sudo nano /etc/jitsi/jicofo/sip-communicator.properties
Append:
org.jitsi.jicofo.auth.URL=XMPP:example.com
Restart all the services:
sudo systemctl restart prosody sudo systemctl restart jicofo sudo systemctl restart jitsi-videobridge2
Create each user by issuing:
sudo prosodyctl register user1 example.com password1
Now, when someone tries to create or join a meeting will be held in a lounge room until the host of the meeting connects.
The host of the meeting will be able to click on that button and enter the credentials to start the meeting:
More useful commands to manage your conference service.
sudo prosodyctl --help sudo prosodyctl adduser [email protected] sudo prosodyctl deluser [email protected] sudo prosodyctl passwd [email protected] sudo prosodyctl reload
Read more about how to monitor the resources of your server over CLI [Link].