Jitsi Meet: Self-host free video calling app on your own server
TL;DR for developers: Setting up a preconfigured Jitsi Meet image on a digitalocean VPS in an apex domain.
Requirements before starting this tutorial:
- A self owned domain name
- A self owned VPS or server access
- A self owned basic knowledge of terminal
- Open ports in your firewall: TCP
80(HTTP),443(HTTPS) and UDP10000(media), plus UDP3478.
What are we going to do actually?
We are going to install a completely free open source video conferencing software onto your self owned domain name and server.
How can it suit my needs?
- Anyone can join the meeting without any account
- No time limit on meeting sessions
- Full screen sharing available
- Set passwords to join meeting
- No limit on number of people
Why should I try?
- Fastest possible connection for your local users
- Complete control over your data and database
- It will only fail when your own server fail
- You pay for your server. You control your shit.
- No privacy concerns. No eavesdropping.
- I’m a Do it yourself. DIY Master
What is Jitsi Meet?
Jitsi Meet is an open-source video conferencing solution you can host yourself. It supports unlimited participants, screen sharing, meeting passwords, and no enforced time limits.
Here are the step-by-step guide to setup a video calling app on your server:
Option 1: Install Jitsi Meet with Docker
Step 1: Install Docker
Ensure Docker Engine and Docker Compose are installed on your server.
Step 2: Download Jitsi Docker setup
Get the latest release of the Jitsi Docker configuration from GitHub. For example:
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest \
| grep zip | cut -d\" -f4)
unzip <release>.zip
cd docker-jitsi-meet-*Step 3: Configure Jitsi
Copy the example environment file and edit it:
cp env.example .envOpen .env in your preferred text editor.
Set PUBLIC_URL to your domain (e.g. https://meet.example.com) and configure other settings as needed.
For example, to enable automatic HTTPS with Let’s Encrypt you can set ENABLE_LETSENCRYPT=1 and provide your email. Then generate strong passwords for the services:
./gen-passwords.sh
This script fills in random secure passwords in your .env. It also backs up your old .env.
Step 4: Run Docker Compose
docker compose up -dThis command launches all Jitsi services (web, Prosody XMPP, Jicofo, JVB, etc.)
Wait a minute for them to start.
Access your server. Open a browser to https://meet.example.com. You should see the Jitsi Meet welcome page where you can create a new meeting
Step (Optional): Add extra features.
- SIP Gateway (Jigasi): To allow SIP audio calls, run
docker compose -f docker-compose.yml -f jigasi.yml up -d
- Recording (Jibri): To enable recording/streaming, run
docker compose -f docker-compose.yml -f jibri.yml up -d
- Etherpad: For collaborative note-taking, include
etherpad.yml.
These will deploy the additional containers as documented.
Option 2: Install Jitsi Meet with DigitalOcean
Step 1: Sign up for a DigitalOcean. Set your default project.
- Create a droplet.
- Choose an image from Marketplace.
- Search
jitsi server
Step 2: Select image Jitsi Server. Choose a plan suitable to you.
- Choose a Datacenter region wisely. Select the nearest possible geographical region from your current location.
- Use SSH authentication recommended. Use strong password if needed.
- Add multiple droplets to make it more performant.
- Click the long green button and create droplet. Wait for seconds to boot up.
Step 3: Add a domain from Networking
- Create
Anew record. - Add your apex domain as
HOSTNAME. - Select the created droplet in dropdown from
WILL DIRECT TO. Create Record. Verify it below in the list amongDNS records.
Ensure that your domain is pointed to your droplet's IP address. If you haven't done this yet, update your domain's DNS settings with the IP address of your droplet.
Step 4: Access your VPS via SSH
Once your droplet is created, you need to access it via SSH. Open up your Terminal from your operating system and run the following command:
ssh root@your_droplet_ip_addressReplace your_droplet_ip_address with the actual IP address of your droplet. If you used SSH key authentication during droplet creation, you won't need to enter a password.
Step 5: Running Jitsi Meet Installation Scripts
Inside your droplet, you need to run the Jitsi Meet installation scripts.
Execute the following commands in your terminal:
wget https://github.com/jitsi/docker-jitsi-meet/archive/refs/tags/stable-6173.tar.gz
tar xf stable-6173.tar.gz
cd docker-jitsi-meet-stable-6173
cp env.example .env
nano .envThe nano .env command opens the environment configuration file in the nano text editor. Adjust the configuration options as needed, such as domain names and authentication methods.
Step 6: Running the Docker Compose File
After configuring the environment, run the following commands to start the Jitsi Meet services:
./gen-passwords.sh
docker-compose -f docker-compose.yml -f etherpad.yml up -dWait for the services to start. This might take a few minutes.
Step 8: Accessing Jitsi Meet
Once everything is set up, open a web browser and navigate to https://your_domain. You should see the Jitsi Meet interface. Create a new meeting and share the link with others.
Optional: Authentication and Recording
- By default, anyone who reaches your Jitsi Meet server can create or join conferences.
- Participants can join by visiting your domain in a browser or the mobile app.
To restrict who can start meetings, enable the secure domain feature (so that only logged-in users can create rooms) as described in the official docs.
Explore the Jitsi Meet documentation for any additional configurations you might need, such as setting up secure domain configuration, enabling authentication, or integrating with external services.
That's it! Your Jitsi Meet instance should now be up and running on your own server
this tutorial is incomplete and fragmented due to lack of motivation. i’ll try asap 🙂