Jitsi Meet is an open source videoconferencing software that you can self-host. It is a good alternative to proprietary services like Google Meet or Zoom.
Jitsi Meet can be integrated with other open source tools like Nextcloud, Rocket.Chat or Synapse (Matrix implementation) to give you a comprehensive solution.
With some limitations, Jitsi Meet can be used for free on their server. For premium features, you can opt for Jitsi as a Service from Jitsi developers. You may also deploy it on your own server? I'll help you with the self-hosting part.
Deploying Jitsi is incredibly easy with Docker. I am going to show you the steps for Jitsi deployment. I'll cover both reverse proxy and regular method.
How to Use Nginx Reverse Proxy With Multiple Docker Apps
Learn how you can deploy multiple web services on the same server using Nginx reverse proxy and docker containers.
There are a few things that need to be taken care of before proceeding.
Basic knowledge of Docker and containers: This isn't a must, like all of our tutorials, but nice to have.
A custom domain: This deployment won't be IP-served, that is I will walk you through the deployment under an actual domain (or subdomain) with HTTPS. Deployments like http://[some IP]:[some port] are fine for testing, but don't serve any purpose in these guides.
A Linux server either a physical one or in the cloud: I recommend using Linode but you can use any other provider like DigitalOcean, Vultr or UpCloud. Deploying under AWS can be very platform-specific and I won't be talking about that here.
As per official recommendation, a server with 4 GB memory with a dual-core processor would be suitable for around 10-20 users.
Linode | The Independent Open Cloud for Developers
Our mission is to accelerate innovation by making cloud computing simple, affordable, and accessible to all.
DigitalOcean The developer cloud
Helping millions of developers easily build, test, manage, and scale applications of any size faster than ever before.
Optionally, our reverse proxy setup: If you want to put it behind a reverse proxy so that you can deploy several web services on the same server. If Jitsi is the only application that's going to run on the server, you don't need the reverse proxy.
Having a domain name isn't enough. You need to make sure the DNS records are in place as well. For this tutorial, I'm going to use a domain openexperiment.in which I've had lying around for quite a while.
Make sure you change all instances of the domain from the examples to your domain.
Once you have a domain and deployed a server (not with Jitsi, just the server), gather the server's IP addresses (IPv4 & IPv6 both), and add A and AAAA records for each respectively. After that's done, you'll also need to add a CNAME record. You can add a specific subdomain or like me, add a wildcard entry (if you are hosting it on the main domain).
See the screenshot below if you are still confused. I blurred the actual IP addresses (I am very secretive ... shhh).
You may have to wait some time for the DNS changes to take effect. You can check that using the ping command.
ping the domain until you see your server's IP address like this -
You can also use the dig command to check the DNS records.
You should see something like the following
Before moving forward I believe it's helpful to know what these components are, and why they're important, along with which ones you're going to be using for this deployment.
If you don't care for this, obviously skip to the deployment section of this article.
jitsi/web:latest: The web UI of Jitsi Meet, which you see on your browser, is inside this image. Along with Nginx for the webserver.
jitsi/prosody:latest: This is the XMPP server, this is what's responsible for the audio/video calls or the text chats. This can be considered the heart of Jitsi.
jitsi/jicofo:latest: The focus component of the XMPP server, responsible for managing video sessions between the participants and the videobridge, in other words, this is what manages the conferences. This is another mandatory component of Jitsi.
jitsi/jvb:latest: The Jitsi Videobridge is responsible for relaying the incoming video channels to all the participants.
These are the mandatory parts of an operational Jitsi deployment, and I will only be using them for this guide. There are other components like Jibri, Jigasi, but since they're optional, I'm going to leave them out for now.
Enough reading, it's time for some hands-on work.
If you're going to deploy this alongside a reverse proxy, make sure you have that set up before approaching this one.
How to Use Nginx Reverse Proxy With Multiple Docker Apps
Learn how you can deploy multiple web services on the same server using Nginx reverse proxy and docker containers.
This repository contains all the files that we're going to need for this deployment (with obviously some modifications).
Clone the repository and change your PWD to the cloned directory.
Since you are using Docker, you have to modify some environment variables. Start by copying the example configuration file.
Now open the .env file, and look at the first 6 environment variables.
Since all these components are basically some sort of servers running in containers, you need a way to make sure the servers are really who they say they are. These secrets are there for that reason. The clients must authenticate first before establishing a connection.
You don't have to set these secrets by yourself. There's already a script there to make your life easier. Run the following command while you're inside the repository directory
Once run, you can reopen the .env file, and the secrets should be filled out.
You won't be needing all those secrets for this deployment, but leave them be, there's no need to remove or comment them out.
There now are going to be three subsections here, one for the common variable assignments (reverse proxy or no reverse proxy), another for the reverse proxy, and the last one for no reverse proxy. All of them go to the .env file.
Here are the variables common to both deployment methods and you add them in the .env file.
CONFIG: You can change the value of this, but it isn't necessary. The value of this variable is a directory in your host, which will be bind-mounted inside the containers to store persistent data. So modifying this is entirely up to you.
PUBLIC_URL: The domain Jitsi is going to be hosted on (with the protocol). In my case the value is https://meet.openexperiment.in
ENABLE_AUTH: Do you want authentication? With authentication, the user is going to have to put in a username and a password before they can join or create a meeting. If so, uncomment this line and make sure it's set to 1.
AUTH_TYPE: If you'd set ENABLE_AUTH to 1, then set this one to "internal". I won't go over LDAP or JWT authentication in this article.
RESTART_POLICY: Restart policy of the containers. The default is unless-stopped. I prefer always or on-failure.
TZ: Set this to your system's timezone. Since my servers are running in UTC timezone, I don't have to change it.
If you are not using reverse proxy, you should add these variables to the .env file:
HTTP_PORT, HTTPS_PORT: Change these to 80 and 443 respectively. These are the ports your container is going to bind its to.
ENABLE_LETSENCRYPT: Set this to 1, you need HTTPS.
LETSENCRYPT_DOMAIN & LETSENCRYPT_EMAIL: The domain your instance will be hosted on, and your email id for your certificate-related notifications.
ENABLE_HTTP_REDIRECT: Set this to 1, HTTP traffic must be relayed to HTTPS.
ENABLE_HSTS: This will, in a way force the browsers to use a trusted connection. Set this to 1.
If you have opted for the reverse proxy, you should add these variables to the .env file:
DISABLE_HTTPS: Since HTTPS is going to be handled by your reverse proxy's web server, you don't need to have HTTPS enabled from Jitsi itself.
ENABLE_HTTP_REDIRECT: Not necessary, set this to 0. HTTP/HTTPS is going to be handled by our reverse proxy.
VIRTUAL_HOST & LETSENCRYPT_HOST: These variables are not there by default. Add these, and for the values, use the domain name where your instance is going to be hosted. For more information read my revere proxy article.
Open the file docker-compose.yml in your favorite text editor.
The only service definition that needs editing is the web service. Modify it according to the following list
Assuming the network name is net, change it to whatever you set yours to.
Once all the editing is done, you can deploy Jitsi with docker-compose up -d command.
Make sure your reverse proxy containers are running IF you opted for reverse proxy method.
You are almost done with the Jitsi Meet deployment except for the last step which is to create authenticated users for your Jitsi server.
If you enabled authentication (with ENABLE_AUTH), you're going to need to register the users before you can use Jitsi.
To do so is quite simple. Head over to the cloned repository directory and run a command similar to the following
You can also remove a user using the unregister command like I've shown here:
Finally, you can go ahead and check the Jitsi Meet front end on the designated URL in a web browser:
Still have questions or suggestions? Please feel free to drop a comment.
If you like this tutorial and would like to see us produce more such helpful content, please consider opting for Pro membership or make a one time donation to support us 🙂
More here:
How to Self Host Jitsi Meet With Docker [Step by Step Guide]
- How to Deploy Jitsi Meet with Docker on Ubuntu 20.04 - March 31st, 2023 [March 31st, 2023]
- Jitsi Meet review | TechRadar - February 18th, 2023 [February 18th, 2023]
- Zoom vs Jitsi for video conferencing? | ONLYOFFICE Blog - February 18th, 2023 [February 18th, 2023]
- IFrame API | Jitsi Meet - GitHub Pages - November 25th, 2022 [November 25th, 2022]
- Self-Hosting Guide - Debian/Ubuntu server | Jitsi Meet - October 17th, 2022 [October 17th, 2022]
- Best Video Calling Apps: Zoom, Skype, Hangouts, Jitsi And More On Test - Which? - Which? - October 11th, 2022 [October 11th, 2022]
- When is it a good idea to turn off the camera during a video call - Aviation Analysis Wing - March 18th, 2022 [March 18th, 2022]
- Rwanda: Wave of Free Speech Prosecutions - Human Rights Watch - March 18th, 2022 [March 18th, 2022]
- 8x8 Video Conferencing API | 8x8 - February 19th, 2022 [February 19th, 2022]
- Video-as-a-Service Market is Expected to Generate Huge Profits by 2021 2026 Bulk Solids Handling - Bulk Solids Handling - October 3rd, 2021 [October 3rd, 2021]
- Android SDK Jitsi Meet Handbook - September 29th, 2021 [September 29th, 2021]
- Brave is taking the video conferencing fight to Zoom - Techradar - September 27th, 2021 [September 27th, 2021]
- Braves non-tracking, browser-based video conferencing tool is out of beta - TechCrunch - September 24th, 2021 [September 24th, 2021]
- Brave Talk, a new private video conferencing service tied to the web browser - InTallaght - September 24th, 2021 [September 24th, 2021]
- Brave gets a video call service integrated with the browser and leaves no traces The Clare People - The Clare People - September 24th, 2021 [September 24th, 2021]
- How To Install Jitsi Meet on Ubuntu 18.04 | DigitalOcean - August 2nd, 2021 [August 2nd, 2021]
- Zoom launches Zoom Apps and Zoom Events 'to empower the hybrid workforce' - iTWire - July 25th, 2021 [July 25th, 2021]
- Google Meets limiting free group calls to an hour what are your options? - The Next Web - July 14th, 2021 [July 14th, 2021]
- Its Official: We ODd on the Internet - OneZero - OneZero - June 13th, 2021 [June 13th, 2021]
- Is it the same as google duo? Explica .co - Explica - June 13th, 2021 [June 13th, 2021]
- Tips on Cybersecurity for Students and Teachers - Al-Fanar Media - June 4th, 2021 [June 4th, 2021]
- What is Jitsi Meet and how does it work the best free open source alternative to Zoom and Google Meet | Technology Explica .co - Explica - May 14th, 2021 [May 14th, 2021]
- Choose Your Own Adventure in the Virtual World - Observatory of Educational Innovation - April 19th, 2021 [April 19th, 2021]
- How Artists Used the Discord App to Build Community During COVID-19 - Hyperallergic - March 31st, 2021 [March 31st, 2021]
- Protesting in the Age of Mass Surveillance - EFF - March 11th, 2021 [March 11th, 2021]
- Jitsi | Quick Install | Advance Configuraton | Some Fixes - March 7th, 2021 [March 7th, 2021]
- Market trends and outlook coupled with factors driving and restraining the growth of the Web Conferencing market Jumbo News - Jumbo News - February 16th, 2021 [February 16th, 2021]
- Jenny Turner Ready to Go Off LRB 18 February 2021 - London Review of Books - February 16th, 2021 [February 16th, 2021]
- Want a goat to stand in for you on Zoom? Itll cost you around R102 for 5 minutes - SowetanLIVE - February 8th, 2021 [February 8th, 2021]
- Keeping mindfulness and employee health at the forefront: app reviews - Tech Wire Asia - February 8th, 2021 [February 8th, 2021]
- Inside job: Why Zoombombing isnt as random as you might think - Digital Trends - February 8th, 2021 [February 8th, 2021]
- Tech Trends 2021: All You Need To Know - CCM - January 17th, 2021 [January 17th, 2021]
- Comprehensive Report on Web Conferencing Market 2021 | Trends, Growth Demand, Opportunities & Forecast To 2027 |IBM, ReadyTalk, Adobe, ezTalks,... - January 9th, 2021 [January 9th, 2021]
- Jitsi Meet: Open Source Zoom Alternative - December 19th, 2020 [December 19th, 2020]
- Jitsi Meet - Download - December 19th, 2020 [December 19th, 2020]
- How to Install Jitsi Meet on CentOS 8 - RoseHosting - December 19th, 2020 [December 19th, 2020]
- New 8x8 CEO expected to improve business operations - TechTarget - December 19th, 2020 [December 19th, 2020]
- Is HelmChat Free Helmet Comm Solution A Good Alternative? - RideApart - September 18th, 2020 [September 18th, 2020]
- How to recreate water cooler moments in the virtual workplace - Quartz - August 13th, 2020 [August 13th, 2020]
- Our right to health and the COVID-19 pandemic - Davao Today - June 13th, 2020 [June 13th, 2020]
- A look at how Jitsi became a 'secure' open-source alternative to Zoom - The Next Web - May 24th, 2020 [May 24th, 2020]
- How the Covid-19 Lockdown Is Reshaping Uighur Activism - The Nation - May 24th, 2020 [May 24th, 2020]
- TikTok now gives you one-tap access to streaming app Resso - The Next Web - May 24th, 2020 [May 24th, 2020]
- Tips on Running a Remote Animation Studio - Animation World Network - May 24th, 2020 [May 24th, 2020]
- Adapting from Home: This Weeks View of Video Meeting Triumphs and Concerns - Yahoo Finance - March 31st, 2020 [March 31st, 2020]
- 8 Best Zoom Alternatives for Video Conferencing and Webinars - Beebom - March 31st, 2020 [March 31st, 2020]
- Jitsi Downloads - iOS & Android apps; Jitsi Meet, & Jitsi ... - March 26th, 2020 [March 26th, 2020]
- What Is the Most Secure Video Conferencing Software? - VICE - March 26th, 2020 [March 26th, 2020]
- Home schooling tips: The things I wish I'd known before the schools went into lockdown - Telegraph.co.uk - March 26th, 2020 [March 26th, 2020]
- Fox Sports 1 Utilized Video Call Center to Extend Reach of Shows Like The Herd with Colin Cowherd - Sports Video Group - December 22nd, 2019 [December 22nd, 2019]
- Fox Sports 1 Dials Up VCC for The Herd With Colin Cowherd - TV Technology - December 22nd, 2019 [December 22nd, 2019]
- Gladstone gold does club proud - Gladstone Observer - July 19th, 2017 [July 19th, 2017]
- Jitsi | Futurist Transhuman News Blog - euvolution.com - July 10th, 2017 [July 10th, 2017]
- FAQ | Jitsi | Prometheism.net euvolution.com | Futurist ... - July 5th, 2017 [July 5th, 2017]
- FAQ | Jitsi | Futurist Transhuman News Blog - June 29th, 2017 [June 29th, 2017]
- Tsirang vegetable vendors commit to selling local chillies - Kuensel, Buhutan's National Newspaper - June 27th, 2017 [June 27th, 2017]
- FAQ | Jitsi | Prometheism.net - euvolution.com - June 26th, 2017 [June 26th, 2017]
- FAQ | Jitsi - June 25th, 2017 [June 25th, 2017]
- Jitsi - PediaView.com - June 14th, 2017 [June 14th, 2017]
- How to Configure and Set-Up Jitsi - Liberty Under Attack - June 6th, 2017 [June 6th, 2017]
- Jitsi Meet (advanced) Projects - May 23rd, 2017 [May 23rd, 2017]
- Diaspora* and Other Free Software Are Available in the Occitan Language, Thanks to Volunteer Translators - Global Voices Online - May 23rd, 2017 [May 23rd, 2017]
- Online privacy guide for journalists - Radioinfo (subscription) - May 18th, 2017 [May 18th, 2017]
- Your Essential List of 7 Productivity Hacks and Time Management Tips - Business 2 Community - May 11th, 2017 [May 11th, 2017]
- Encrypted Chat Took Over. Let's Encrypt Calls, Too - Huffington Post - April 25th, 2017 [April 25th, 2017]
- 5 Apps You Didn't Know You Needed - Syracuse University News - April 3rd, 2017 [April 3rd, 2017]
- Jitsi Meet - Android Apps on Google Play - March 9th, 2017 [March 9th, 2017]
- Snowden helping develop tools to protect journalists and whistleblowers - 'to make the game a little more fair' - Press Gazette - February 15th, 2017 [February 15th, 2017]
- Edward Snowden's New Job: Protecting Reporters From Spies - WIRED - February 14th, 2017 [February 14th, 2017]
- Jitsi for Windows - Secure Instant Messaging and VoIP - February 11th, 2017 [February 11th, 2017]
- Jitsi for Mac - Download - jitsi.en.softonic.com - February 6th, 2017 [February 6th, 2017]
- Jitsi softphone for Windows OnSIP Support - November 23rd, 2016 [November 23rd, 2016]
- Trying to install jitsi meet with apache2 - Stack Overflow - October 29th, 2016 [October 29th, 2016]
- Jitsi - Wikipedia - October 27th, 2016 [October 27th, 2016]
- Jitsi - Mensajera instantnea segura de texto, audio y ... - August 10th, 2016 [August 10th, 2016]
- Jitsi - Quora - May 31st, 2016 [May 31st, 2016]
- Chocolatey Gallery | Jitsi 2.8.5426 - May 28th, 2016 [May 28th, 2016]
- Jitsi - - May 24th, 2016 [May 24th, 2016]
- Jitsi - FreeBSD Wiki - May 22nd, 2016 [May 22nd, 2016]
- Jitsi - OSTN - Guardian Project Open Dev - May 21st, 2016 [May 21st, 2016]