Add 'README.install-jibri'.

This commit is contained in:
Christoph 2020-05-17 03:32:34 +02:00
parent 6fa244a631
commit b5c5255ff5

312
README.install-jibri Normal file
View File

@ -0,0 +1,312 @@
# ===========================================================================
#
# Jibri - Streamin / Recording with Jitsi Meet
#
# see:
# - https://jitsi.org/blog/learn-how-to-live-stream-and-record-on-your-jitsi-meet-install/
#
# - https://nerdonthestreet.com/episode/tech/jibri-recording
# https://nerdonthestreet.com/wiki?find=Set+Up+Jibri+for+Jitsi+Recording%3Aslash%3AStreaming&keep_has_js=0
#
# - https://community.jitsi.org/t/how-to-to-setup-integrated-jitsi-and-jibri-for-dummies-my-comprehensive-tutorial-for-the-beginner/35718
#
# =============================================================================
RECORDING_USER="recorder"
RECORDING_PASSWORD="MyP@ssw0rd4Rec0rder"
XMPP_USER="jibri1"
XMPP_PASSWORD="MyP@ssw0rd4Jibr1"
RECORDING_DIR="/recordings"
JITSI_HOST="video.faire-mobilitaet.de"
required_debian_packages_jibri_server="linux-image-amd64 ffmpeg curl unzip software-properties-common"
# ===============
# On Jitsi Server
# ===============
# ---
# Configure Prosody
# ---
# - Edit /etc/prosody/prosody.cfg.lua
# -
# - Uncomment the items in the "conference" section:
# -
# - ---Set up a MUC (multi-user chat) room server on conference.example.com:
# - Component "conference.${JITSI_HOST}" "muc"
# - --- Store MUC messages in an archive and allow users to access it
# - modules_enabled = { "muc_mam" }
# -
vim /etc/prosody/prosody.cfg.lua
# Edit /etc/prosody/conf.d/${JITSI_HOST}.cfg.lua
#
# Add an internal MUC component entry:
#
# --- internal muc component, meant to enable pools of jibri and jigasi clients
# Component "internal.auth.${JITSI_HOST}" "muc"
# modules_enabled = {
# "ping";
# }
# storage = "internal"
# muc_room_cache_size = 1000
#
vim /etc/prosody/conf.d/${JITSI_HOST}.cfg.lua
# Edit /etc/prosody/conf.d/${JITSI_HOST}.cfg.lua
#
# Add a new VirtualHost entry to hold Jibri's user account:
#
# VirtualHost "recorder.${JITSI_HOST}"
# modules_enabled = {
# "ping";
# }
# authentication = "internal_plain"
#
vim /etc/prosody/conf.d/${JITSI_HOST}.cfg.lua
# Create two new accounts for Jibri to use (one for control purposes,
# one for recording purposes):
#
# prosodyctl register ${XMPP_USER} auth.${JITSI_HOST} ${XMPP_PASSWORD}
# prosodyctl register ${RECORDING_USER} recorder.${JITSI_HOST} ${RECORDING_PASSWORD}
#
prosodyctl register ${XMPP_USER} auth.${JITSI_HOST} ${XMPP_PASSWORD}
prosodyctl register ${RECORDING_USER} recorder.${JITSI_HOST} ${RECORDING_PASSWORD}
# ---
# Configure Jicofo
# ---
# Edit /etc/jitsi/jicofo/sip-communicator.properties
#
# Add these two lines for the Jibri control room and timeout:
#
# org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.${JITSI_HOST}
# org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
#
vim /etc/jitsi/jicofo/sip-communicator.properties
# ---
# Configure Jitsi Meet
# ---
# Edit /etc/jitsi/meet/${JITSI_HOST}-config.js
#
# fileRecordingsEnabled: true,
# ...
# liveStreamingEnabled: true,
# ...
# hiddenDomain: 'recorder.${JITSI_HOST}',
#
vim /etc/jitsi/meet/${JITSI_HOST}-config.js
# !! Note !!
#
# Ccheck also the interface config .js file '/usr/share/jitsi-meet/interface_config.js'
# to be sure, that the buttons 'recording' and 'livestreaming' are not disabled.
#
# see section TOOLBAR_BUTTONS and take care buttons 'recording' and 'livestreaming'
# are part of that array.
#
view /usr/share/jitsi-meet/interface_config.js
# ---
# Restart Services
# ---
systemctl restart prosody
systemctl restart jicofo
systemctl restart jitsi-videobridge2
# ---------------------------------
# Allow Port 5222 from Jibri Server
# ---------------------------------
# ===============
# On Jibri Server
# ===============
# - Install required that are available from Debian 10's default repositories:
# -
echononl "Install the required debian packages from repository.."
for _deb in $required_debian_packages_jibri_server ; do
DEBIAN_FRONTEND=noninteractive apt-get install -y $_deb
done
# - REBOOT system if needed !!
# - Enable the ALSA loopback module to start on boot, and also start it for the current boot:
# -
cat <<EOF >> /etc/modules
# Enable ALSA loopback module
snd_aloop
EOF
# - Start ALSA loopback module for the current boot:
# -
modprobe snd_aloop
# ---
# - Install Google Chrome:
# ---
# - Add apt key
# -
curl -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
# - Add Repository..
# -
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
# - Update repository adn Install google chrome
# -
apt-get update
apt install google-chrome-stable
# ---
# Install ChromeDriver:
# ---
# - Get Driver Version
# -
CHROME_DRIVER_VERSION="$(curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE)"
# - Download Driver (zip archive)
# -
wget -N http://chromedriver.storage.googleapis.com/${CHROME_DRIVER_VERSION}/chromedriver_linux64.zip -P /tmp
# - Unzip archive to usr/local/bin
# -
unzip /tmp/chromedriver_linux64.zip -d /usr/local/bin
# - Turn off warnings about scripted control in Chrome:
# -
mkdir -p /etc/opt/chrome/policies/managed
echo '{ "CommandLineFlagSecurityWarningsEnabled": false }' >>/etc/opt/chrome/policies/managed/managed_policies.json
# ---
# Install libri-
# ---
# - Add apt key for jitsi repository
# -
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
# - Add Repository..
# -
echo "deb https://download.jitsi.org stable/" > /etc/apt/sources.list.d/jitsi-stable.list
# - Update repository and install jibri
# -
apt-get update
apt install jibri
# - Add Jibri's user account to the necessary groups:
# -
usermod -aG adm,audio,video,plugdev jibri
# ---
# Create Recording Directors
# - Make a directory to store recordings and set its permissions appropriately:
# -
mkdir -p "${RECORDING_DIR}"
# - Change ownerchip of recording directory ..
# -
chown jibri:jitsi "${RECORDING_DIR}"
# ---
# Configure jibri
# ---
# Edit /etc/jitsi/jibri/config.json
#
# Set the following options:
#
# "recording_directory": "${RECORDING_DIR}",
# "finalize_recording_script_path": "",
# ...
# "xmpp_server_hosts": [
# "${JITSI_HOST}"
# ],
# ...
# "xmpp_domain": "${JITSI_HOST}",
# ...
# "control_login": {
# "domain": "auth.${JITSI_HOST}",
# "username": "${XMPP_USER}",
# "password": "${XMPP_PASSWORD}"
# },
# ...
# "control_muc": {
# "domain": "internal.auth.${JITSI_HOST}",
# "room_name": "JibriBrewery",
# "nickname": "jibri"
# },
# ...
# "call_login": {
# "domain": "recorder.${JITSI_HOST}",
# "username": "${RECORDING_USER}",
# "password": "${RECORDING_PASSWORD}"
# },
vim /etc/jitsi/jibri/config.json
# ---
# Install Java 8:
# ---
# - Add apt key
# -
wget -O - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
# - Add Repository..
# -
add-apt-repository https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
# - Update repository and install java 8 (adoptopenjdk-8-hotspot)
# -
apt-get update
apt install adoptopenjdk-8-hotspot
# Configure Jibri to start with Java 8 instead of the default Java version (replace
# the word "java" with the full path to Java 8):
#
if $(grep -q -E "^\s*exec\s+java\s+.*" /opt/jitsi/jibri/launch.sh 2> /dev/null) ; then
perl -i -n -p -e "s#^\s*exec\s+java\s+(.*)#exec /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java \1#" \
/opt/jitsi/jibri/launch.sh
fi
vim /opt/jitsi/jibri/launch.sh
# ---
# Enable and start Jibri:
# ---
systemctl enable --now jibri