Major rework, comply with shellcheck #80
|
@ -28,7 +28,7 @@ GOOGL_REPO="/etc/apt/sources.list.d/dl_google_com_linux_chrome_deb.list"
|
|||
GOOGLE_ACTIVE_REPO=$(apt-cache policy | awk '/chrome/{print$3}' | awk -F "/" 'NR==1{print$2}')
|
||||
PROSODY_REPO="$(apt-cache policy | awk '/prosody/{print$3}' | awk -F "/" 'NR==1{print$2}')"
|
||||
PUBLIC_IP="$(dig +short myip.opendns.com @resolver1.opendns.com)"
|
||||
NL="$(echo -e '\n ')"
|
||||
NL="$(printf '\n ')"
|
||||
|
||||
exit_ifinstalled() {
|
||||
if [ "$(dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -c "ok installed")" == "1" ]; then
|
||||
|
@ -56,7 +56,7 @@ install_ifnot() {
|
|||
if [ "$(dpkg-query -W -f='${Status}' "$1" 2>/dev/null | grep -c "ok installed")" == "1" ]; then
|
||||
echo " $1 is installed, skipping..."
|
||||
else
|
||||
echo -e "\n---- Installing $1 ----"
|
||||
printf "\n---- Installing %s ----" "$1"
|
||||
apt-get -yq2 install "$1"
|
||||
fi
|
||||
}
|
||||
|
@ -68,15 +68,15 @@ The recommended setup is using NGINX, exiting...
|
|||
exit
|
||||
elif [ "$NGINX" -eq 1 ]; then
|
||||
|
||||
echo -e "\nWebserver already installed!\n"
|
||||
printf "\nWebserver already installed!\n"
|
||||
|
||||
else
|
||||
echo -e "\nInstalling nginx webserver!\n"
|
||||
printf "\nInstalling nginx webserver!\n"
|
||||
install_ifnot nginx
|
||||
fi
|
||||
}
|
||||
check_snd_driver() {
|
||||
echo -e "\n# Checking ALSA - Loopback module..."
|
||||
printf "\n# Checking ALSA - Loopback module..."
|
||||
echo "snd-aloop" | tee -a /etc/modules
|
||||
modprobe snd-aloop
|
||||
if [ "$(lsmod|awk '/snd_aloop/{print$1}'|awk 'NR==1')" = "snd_aloop" ]; then
|
||||
|
@ -124,7 +124,7 @@ while [ $secs -gt 0 ]; do
|
|||
done
|
||||
}
|
||||
clear
|
||||
echo -e '
|
||||
printf '
|
||||
########################################################################
|
||||
Welcome to Jitsi/Jibri Installer
|
||||
########################################################################
|
||||
|
@ -148,13 +148,13 @@ if ! [ "$(id -u)" = 0 ]; then
|
|||
echo "You need to be root or have sudo privileges!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
printf "\nOS: %s" "$(lsb_release -sd)"
|
||||
if [ "$DIST" = "bionic" ] || \
|
||||
[ "$DIST" = "focal" ]; then
|
||||
echo "OS: $(lsb_release -sd)"
|
||||
echo "Good, this is a supported platform!"
|
||||
printf "\nGood, this is a supported platform!"
|
||||
else
|
||||
echo "OS: $(lsb_release -sd)"
|
||||
echo "Sorry, this platform is not supported... exiting"
|
||||
printf "\nSorry, this platform is not supported... exiting"
|
||||
exit
|
||||
fi
|
||||
#Suggest 20.04 LTS release over 18.04 in April 2022
|
||||
|
@ -174,46 +174,44 @@ fi
|
|||
#Check system resources
|
||||
echo "Verifying System Resources:"
|
||||
if [ "$(nproc --all)" -lt 4 ];then
|
||||
echo "
|
||||
Warning!: The system do not meet the minimum CPU requirements for Jibri to run.
|
||||
>> We recommend 4 cores/threads for Jibri!
|
||||
"
|
||||
printf "\nWarning!: The system do not meet the minimum CPU requirements for Jibri to run."
|
||||
printf "\n>> We recommend 4 cores/threads for Jibri!\n\n"
|
||||
CPU_MIN="N"
|
||||
else
|
||||
echo "CPU Cores/Threads: OK ($(nproc --all))"
|
||||
printf "\nCPU Cores/Threads: OK (%s)\n\n" "$(nproc --all)"
|
||||
CPU_MIN="Y"
|
||||
fi
|
||||
sleep .1
|
||||
### Test RAM size (8GB min) ###
|
||||
mem_available="$(grep MemTotal /proc/meminfo| grep -o '[0-9]\+')"
|
||||
if [ "$mem_available" -lt 7700000 ]; then
|
||||
echo "
|
||||
Warning!: The system do not meet the minimum RAM requirements for Jibri to run.
|
||||
>> We recommend 8GB RAM for Jibri!
|
||||
"
|
||||
printf "\nWarning!: The system do not meet the minimum RAM requirements for Jibri to run."
|
||||
printf "\n>> We recommend 8GB RAM for Jibri!\n\n"
|
||||
MEM_MIN="N"
|
||||
else
|
||||
echo "Memory: OK ($((mem_available/1024)) MiB)"
|
||||
printf "\nMemory: OK (%s) MiB)\n\n" "$(mem_available/1024)"
|
||||
MEM_MIN="Y"
|
||||
fi
|
||||
sleep .1
|
||||
if [ "$CPU_MIN" = "Y" ] && [ "$MEM_MIN" = "Y" ];then
|
||||
echo "All requirements seems meet!"
|
||||
echo "\n - We hope you have a nice recording/streaming session\n "
|
||||
printf "\n - We hope you have a nice recording/streaming session\n"
|
||||
else
|
||||
echo "CPU ($(nproc --all))/RAM ($((mem_available/1024)) MiB) does NOT meet minimum recommended requirements!"
|
||||
echo "Even when you can use the videoconferencing sessions, we advice to increase the resources in order to user Jibri."
|
||||
while [[ "$CONTINUE_LOW_RES" != "yes" && "$CONTINUE_LOW_RES" != "no" ]]
|
||||
printf "CPU (%s)/RAM (%s MiB) does NOT meet minimum recommended requirements!" "$(nproc --all)" "$((mem_available/1024))"
|
||||
printf "\nEven when you can use the videoconferencing sessions, we advice to increase the resources in order to user Jibri.\n\n"
|
||||
while [ "$CONTINUE_LOW_RES" != "yes" ] && [ "$CONTINUE_LOW_RES" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to continue?: (yes or no)$NL" -r CONTINUE_LOW_RES
|
||||
if [ "$CONTINUE_LOW_RES" = "no" ]; then
|
||||
echo " - See you next time with more resources!..."
|
||||
exit
|
||||
elif [ "$CONTINUE_LOW_RES" = "yes" ]; then
|
||||
echo " - We highly recommend to increase the server resources."
|
||||
echo -e " - Otherwise, please think about adding dedicated jibri nodes instead.\n"
|
||||
printf " - We highly recommend to increase the server resources."
|
||||
printf " - Otherwise, please think about adding dedicated jibri nodes instead.\n"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
sleep .1
|
||||
if [ "$CONTINUE_LOW_RES" = "yes" ]; then
|
||||
echo 'This server will likely have issues due the lack of resources.
|
||||
If you plan to enable other components such as,
|
||||
|
@ -228,83 +226,86 @@ If you plan to enable other components such as,
|
|||
For now we advice to disable the Jibri service locally and add an external
|
||||
Jibri node once this installation has finished, using our script:
|
||||
|
||||
>> add-jibri-node.sh
|
||||
|
||||
So you can add a Jibri server on a instance with enough resources.'
|
||||
|
||||
while [[ "$DISABLE_LOCAL_JIBRI" != "yes" && "$DISABLE_LOCAL_JIBRI" != "no" ]]
|
||||
>> add-jibri-node.sh'
|
||||
printf "\nSo you can add a Jibri server on a instance with enough resources.\n\n"
|
||||
sleep .1
|
||||
while [ "$DISABLE_LOCAL_JIBRI" != "yes" ] && [ "$DISABLE_LOCAL_JIBRI" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to disable local jibri service?: (yes or no)$NL" -r DISABLE_LOCAL_JIBRI
|
||||
if [ "$DISABLE_LOCAL_JIBRI" = "no" ]; then
|
||||
echo -e " - Please keep in mind that we might not support underpowered servers.\n"
|
||||
printf " - Please keep in mind that we might not support underpowered servers.\n"
|
||||
elif [ "$DISABLE_LOCAL_JIBRI" = "yes" ]; then
|
||||
echo -e " - You can add dedicated jibri nodes later, see more at the wiki.\n"
|
||||
printf " - You can add dedicated jibri nodes later, see more at the wiki.\n"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
sleep .1
|
||||
#Check system oriented porpuse
|
||||
apt-get -yq2 update
|
||||
SYSTEM_DE="$(apt-cache search "ubuntu-(desktop|mate-desktop)"|awk '{print$1}'|xargs|sed 's|$| trisquel triskel trisquel-mini|')"
|
||||
SYSTEM_DE_ARRAY=( "$SYSTEM_DE" )
|
||||
echo -e "Checking for common desktop system oriented purpose....\n $de"
|
||||
printf "\nChecking for common desktop system oriented purpose....\n"
|
||||
for de in "${SYSTEM_DE_ARRAY[@]}"
|
||||
do
|
||||
if [ "$(dpkg-query -W -f='${Status}' "$de" 2>/dev/null | grep -c "ok installed")" == "1" ]; then
|
||||
echo -e "\n > This instance has $de installed, exiting...
|
||||
printf "\n > This instance has %s installed, exiting...
|
||||
\nPlease avoid using this installer on a desktop-user oriented GNU/Linux system.
|
||||
This is an unsupported use, as it will likely BREAK YOUR SYSTEM, so please don't."
|
||||
This is an unsupported use, as it will likely BREAK YOUR SYSTEM, so please don't." "$de"
|
||||
exit
|
||||
else
|
||||
echo -e " > No standard desktop environment for user oriented porpuse detected, continuing...\n"
|
||||
printf " > No standard desktop environment for user oriented porpuse detected, continuing...\n\n"
|
||||
fi
|
||||
done
|
||||
|
||||
sleep .1
|
||||
#Prosody repository
|
||||
add_prosody_repo
|
||||
|
||||
sleep .1
|
||||
# Jitsi-Meet Repo
|
||||
echo -e "\nAdd Jitsi repo"
|
||||
printf "\nAdd Jitsi repo\n"
|
||||
if [ "$JITSI_REPO" = "stable" ]; then
|
||||
echo "- Jitsi stable repository already installed"
|
||||
printf " - Jitsi stable repository already installed\n\n"
|
||||
else
|
||||
echo 'deb http://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list
|
||||
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
|
||||
JITSI_REPO="stable"
|
||||
fi
|
||||
sleep .1
|
||||
#Default to LE SSL?
|
||||
while [[ "$LE_SSL" != "yes" && "$LE_SSL" != "no" ]]
|
||||
while [ "$LE_SSL" != "yes" ] && [ "$LE_SSL" != "no" ]
|
||||
do
|
||||
read -p "> Do you plan to use Let's Encrypt SSL certs?: (yes or no)$NL" -r LE_SSL
|
||||
if [ "$LE_SSL" = yes ]; then
|
||||
echo -e " - We'll setup Let's Encrypt SSL certs.\n"
|
||||
printf " - We'll setup Let's Encrypt SSL certs.\n\n"
|
||||
else
|
||||
echo " - We'll let you choose later on for it.
|
||||
Please be aware that a valid SSL cert is required for some features to work properly."
|
||||
printf " - We'll let you choose later on for it."
|
||||
printf" Please be aware that a valid SSL cert is required for some features to work properly.\n\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
#Set domain
|
||||
if [ "$LE_SSL" = "yes" ]; then
|
||||
while [[ "$ANS_JD" != "yes" ]]
|
||||
if [ "$LE_SSL" = "yes" ]
|
||||
then
|
||||
while [ "$ANS_JD" != "yes" ]
|
||||
do
|
||||
read -p "> Please set your domain (or subdomain) here: (e.g.: jitsi.domain.com)$NL" -r JITSI_DOMAIN
|
||||
read -p "> Did you mean?: $JITSI_DOMAIN (yes or no)$NL" -r ANS_JD
|
||||
if [ "$ANS_JD" = "yes" ]; then
|
||||
read -p " > Did you mean?: $JITSI_DOMAIN (yes or no)$NL" -r ANS_JD
|
||||
if [ "$ANS_JD" = "yes" ]
|
||||
then
|
||||
echo " - Alright, let's use $JITSI_DOMAIN."
|
||||
else
|
||||
echo " - Please try again."
|
||||
fi
|
||||
done
|
||||
|
||||
sleep .1
|
||||
#Sysadmin email
|
||||
while [[ -z $SYSADMIN_EMAIL ]]
|
||||
while [ -z "$SYSADMIN_EMAIL" ]
|
||||
do
|
||||
read -p "> Set sysadmin email (this is a mandatory field):$NL" -r SYSADMIN_EMAIL
|
||||
read -p " > Set sysadmin email (this is a mandatory field):$NL" -r SYSADMIN_EMAIL
|
||||
done
|
||||
|
||||
sleep .1
|
||||
#Simple DNS test
|
||||
if [ "$PUBLIC_IP" = "$(dig -4 +short "$JITSI_DOMAIN"||awk -v RS='([0-9]+\\.){3}[0-9]+' 'RT{print RT}')" ]; then
|
||||
echo -e "\nServer public IP & DNS record for $JITSI_DOMAIN seems to match, continuing..."
|
||||
printf "\nServer public IP & DNS record for %s seems to match, continuing..." "$JITSI_DOMAIN"
|
||||
else
|
||||
echo "Server public IP ($PUBLIC_IP) & DNS record for $JITSI_DOMAIN don't seem to match."
|
||||
echo " > Please check your dns records are applied and updated, otherwise components may fail."
|
||||
|
@ -317,8 +318,9 @@ if [ "$LE_SSL" = "yes" ]; then
|
|||
fi
|
||||
fi
|
||||
fi
|
||||
sleep .1
|
||||
# Requirements
|
||||
echo -e "\nWe'll start by installing system requirements this may take a while please be patient...\n"
|
||||
printf "\nWe'll start by installing system requirements this may take a while please be patient...\n"
|
||||
apt-get update -q2
|
||||
apt-get dist-upgrade -yq2
|
||||
|
||||
|
@ -426,11 +428,11 @@ else
|
|||
rm -rf /tpm/chromedriver_linux64.zip
|
||||
fi
|
||||
|
||||
echo -e "\nCheck Google Software Working...\n"
|
||||
printf "\nCheck Google Software Working...\n"
|
||||
/usr/bin/google-chrome --version
|
||||
/usr/local/bin/chromedriver --version | awk '{print$1,$2}'
|
||||
|
||||
echo -e "\nRemove Chrome warning...\n"
|
||||
printf "\nRemove Chrome warning...\n"
|
||||
mkdir -p /etc/opt/chrome/policies/managed
|
||||
echo '{ "CommandLineFlagSecurityWarningsEnabled": false }' > "$GCMP_JSON"
|
||||
|
||||
|
@ -475,125 +477,134 @@ FQDN_HOST="fqdn"
|
|||
JIBRI_XORG_CONF="/etc/jitsi/jibri/xorg-video-dummy.conf"
|
||||
|
||||
# Rename hostname for jitsi server
|
||||
while [[ "$FQDN_HOST" != "yes" && "$FQDN_HOST" != "no" && -n "$FQDN_HOST" ]]
|
||||
while [ "$FQDN_HOST" != "yes" ] && [ "$FQDN_HOST" != "no" ] && [ -n "$FQDN_HOST" ]
|
||||
do
|
||||
echo -e "> Set $DOMAIN as a fqdn hostname?: (yes or no)" && \
|
||||
printf "> Set %s as a fqdn hostname?: (yes or no)\n" "$DOMAIN" && \
|
||||
read -p "Leave empty to default to your current one ($(hostname -f)):$NL" -r FQDN_HOST
|
||||
if [ "$FQDN_HOST" = "yes" ]; then
|
||||
echo " - $DOMAIN will be used as fqdn hostname, changes will show on reboot."
|
||||
printf " - $DOMAIN will be used as fqdn hostname, changes will show on reboot.\n\n"
|
||||
hostnamectl set-hostname "${DOMAIN}"
|
||||
sed -i "1i ${PUBLIC_IP} ${DOMAIN}" /etc/hosts
|
||||
else
|
||||
echo " - $(hostname -f) will be keep."
|
||||
printf " - $(hostname -f) will be keep.\n\n"
|
||||
fi
|
||||
done
|
||||
|
||||
sleep .1
|
||||
#Language
|
||||
echo "## Setting up Jitsi Meet language ##
|
||||
You can define the language, for a complete list of the supported languages
|
||||
|
||||
See here:
|
||||
https://github.com/jitsi/jitsi-meet/blob/master/lang/languages.json
|
||||
|
||||
Jitsi Meet web interface will be set to use such language."
|
||||
https://github.com/jitsi/jitsi-meet/blob/master/lang/languages.json"
|
||||
printf "Jitsi Meet web interface will be set to use such language.\n\n"
|
||||
sleep .1
|
||||
read -p "Please set your language (Press enter to default to 'en'):$NL" -r JB_LANG
|
||||
echo -e "\nWe'll take a minute to localize some UI excerpts if you need.\n"
|
||||
sleep .1
|
||||
printf "\nWe'll take a minute to localize some UI excerpts if you need.\n\n"
|
||||
sleep .1
|
||||
#Participant
|
||||
echo -e "> Do you want to translate 'Participant' to your own language?" && \
|
||||
printf "> Do you want to translate 'Participant' to your own language?\n"
|
||||
sleep .1
|
||||
read -p "Leave empty to use the default one (English):$NL" -r L10N_PARTICIPANT
|
||||
sleep .1
|
||||
#Me
|
||||
echo -e "\n> Do you want to translate 'me' to your own language?
|
||||
printf "\n> Do you want to translate 'me' to your own language?
|
||||
This must be a really small word to present one self.
|
||||
Some suggestions might be: yo (Spanish) | je (French) | ich (German)\n" && \
|
||||
Some suggestions might be: yo (Spanish) | je (French) | ich (German)\n"
|
||||
sleep .1
|
||||
read -p "Leave empty to use the default one (English):$NL" -r L10N_ME
|
||||
|
||||
#Drop unsecure TLS
|
||||
while [[ "$DROP_TLS1" != "yes" && "$DROP_TLS1" != "no" ]]
|
||||
while [ "$DROP_TLS1" != "yes" ] && [ "$DROP_TLS1" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to drop support for unsecure protocols TLSv1.0/1.1 now: (yes or no)$NL" -r DROP_TLS1
|
||||
if [ "$DROP_TLS1" = "no" ]; then
|
||||
echo " - TLSv1.0/1.1 will remain."
|
||||
printf " - TLSv1.0/1.1 will remain.\n\n"
|
||||
elif [ "$DROP_TLS1" = "yes" ]; then
|
||||
echo " - TLSv1.0/1.1 will be dropped"
|
||||
printf " - TLSv1.0/1.1 will be dropped\n\n"
|
||||
fi
|
||||
done
|
||||
|
||||
sleep .1
|
||||
#Brandless Mode
|
||||
while [[ "$ENABLE_BLESSM" != "yes" && "$ENABLE_BLESSM" != "no" ]]
|
||||
while [ "$ENABLE_BLESSM" != "yes" ] && [ "$ENABLE_BLESSM" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to install customized \"brandless mode\"?: (yes or no)$NL" -r ENABLE_BLESSM
|
||||
if [ "$ENABLE_BLESSM" = "no" ]; then
|
||||
echo " - Brandless mode won't be set."
|
||||
printf " - Brandless mode won't be set.\n\n"
|
||||
elif [ "$ENABLE_BLESSM" = "yes" ]; then
|
||||
echo " - Brandless mode will be set."
|
||||
printf " - Brandless mode will be set.\n\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
#Welcome Page
|
||||
while [[ "$ENABLE_WELCP" != "yes" && "$ENABLE_WELCP" != "no" ]]
|
||||
while [ "$ENABLE_WELCP" != "yes" ] && [ "$ENABLE_WELCP" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to disable the Welcome page: (yes or no)$NL" -r ENABLE_WELCP
|
||||
if [ "$ENABLE_WELCP" = "yes" ]; then
|
||||
echo " - Welcome page will be disabled."
|
||||
printf " - Welcome page will be disabled.\n\n"
|
||||
elif [ "$ENABLE_WELCP" = "no" ]; then
|
||||
echo " - Welcome page will be enabled."
|
||||
printf " - Welcome page will be enabled.\n\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
#Close page
|
||||
while [[ "$ENABLE_CLOCP" != "yes" && "$ENABLE_CLOCP" != "no" ]]
|
||||
while [ "$ENABLE_CLOCP" != "yes" ] && [ "$ENABLE_CLOCP" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to enable the close page on room exit: (yes or no)$NL" -r ENABLE_CLOCP
|
||||
if [ "$ENABLE_CLOCP" = "yes" ]; then
|
||||
echo " - Close page will be enabled."
|
||||
printf " - Close page will be enabled.\n\n"
|
||||
elif [ "$ENABLE_CLOCP" = "no" ]; then
|
||||
echo " - Close page will be kept disabled."
|
||||
printf " - Close page will be kept disabled.\n\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
# Set authentication method
|
||||
echo -e "\n> Jitsi Meet Auth Method selection.\n"
|
||||
printf "\n> Jitsi Meet Auth Method selection.\n"
|
||||
PS3='Select the authentication method for your Jitsi Meet instance: '
|
||||
options=("Local" "JWT" "None")
|
||||
select opt in "${options[@]}"
|
||||
do
|
||||
case $opt in
|
||||
"Local")
|
||||
echo -e "\n > Users are created manually using prosodyctl, only moderators can open a room or launch recording.\n"
|
||||
printf "\n > Users are created manually using prosodyctl, only moderators can open a room or launch recording.\n"
|
||||
ENABLE_SC="yes"
|
||||
break
|
||||
;;
|
||||
"JWT")
|
||||
echo -e "\n > A external app manage the token usage/creation, like RocketChat does.\n"
|
||||
printf "\n > A external app manage the token usage/creation, like RocketChat does.\n"
|
||||
ENABLE_JWT="yes"
|
||||
break
|
||||
;;
|
||||
"None")
|
||||
echo -e "\n > Everyone can access the room as moderators as there is no auth mechanism.\n"
|
||||
printf "\n > Everyone can access the room as moderators as there is no auth mechanism.\n"
|
||||
break
|
||||
;;
|
||||
*) echo "Invalid option $REPLY, choose 1, 2 or 3";;
|
||||
esac
|
||||
done
|
||||
|
||||
sleep .1
|
||||
# Set jibris default resolution
|
||||
echo -e "\n> What jibri resolution should be the default for this and all the following jibri nodes?\n"
|
||||
printf "\n> What jibri resolution should be the default for this and all the following jibri nodes?\n"
|
||||
PS3='The more resolution the more resources jibri will require to record properly: '
|
||||
jib_res=("HD 720" "FHD 1080")
|
||||
select res in "${jib_res[@]}"
|
||||
do
|
||||
case $res in
|
||||
"HD 720")
|
||||
echo -e "\n > HD (1280x720) is good enough for most cases, and requires a moderate high hw requirements.\n"
|
||||
printf "\n > HD (1280x720) is good enough for most cases, and requires a moderate high hw requirements.\n\n"
|
||||
JIBRI_RES="720"
|
||||
break
|
||||
;;
|
||||
"FHD 1080")
|
||||
echo -e "\n > Full HD (1920x1080) is the best resolution available, it also requires high hw requirements.\n"
|
||||
printf "\n > Full HD (1920x1080) is the best resolution available, it also requires high hw requirements.\n\n"
|
||||
JIBRI_RES="1080"
|
||||
break
|
||||
;;
|
||||
*) echo "Invalid option «$REPLY», choose 1 or 2";;
|
||||
*) printf "\nInvalid option «$REPLY», choose 1 or 2\n\n"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
sleep .1
|
||||
if [ "$JIBRI_RES" = "720" ]; then
|
||||
JIBRI_RES_CONF="\"1280x720\""
|
||||
JIBRI_RES_XORG_CONF="1280 720"
|
||||
|
@ -605,57 +616,60 @@ if [ "$JIBRI_RES" = "1080" ]; then
|
|||
fi
|
||||
|
||||
#Jibri Records Access (JRA) via Nextcloud
|
||||
while [[ "$ENABLE_NC_ACCESS" != "yes" && "$ENABLE_NC_ACCESS" != "no" ]]
|
||||
while [ "$ENABLE_NC_ACCESS" != "yes" ] && [ "$ENABLE_NC_ACCESS" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to setup Jibri Records Access via Nextcloud: (yes or no)
|
||||
( Please check requirements at: https://github.com/switnet-ltd/quick-jibri-installer )$NL" -r ENABLE_NC_ACCESS
|
||||
if [ "$ENABLE_NC_ACCESS" = "no" ]; then
|
||||
echo -e " - JRA via Nextcloud won't be enabled.\n"
|
||||
printf " - JRA via Nextcloud won't be enabled.\n\n"
|
||||
elif [ "$ENABLE_NC_ACCESS" = "yes" ]; then
|
||||
echo -e " - JRA via Nextcloud will be enabled.\n"
|
||||
printf " - JRA via Nextcloud will be enabled.\n\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
#Jigasi
|
||||
if [ "$(curl -s -o /dev/null -w "%{http_code}" "$GC_SDK_REL_FILE" )" == "404" ]; then
|
||||
echo "> Sorry Google SDK doesn't have support yet for $(lsb_release -sd),
|
||||
thus, Jigasi Transcript can't be enable.
|
||||
"
|
||||
printf "> Sorry Google SDK doesn't have support yet for %s,
|
||||
thus, Jigasi Transcript can't be enable.\n\n" "$(lsb_release -sd)"
|
||||
elif [ "$(curl -s -o /dev/null -w "%{http_code}" "$GC_SDK_REL_FILE" )" == "200" ]; then
|
||||
while [[ "$ENABLE_TRANSCRIPT" != "yes" && "$ENABLE_TRANSCRIPT" != "no" ]]
|
||||
while [ "$ENABLE_TRANSCRIPT" != "yes" ] && [ "$ENABLE_TRANSCRIPT" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to setup Jigasi Transcription: (yes or no)
|
||||
( Please check requirements at: https://github.com/switnet-ltd/quick-jibri-installer )$NL" -r ENABLE_TRANSCRIPT
|
||||
if [ "$ENABLE_TRANSCRIPT" = "no" ]; then
|
||||
echo -e " - Jigasi Transcription won't be enabled.\n"
|
||||
printf " - Jigasi Transcription won't be enabled.\n\n"
|
||||
elif [ "$ENABLE_TRANSCRIPT" = "yes" ]; then
|
||||
echo -e " - Jigasi Transcription will be enabled.\n"
|
||||
printf " - Jigasi Transcription will be enabled.\n\n"
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "No valid option for Jigasi. Please report this to
|
||||
https://github.com/switnet-ltd/quick-jibri-installer/issues "
|
||||
https://github.com/switnet-ltd/quick-jibri-installer/issues"
|
||||
fi
|
||||
sleep .1
|
||||
#Grafana
|
||||
while [[ "$ENABLE_GRAFANA_DSH" != "yes" && "$ENABLE_GRAFANA_DSH" != "no" ]]
|
||||
while [ "$ENABLE_GRAFANA_DSH" != "yes" ] && [ "$ENABLE_GRAFANA_DSH" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to setup Grafana Dashboard: (yes or no)
|
||||
( Please check requirements at: https://github.com/switnet-ltd/quick-jibri-installer )$NL" -r ENABLE_GRAFANA_DSH
|
||||
if [ "$ENABLE_GRAFANA_DSH" = "no" ]; then
|
||||
echo -e " - Grafana Dashboard won't be enabled.\n"
|
||||
printf " - Grafana Dashboard won't be enabled.\n\n"
|
||||
elif [ "$ENABLE_GRAFANA_DSH" = "yes" ]; then
|
||||
echo -e " - Grafana Dashboard will be enabled.\n"
|
||||
printf " - Grafana Dashboard will be enabled.\n\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
#Docker Etherpad
|
||||
while [[ "$ENABLE_DOCKERPAD" != "yes" && "$ENABLE_DOCKERPAD" != "no" ]]
|
||||
while [ "$ENABLE_DOCKERPAD" != "yes" ] && [ "$ENABLE_DOCKERPAD" != "no" ]
|
||||
do
|
||||
read -p "> Do you want to setup Docker Etherpad: (yes or no)$NL" -r ENABLE_DOCKERPAD
|
||||
if [ "$ENABLE_DOCKERPAD" = "no" ]; then
|
||||
echo -e " - Docker Etherpad won't be enabled.\n"
|
||||
printf " - Docker Etherpad won't be enabled.\n"
|
||||
elif [ "$ENABLE_DOCKERPAD" = "yes" ]; then
|
||||
echo -e " - Docker Etherpad will be enabled.\n"
|
||||
printf " - Docker Etherpad will be enabled.\n"
|
||||
fi
|
||||
done
|
||||
sleep .1
|
||||
#Start configuration
|
||||
echo '
|
||||
########################################################################
|
||||
|
@ -695,17 +709,17 @@ if [ "$LE_SSL" = "yes" ]; then
|
|||
|
||||
echo "#Set and upgrade certbot PPA if posssible..."
|
||||
if [ "$CERTBOT_REPO" = "certbot" ]; then
|
||||
echo -e "\nCertbot repository already on the system!\nChecking for updates...\n"
|
||||
printf "\nCertbot repository already on the system!\nChecking for updates...\n"
|
||||
apt-get -q2 update
|
||||
apt-get -yq2 dist-upgrade
|
||||
elif [ "$(curl -s -o /dev/null -w "%{http_code}" "$CERTBOT_REL_FILE" )" == "200" ]; then
|
||||
echo -e "\nAdding cerbot (formerly letsencrypt) PPA repository for latest updates\n"
|
||||
printf "\nAdding cerbot (formerly letsencrypt) PPA repository for latest updates\n"
|
||||
echo "deb http://ppa.launchpad.net/certbot/certbot/ubuntu $DIST main" > /etc/apt/sources.list.d/certbot.list
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 75BCA694
|
||||
apt-get -q2 update
|
||||
apt-get -yq2 dist-upgrade
|
||||
elif [ "$(curl -s -o /dev/null -w "%{http_code}" "$CERTBOT_REL_FILE" )" == "404" ]; then
|
||||
echo -e "\nCertbot PPA is not available for $(lsb_release -sc) just yet, it won't be installed...\n"
|
||||
printf "\nCertbot PPA is not available for %s just yet, it won't be installed...\n" "$(lsb_release -sc)"
|
||||
fi
|
||||
else
|
||||
echo "SSL setup will be skipped."
|
||||
|
@ -737,15 +751,16 @@ sed -i "/shard.HOSTNAME/s|localhost|$DOMAIN|" /etc/jitsi/videobridge/sip-communi
|
|||
# Configure Jibri
|
||||
if [ "$ENABLE_SC" = "yes" ]; then
|
||||
if [ ! -f "$MOD_LIST_FILE" ]; then
|
||||
echo -e "\n-> Adding external module to list prosody users...\n"
|
||||
printf "\n-> Adding external module to list prosody users...\n"
|
||||
curl -s "$MOD_LISTU" > "$MOD_LIST_FILE"
|
||||
|
||||
echo -e "Now you can check registered users with:\nprosodyctl mod_listusers\n"
|
||||
printf "Now you can check registered users with:\nprosodyctl mod_listusers\n"
|
||||
else
|
||||
echo -e "Prosody support for listing users seems to be enabled. \ncheck with: prosodyctl mod_listusers\n"
|
||||
printf "Prosody support for listing users seems to be enabled. \ncheck with: prosodyctl mod_listusers\n"
|
||||
fi
|
||||
|
||||
fi
|
||||
sleep .1
|
||||
#Enable jibri recording
|
||||
cat << REC-JIBRI >> "$PROSODY_FILE"
|
||||
|
||||
|
@ -1052,15 +1067,15 @@ if [ "$ENABLE_SA" = "yes" ] && [ -f "$WS_CONF" ]; then
|
|||
fi
|
||||
#nginx -tlsv1/1.1
|
||||
if [ "$DROP_TLS1" = "yes" ];then
|
||||
echo -e "\nDropping TLSv1/1.1\n"
|
||||
printf "\nDropping TLSv1/1.1\\nn"
|
||||
sed -i "s|TLSv1 TLSv1.1||" /etc/nginx/nginx.conf
|
||||
elif [ "$DROP_TLS1" = "no" ];then
|
||||
echo -e "\nNo TLSv1/1.1 dropping was done.\n"
|
||||
printf "\nNo TLSv1/1.1 dropping was done.\n\n"
|
||||
else
|
||||
echo "No condition meet, please report to
|
||||
https://github.com/switnet-ltd/quick-jibri-installer/issues "
|
||||
fi
|
||||
|
||||
sleep .1
|
||||
#================== Setup prosody conf file =================
|
||||
|
||||
###Setup secure rooms
|
||||
|
@ -1074,21 +1089,21 @@ if [ "$ENABLE_SC" = "yes" ]; then
|
|||
read -p "Set username for secure room moderator:$NL" -r SEC_ROOM_USER
|
||||
read -p "Secure room moderator password:$NL" -r SEC_ROOM_PASS
|
||||
prosodyctl register "$SEC_ROOM_USER" "$DOMAIN" "$SEC_ROOM_PASS"
|
||||
|
||||
echo -e "\nSecure rooms are being enabled..."
|
||||
sleep .1
|
||||
printf "\nSecure rooms are being enabled...\n"
|
||||
echo "You'll be able to login Secure Room chat with '${SEC_ROOM_USER}' \
|
||||
or '${SEC_ROOM_USER}@${DOMAIN}' using the password you just entered.
|
||||
If you have issues with the password refer to your sysadmin."
|
||||
sed -i "s|#org.jitsi.jicofo.auth.URL=XMPP:|org.jitsi.jicofo.auth.URL=XMPP:|" "$JICOFO_SIP"
|
||||
sed -i "s|SEC_ROOM=.*|SEC_ROOM=\"on\"|" jm-bm.sh
|
||||
fi
|
||||
|
||||
sleep .1
|
||||
###JWT
|
||||
if [ "$ENABLE_JWT" = "yes" ]; then
|
||||
echo -e "\nJWT auth is being setup..."
|
||||
printf "\nJWT auth is being setup...\n"
|
||||
bash "$PWD"/mode/jwt.sh
|
||||
fi
|
||||
|
||||
sleep .1
|
||||
#Guest allow
|
||||
#Change back lobby - https://community.jitsi.org/t/64769/136
|
||||
if [ "$ENABLE_SC" = "yes" ];then
|
||||
|
@ -1153,17 +1168,15 @@ sed -i "/Enable \/ disable simulcast support/i \ \ \ \ \ }," "$MEET_CONF"
|
|||
sed -i "/Enable \/ disable simulcast support/i \/\/ End QJI" "$MEET_CONF"
|
||||
|
||||
#Check config file
|
||||
echo -e "\n# Checking $MEET_CONF file for errors\n"
|
||||
printf "\n# Checking %s file for errors\n" "$MEET_CONF"
|
||||
CHECKJS=$(esvalidate "$MEET_CONF"| cut -d ":" -f2)
|
||||
if [[ -z "$CHECKJS" ]]; then
|
||||
echo -e "\n# The $MEET_CONF configuration seems correct. =)\n"
|
||||
if [ -z "$CHECKJS" ]; then
|
||||
printf "\n# The %s configuration seems correct. =)\n" "$MEET_CONF"
|
||||
else
|
||||
echo "
|
||||
Watch out!, there seems to be an issue on $MEET_CONF line:
|
||||
echo -e "\nWatch out!, there seems to be an issue on $MEET_CONF line:
|
||||
$CHECKJS
|
||||
Most of the times this is due upstream changes, please report to
|
||||
https://github.com/switnet-ltd/quick-jibri-installer/issues
|
||||
"
|
||||
https://github.com/switnet-ltd/quick-jibri-installer/issues\n"
|
||||
fi
|
||||
|
||||
#Enable jibri services
|
||||
|
@ -1199,8 +1212,9 @@ if [ "$ENABLE_BLESSM" = "yes" ]; then
|
|||
sed -i "s|ENABLE_BLESSM=.*|ENABLE_BLESSM=\"on\"|" jitsi-updater.sh
|
||||
bash "$PWD"/jm-bm.sh
|
||||
fi
|
||||
|
||||
# Applying best practives for interface config.js
|
||||
echo -e "\n> Setting up custom interface_config.js according to best practices."
|
||||
printf "\n> Setting up custom interface_config.js according to best practices."
|
||||
cp "$INT_CONF" "$INT_CONF_ETC"
|
||||
|
||||
#Tune webserver for interface_config.js
|
||||
|
@ -1217,17 +1231,18 @@ else
|
|||
fi
|
||||
#JRA via Nextcloud
|
||||
if [ "$ENABLE_NC_ACCESS" = "yes" ]; then
|
||||
echo -e "\nJRA via Nextcloud will be enabled."
|
||||
printf "\nJRA via Nextcloud will be enabled."
|
||||
if [ "$MODE" = "debug" ]; then
|
||||
bash "$PWD"/jra_nextcloud.sh -m debug
|
||||
else
|
||||
bash "$PWD"/jra_nextcloud.sh
|
||||
fi
|
||||
fi
|
||||
sleep .1
|
||||
} > >(tee -a qj-installer.log) 2> >(tee -a qj-installer.log >&2)
|
||||
#Jigasi Transcript
|
||||
if [ "$ENABLE_TRANSCRIPT" = "yes" ]; then
|
||||
echo -e "\nJigasi Transcription will be enabled."
|
||||
printf "\nJigasi Transcription will be enabled."
|
||||
# ToDo: Analyze behavior on debug
|
||||
#if [ "$MODE" = "debug" ]; then
|
||||
# bash "$PWD"/jigasi.sh -m debug
|
||||
|
@ -1235,25 +1250,28 @@ if [ "$ENABLE_TRANSCRIPT" = "yes" ]; then
|
|||
bash "$PWD"/jigasi.sh
|
||||
#fi
|
||||
fi
|
||||
sleep .1
|
||||
{
|
||||
#Grafana Dashboard
|
||||
if [ "$ENABLE_GRAFANA_DSH" = "yes" ]; then
|
||||
echo -e "\nGrafana Dashboard will be enabled."
|
||||
printf "\nGrafana Dashboard will be enabled."
|
||||
if [ "$MODE" = "debug" ]; then
|
||||
bash "$PWD"/grafana.sh -m debug
|
||||
else
|
||||
bash "$PWD"/grafana.sh
|
||||
fi
|
||||
fi
|
||||
sleep .1
|
||||
#Docker Etherpad
|
||||
if [ "$ENABLE_DOCKERPAD" = "yes" ]; then
|
||||
echo -e "\nDocker Etherpad will be enabled."
|
||||
printf "\nDocker Etherpad will be enabled."
|
||||
if [ "$MODE" = "debug" ]; then
|
||||
bash "$PWD"/etherpad-docker.sh -m debug
|
||||
else
|
||||
bash "$PWD"/etherpad-docker.sh
|
||||
fi
|
||||
fi
|
||||
sleep .1
|
||||
#Prevent JMS conecction issue
|
||||
if [ -z "$(awk "/127.0.0.1/&&/$DOMAIN/{print\$1}" /etc/hosts)" ];then
|
||||
sed -i "/127.0.0.1/a \\
|
||||
|
|
Loading…
Reference in New Issue