2020-06-06 14:39:54 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
cd $(dirname $0)/..
|
|
|
|
|
2020-06-06 20:05:39 +02:00
|
|
|
if ! [ -x "$(command -v curl)" ]; then
|
|
|
|
echo "Error: curl is not installed, but the setup script relies on it."
|
|
|
|
echo "on debian based operating systems try following command:"
|
|
|
|
echo " $ sudo apt-get install curl"
|
|
|
|
exit 1
|
|
|
|
fi
|
2020-06-06 14:39:54 +02:00
|
|
|
|
|
|
|
# load .env
|
|
|
|
if [ -f .env ]
|
|
|
|
then
|
|
|
|
echo "Error: the configuration file .env already exists."
|
|
|
|
echo "either edit variables manually in there or remove the file and try this script again"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2020-06-06 20:05:39 +02:00
|
|
|
|
2020-07-12 19:15:40 +02:00
|
|
|
EXTERNAL_IPv4=$(curl -4 -s https://icanhazip.com)
|
2020-07-13 17:52:14 +02:00
|
|
|
EXTERNAL_IPv6=$(curl -6 -s https://icanhazip.com || true)
|
2020-06-06 20:05:39 +02:00
|
|
|
|
|
|
|
greenlight=""
|
2020-06-06 14:39:54 +02:00
|
|
|
while [[ ! $greenlight =~ ^(y|n)$ ]]; do
|
|
|
|
read -p "Should greenlight be included? (y/n): " greenlight
|
|
|
|
done
|
|
|
|
|
2020-06-06 20:05:39 +02:00
|
|
|
https_proxy=""
|
2020-06-06 14:39:54 +02:00
|
|
|
while [[ ! $https_proxy =~ ^(y|n)$ ]]; do
|
|
|
|
read -p "Should an automatic HTTPS Proxy be included? (y/n): " https_proxy
|
|
|
|
done
|
|
|
|
|
2020-06-07 13:58:56 +02:00
|
|
|
coturn=""
|
|
|
|
if [ "$https_proxy" == "y" ]
|
|
|
|
then
|
|
|
|
while [[ ! $coturn =~ ^(y|n)$ ]]; do
|
|
|
|
read -p "Should a coturn be included? (y/n): " coturn
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
2020-06-06 14:39:54 +02:00
|
|
|
DOMAIN=""
|
|
|
|
while [[ -z "$DOMAIN" ]]; do
|
|
|
|
read -p "Please enter the domain name: " DOMAIN
|
|
|
|
done
|
|
|
|
|
2020-08-15 03:42:43 +02:00
|
|
|
recording=""
|
|
|
|
while [[ ! $recording =~ ^(y|n)$ ]]; do
|
|
|
|
read -p "Should recording feature be included? (y/n): " recording
|
|
|
|
done
|
|
|
|
|
2020-06-06 14:39:54 +02:00
|
|
|
ip_correct=""
|
|
|
|
while [[ ! $ip_correct =~ ^(y|n)$ ]]; do
|
2020-07-12 19:15:40 +02:00
|
|
|
read -p "Is $EXTERNAL_IPv4 your external IPv4 address? (y/n): " ip_correct
|
2020-06-06 14:39:54 +02:00
|
|
|
done
|
|
|
|
|
2020-07-12 19:15:40 +02:00
|
|
|
if [ ! "$ip_correct" == "y" ]
|
|
|
|
then
|
|
|
|
EXTERNAL_IPv4=""
|
2020-07-31 09:42:23 +02:00
|
|
|
while [[ ! $EXTERNAL_IPv4 =~ ^[1-9][0-9]{0,2}\.[0-9]{0,3}\.[0-9]{0,3}\.[1-9][0-9]{0,2}$ ]]; do
|
2020-07-12 19:15:40 +02:00
|
|
|
read -p "Please enter correct IPv4 address: " EXTERNAL_IPv4
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
2020-07-13 17:52:14 +02:00
|
|
|
if [ -n "$EXTERNAL_IPv6" ]
|
2020-06-06 14:39:54 +02:00
|
|
|
then
|
2020-07-13 17:52:14 +02:00
|
|
|
ip_correct=""
|
|
|
|
while [[ ! $ip_correct =~ ^(y|n)$ ]]; do
|
|
|
|
read -p "Is $EXTERNAL_IPv6 your external IPv6 address? (y/n): " ip_correct
|
2020-06-06 14:39:54 +02:00
|
|
|
done
|
2020-07-13 17:52:14 +02:00
|
|
|
|
|
|
|
if [ ! "$ip_correct" == "y" ]
|
|
|
|
then
|
|
|
|
EXTERNAL_IPv6=""
|
2020-07-31 09:42:23 +02:00
|
|
|
while [[ ! $EXTERNAL_IPv6 =~ ^[0-9a-z:]{3,39}$ ]]; do
|
2020-07-13 17:52:14 +02:00
|
|
|
read -p "Please enter correct IPv6 address: " EXTERNAL_IPv6
|
|
|
|
done
|
|
|
|
fi
|
2020-06-06 14:39:54 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# write settings
|
|
|
|
cp sample.env .env
|
2020-07-12 19:15:40 +02:00
|
|
|
sed -i "s/EXTERNAL_IPv4=.*/EXTERNAL_IPv4=$EXTERNAL_IPv4/" .env
|
2020-07-13 17:52:14 +02:00
|
|
|
sed -i "s/EXTERNAL_IPv6=.*/EXTERNAL_IPv6=$EXTERNAL_IPv6/" .env
|
2020-06-06 14:39:54 +02:00
|
|
|
sed -i "s/DOMAIN=.*/DOMAIN=$DOMAIN/" .env
|
|
|
|
|
|
|
|
if [ ! "$greenlight" == "y" ]
|
|
|
|
then
|
|
|
|
sed -i "s/ENABLE_GREENLIGHT.*/#ENABLE_GREENLIGHT=true/" .env
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! "$https_proxy" == "y" ]
|
|
|
|
then
|
|
|
|
sed -i "s/ENABLE_HTTPS_PROXY.*/#ENABLE_HTTPS_PROXY=true/" .env
|
|
|
|
fi
|
2020-08-15 03:42:43 +02:00
|
|
|
|
|
|
|
if [ ! "$recording" == "y" ]
|
|
|
|
then
|
|
|
|
sed -i "s/ENABLE_RECORDING.*/#ENABLE_RECORDING=true/" .env
|
|
|
|
fi
|
2020-06-06 14:39:54 +02:00
|
|
|
|
2020-06-07 13:58:56 +02:00
|
|
|
if [ "$coturn" == "y" ]
|
|
|
|
then
|
|
|
|
sed -i "s/.*TURN_SERVER=.*/TURN_SERVER=turns:$DOMAIN:465?transport=tcp/" .env
|
|
|
|
TURN_SECRET=$(head /dev/urandom | tr -dc A-Za-f0-9 | head -c 32)
|
|
|
|
sed -i "s/.*TURN_SECRET=.*/TURN_SECRET=$TURN_SECRET/" .env
|
2020-07-12 19:15:40 +02:00
|
|
|
sed -i "s/.*STUN_IP=.*/STUN_IP=$EXTERNAL_IPv4/" .env
|
2020-06-07 13:58:56 +02:00
|
|
|
else
|
|
|
|
sed -i "s/ENABLE_COTURN.*/#ENABLE_COTURN=true/" .env
|
|
|
|
fi
|
|
|
|
|
2020-06-06 14:39:54 +02:00
|
|
|
# change secrets
|
2020-06-06 20:05:39 +02:00
|
|
|
RANDOM_1=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 40)
|
|
|
|
RANDOM_2=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 40)
|
|
|
|
RANDOM_3=$(head /dev/urandom | tr -dc a-f0-9 | head -c 128)
|
2020-06-06 14:39:54 +02:00
|
|
|
sed -i "s/SHARED_SECRET=.*/SHARED_SECRET=$RANDOM_1/" .env
|
|
|
|
sed -i "s/ETHERPAD_API_KEY=.*/ETHERPAD_API_KEY=$RANDOM_2/" .env
|
|
|
|
sed -i "s/RAILS_SECRET=.*/RAILS_SECRET=$RANDOM_3/" .env
|
|
|
|
|
|
|
|
echo "--------------------------------------------------"
|
|
|
|
echo "configuration file .env got successfully created!"
|
|
|
|
echo ""
|
|
|
|
echo "you can look through it for further adjusments"
|
|
|
|
echo " $ nano .env"
|
|
|
|
echo ""
|
|
|
|
echo "to start bigbluebutton run"
|
|
|
|
echo " $ ./scripts/compose up -d"
|