This document outlines the steps to set up a self-hosted Jitsi Meet server using Docker. Jitsi is an open-source video conferencing solution that can be hosted on our own infrastructure for secure and private video meetings.
In order to quickly run Jitsi Meet on a machine running Docker and Docker Compose, follow these steps:
Prerequisites
Ensure the following are installed on your server:
Setup Steps
- Download the Latest Release
Run the following command to download the latest ZIP release from GitHub:wget $(curl -s https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep 'zipball_url' | cut -d\" -f4) -O docker-jitsi-meet.zip
(or)
git clone https://github.com/jitsi/docker-jitsi-meet.git - Unzip the package
unzip <filename>
and navigate to that folder - Enter the extracted folder and Create a
.env
file by copying and adjustingenv.example
cp env.example .env
- Set strong passwords in the security section options of .env file by running the following bash script
For linux: ./gen-passwords.sh
For Windows: bash gen-passwords.sh - Create required CONFIG directories
- For linux:
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
- For Windows:
echo web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri
mkdir "~/.jitsi-meet-cfg/$_"
- For linux:
- Run sudo
docker compose up -d --build
Access the web UI at https://localhost:8443/ (or a different port, in case you edited the
.env
file). Now we can get this from our domain https://vc.piramalswasthya.org/- Enabling Recording with Jibri, by starting the jibri container by running the following command:
docker compose -f docker-compose.yml -f jibri.yml up -d
- Add the following to .env file
ENABLE_RECORDING=1
ENABLE_RECORDING_FILE=1
JIBRI_RECORDER_USER=recorder
JIBRI_RECORDER_PASSWORD=<password>
JIBRI_XMPP_USER=jibri
JIBRI_XMPP_PASSWORD=<password>
JIBRI_BREWERY_MUC=jibribrewery (must match with jibri.yml)For Recording behaviors and locations:
JIBRI_RECORDING_DIR=/srv/jitsi-recordings
Note:Replace <password> and <internal-docker-ip> with actual values.
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh
JIBRI_LOGS_DIR=/config/logs
JVB_ADVERTISE_IPS=<internal-docker-ip>
ENABLE_TURN=true Ensure the following volume mappings are present in jibri.yml to match the .env file:
volumes:
- /srv/jitsi-recordings:/srv/jitsi-recordings
- ./jibri/finalize.sh:/config/finalize.sh
- ./jibri/logs:/config/logs
Create the Recording directory using the following commands.
sudo mkdir -p /srv/jitsi recordings
sudo chown 1000:1000 /srv/jitsi-recordings
sudo chmod 777 /srv/jitsi-recordingsAdd the Finalize Recording script.
Inside the
jibri/
folder, create a file calledfinalize.sh
with the following content:#!/bin/bash
RECORDINGS_DIR=$1
echo "Finalizing recording in $RECORDINGS_DIR"
mv "$RECORDINGS_DIR"/* /srv/recordings/
rm -rf "$RECORDINGS_DIR"
exit 0Make it executable
chmod +x jibri/finalize.sh