Jitsi is a self-hosted video conferencing service similar to Zoom, but Zoom has been plagued with security bugs and collects information about who is using the service. At one point they were even using images from the service to train AI. Other options might be Microsoft Teams or Facetime, both of which are also privacy-invasive big tech companies. Chances are, you are using one of these three services for your business conferences or even for your family conferences!
Yes, families in this modern upwardly mobile do meet up online using the convenient services, but those services might very well be used against you. If you value your privacy, you should certainly consider setting up your own private Jitsi server that your whole family can use.
If you are in business and have need for conferencing, you will better protect your services and brand by having a private conference system under your control.
Everyone that uses video conferences for any reason can benefit from a server. I use mine weekly for business and for private calls with friends to share our week together. It is easy to use even for the low tech people. The web browser version works well, and Jitsi also has free apps for all devices in case it is your preference to use a tablet or phone for communication.
Jitsi server costs can be low for families wanting to have simple calls, but a beefier server can run many more participants for a large online business meeting. Officially, the server requirements call for 4-8 GB RAM and 2-4 CPU cores. The disk space is small, about 20GB unless you are going to be recording on the server.
Those requirements being stated, that is for a very reliable larger server that can host multiple conferences and many participants. My server that I use with small conferences and family is very small and only costs $6/mo, a fine cost to protect privacy and control who is listening in on the service.
To run a Jitsi server, you need a cloud server. While it is possible to host it internally, many home networks may not have the bandwidth and it would require some port forwarding and other considerations. If you are a techy person, you will know how to manage this on a home server, but for the rest of us, we should consider using a cloud server like Digital Ocean (affiliate link), Linode, or Heztner. I prefer Digital Ocean, and this guide is based on the one-click install script that Digital Ocean makes available.
You also need a domain name, as Jitsi must have a domain name with an SSL to properly function. Domain names are usually less than $20/yr and SSLs are free, so you do not need to buy one. If you do not have a domain name, you can pick one up on NameCheap (affiliate link).
Finally we need to have access to an ssh application for the initial setup and configuration. If you use Linux or Mac, you have a terminal emulator already. If you use Windows, you will need to install putty to access your server.
I found in writing this guide that some things have changed over the years, and none of the single guides I consulted were complete. This guide is accurate for 2024. Please contact me in the event anything has changed.
We will use Digital Ocean, which has a one-click install, but there are a few more steps we need to do beyond creating a droplet and pushing the button.
First we need to setup the domain. In this guide we will use “example.com” as the domain we have purchased.
We need to decide if our server will sit directly on example.com or if we will put it under a subdomain, like meet.example.com. If you are going to use the domain for a website or some other service, you might use the meet.example.com. That is what we will do through this tutorial.
To set this up, we need to create a subdomain.
Cpanel
If you have a Cpanel account that you use, you can create this by going into Domains → Create A New Domain.
Type in:
meet.example.com
Once the subdomain is created, go back to the main tools panel and find the Zone Editor. Click Manage next to example.com. In the Filter By Name field at the top, type in meet, and press enter.
Find the entry for meet.exmaple.com. at the Type A. We will be editing the IP address in that box, but we do not have it yet. The IP address will be provided later, but keep this tab open.
Namecheap
If you have purchased your domain at Namecheap, but have not updated the nameservers, follow their guide on creating the subdomain. Other domain registrars will have information for you about how to setup a subdomain, so consult their help guides.
On Digital Ocean, a droplet is the name they give to their servers. A droplet can be a small server shared with many others for as little at $4/mo, or a massive, exclusive server you alone have access to. The minimum size for a Jitsi droplet is $6/mo. This works for families and small businesses.
If you do not have a Digital Ocean account, you can create one using my affiliate link and receive $200 in credit good for 60 days. If you have an account, log in and go down to the Marketplace on the bottom of the left menu.
In the search box, find Jitsi Server. Click the link and then the blue Create Jitsi Server Droplet button on the right.
On the following screen, choose the location closest to you. In my example I will pick New York. If cost is on your priority, change the CPU Options to Regular, and choose the 1GB/1CPU server. This works for a family or small business. If you need more resources, select the best plan for you.
I generally use the Password option. Just make sure you use a password manager like KeePassXC and choose a complicated password. Type in any name or tags and click the Create Droplet button.
You will be redirected to a screen with the initialization and we will wait for the IP address to be assigned. Once you have that IP address, you will need to update the IP address in the subdomain that we created earlier.
Once the droplet is completed and your IP address is pointing to the server, we are ready to login to the server with ssh to run the initial setup. For your terminal or putty window, type the following (replace 123.456.789 with the IP address you were given).
sshThis email address is being protected from spambots. You need JavaScript enabled to view it.
The server has a script listed once you login. Run that script.
The script will ask you what domain you are using, and it needs an email address for the SSL certificate (this is unrelated to Jitsi, it is for Let’s Encrypt SSL service).
The server is setup with password protection, but no user account is set up. You can add a user with this command:
prosodyctl register {username} meet.example.com {password}
Replace the curly brackets with the real information. This password is required to create a room, but by default the guests also require a password. This can be problematic, so we need to remove this. To do this, we need to enable the guest user system. Edit this file:
/etc/prosody/conf.avail/meet.example.com.cfg.lua
and add this to the bottom of the file:
VirtualHost "guest.meet.example.com"
authentication = "anonymous"
c2s_require_encryption = false
Now we need to enable the use of guests, so edit this file:
/etc/jitsi/meet/meet.example.com-config.js
by uncommenting this line and correcting the server name:
// anonymousdomain: 'guest.meet.example.com',
Finally, we need to change the focus of the Jitsi server. To do this, we need to create the following file (Note: older guides say edit, but the file is not included on this particular install, so we need to create it):
/etc/jitsi/jicofo/sip-communicator.properties
Add this line to the file:
org.jitsi.jicofo.auth.URL=XMPP:meet.example.com
Save the file, and reboot the services:
systemctl restart {prosody,jicofo,jitsi-videobridge2,nginx}
Now the server should be working. The first person on the call needs to login with the credentials created above, and then the rest of the people will be able to join once the call is set up.
Jitsi is an easy to use application that is available on a web browser on desktop or mobile. Additionally, you can get a dedicated desktop client that works a little better. For Linux users, you can get Jitsi Desktop from Flathub. Phone apps are available here.
Once you download and install the app or client, you need to go into the application settings and set your server url:
https://meet.example.com
Now you are ready to chat.