#!/bin/bash # Etherpad Installer for Jitsi Meet # SwITNet Ltd © - 2020, https://switnet.net/ # # GPLv3 or later. while getopts m: option do case "${option}" in m) MODE=${OPTARG};; \?) echo "Usage: sudo ./etherpad.sh [-m debug]" && exit;; esac done #DEBUG if [ "$MODE" = "debug" ]; then set -x fi if ! [ $(id -u) = 0 ]; then echo "You need to be root or have sudo privileges!" exit 0 fi clear echo ' ######################################################################## Etherpad Docker addon ######################################################################## by Software, IT & Networks Ltd ' check_apt_policy() { apt-cache policy 2>/dev/null| \ grep http | \ grep $1 | \ awk '{print $3}' | \ head -n 1 | \ cut -d "/" -f2 } 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 ----" apt-get -yq2 install $1 fi } DOMAIN=$(ls /etc/prosody/conf.d/ | grep -v localhost | awk -F'.cfg' '{print $1}' | awk '!NF || !seen[$0]++') MEET_CONF="/etc/jitsi/meet/$DOMAIN-config.js" WS_CONF="/etc/nginx/sites-enabled/$DOMAIN.conf" PSGVER="$(apt-cache madison postgresql | head -n1 | awk '{print $3}' | cut -d "+" -f1)" ETHERPAD_DB_USER="dockerpad" ETHERPAD_DB_NAME="etherpad" ETHERPAD_DB_PASS="$(tr -dc "a-zA-Z0-9#*=" < /dev/urandom | fold -w 10 | head -n1)" DOCKER_CE_REPO="$(check_apt_policy docker)" echo "Add Docker repo" if [ "$DOCKER_CE_REPO" = "stable" ]; then echo "Docker repository already installed" else echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker-ce.list wget -qO - https://download.docker.com/linux/ubuntu/gpg | apt-key add - apt -q2 update fi read -p "Set your etherpad docker admin password: " -r ETHERPAD_ADMIN_PASS # Install required packages install_ifnot docker-ce install_ifnot postgresql-$PSGVER # Create DB sudo -u postgres psql < https://github.com/switnet-ltd/quick-jibri-installer/issues" fi # Configure config.js if [ $(grep -c "etherpad_base" $WS_CONF) != 0 ]; then echo "$MEET_CONF seems configured, skipping..." else echo "Setting etherpad domain at $MEET_CONF..." sed -i "/ domain: '$DOMAIN'/a\ \ \ \ \ \ \ \ etherpad_base: \'https://$DOMAIN/etherpad/p/\'," $MEET_CONF fi echo "Checking nginx configuration..." nginx -t 2>/dev/null if [ $? = 0 ]; then echo "Docker configuration seems fine, enabling it..." systemctl reload nginx else echo "Please check your configuration, something may be wrong." echo "Will not try to enable etherpad nginx configuration, please report to: -> https://github.com/switnet-ltd/quick-jibri-installer/issues" fi