Pre-requisites
vim /etc/hosts
127.0.0.1 meet.banphanmem.vn
127.0.0.1 recorder.meet.banphanmem.vn
127.0.0.1 internal.auth.meet.banphanmem.vn
127.0.0.1 auth.meet.banphanmem.vn
ALSA and Loopback Device
apt install linux-image-extra-virtual -y
echo "snd-aloop" >> /etc/modules
modprobe snd-aloop
lsmod | grep snd_aloop
Ffmpeg with X11 capture support
sudo apt-get install ffmpeg -y
Google Chrome stable & Chromedriver
curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
apt-get -y update
apt-get -y install google-chrome-stable
mkdir -p /etc/opt/chrome/policies/managed
echo '{ "CommandLineFlagSecurityWarningsEnabled": false }' >>/etc/opt/chrome/policies/managed/managed_policies.json
Chromedriver is also required and can be installed like so:
CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/
unzip ~/chromedriver_linux64.zip -d ~/
rm ~/chromedriver_linux64.zip
sudo mv -f ~/chromedriver /usr/local/bin/chromedriver
sudo chown root:root /usr/local/bin/chromedriver
sudo chmod 0755 /usr/local/bin/chromedriver
Miscellaneous required tools
sudo apt-get install default-jre-headless ffmpeg curl alsa-utils icewm xdotool xserver-xorg-input-void xserver-xorg-video-dummy -y
Jitsi Debian Repository
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt-get update && sudo apt-get install jibri
User, group
sudo usermod -aG adm,audio,video,plugdev jibri
Configuring a Jitsi Meet environment for Jibri
vim /etc/prosody/prosody.cfg.lua
Component "internal.auth.meet.banphanmem.vn" "muc"
modules_enabled = {
"ping";
}
storage = "null"
muc_room_cache_size = 1000
VirtualHost "recorder.meet.banphanmem.vn"
modules_enabled = {
"ping";
}
authentication = "internal_plain"
Add users
prosodyctl register jibri auth.meet.banphanmem.vn 1234abcd@
prosodyctl register recorder recorder.meet.banphanmem.vn 1234abcd@
Jicofo
vim /etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.meet.banphanmem.vn
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
Jitsi Meet
vim /etc/jitsi/meet/meet.banphanmem.vn-config.js
fileRecordingsEnabled: true, // If you want to enable file recording
liveStreamingEnabled: true, // If you want to enable live streaming
hiddenDomain: 'recorder.meet.banphanmem.vn',
Make a directory to store recordings and set its permissions appropriately:
mkdir /usr/recordings
chown jibri:jibri /usr/recordings
Configure Jibri
vim /etc/jitsi/jibri/config.json
"recording_directory": "/usr/recordings",
"finalize_recording_script_path": "",
"xmpp_server_hosts": [
"meet.banphanmem.vn"
],
"xmpp_domain": "meet.banphanmem.vn",
"control_login": {
"domain": "auth.meet.banphanmem.vn",
"username": "jibri",
"password": "1234abcd@"
},
"control_muc": {
"domain": "internal.auth.meet.banphanmem.vn",
"room_name": "JibriBrewery",
"nickname": "jibri"
},
"call_login": {
"domain": "recorder.meet.banphanmem.vn",
"username": "recorder",
"password": "1234abcd@"
},
Restart all services
systemctl restart prosody && systemctl restart jicofo && systemctl restart jitsi-videobridge2 && sudo systemctl restart jibri