forked from extern/docker
63a72de927
The way like this it is possible to have the password for PostgreSQL as an environment variable
143 lines
4.0 KiB
Bash
Executable File
143 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
cd $(dirname $0)/..
|
|
|
|
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
|
|
|
|
# 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
|
|
|
|
|
|
EXTERNAL_IPv4=$(curl -4 -s https://icanhazip.com)
|
|
EXTERNAL_IPv6=$(curl -6 -s -m 10 https://icanhazip.com || true)
|
|
|
|
greenlight=""
|
|
while [[ ! $greenlight =~ ^(y|n)$ ]]; do
|
|
read -p "Should greenlight be included? (y/n): " greenlight
|
|
done
|
|
|
|
https_proxy=""
|
|
while [[ ! $https_proxy =~ ^(y|n)$ ]]; do
|
|
read -p "Should an automatic HTTPS Proxy be included? (y/n): " https_proxy
|
|
done
|
|
|
|
prometheus_exporter=""
|
|
while [[ ! $prometheus_exporter =~ ^(y|n)$ ]]; do
|
|
read -p "Should a Prometheus exporter be included? (y/n): " prometheus_exporter
|
|
done
|
|
|
|
DOMAIN=""
|
|
while [[ -z "$DOMAIN" ]]; do
|
|
read -p "Please enter the domain name: " DOMAIN
|
|
done
|
|
|
|
recording=""
|
|
echo "Should the recording feature be included?"
|
|
echo " IMPORTANT: this is currently a big privacy issues, because it will "
|
|
echo " record everything which happens in the conference, even when the button"
|
|
echo " suggets, that it does not."
|
|
echo " make sure that you awalys get peoples consent, before they join a room!"
|
|
echo " https://github.com/bigbluebutton/bigbluebutton/issues/9202"
|
|
while [[ ! $recording =~ ^(y|n)$ ]]; do
|
|
|
|
read -p "Choice (y/n): " recording
|
|
done
|
|
|
|
ip_correct=""
|
|
while [[ ! $ip_correct =~ ^(y|n)$ ]]; do
|
|
read -p "Is $EXTERNAL_IPv4 your external IPv4 address? (y/n): " ip_correct
|
|
done
|
|
|
|
if [ ! "$ip_correct" == "y" ]
|
|
then
|
|
EXTERNAL_IPv4=""
|
|
while [[ ! $EXTERNAL_IPv4 =~ ^[1-9][0-9]{0,2}\.[0-9]{0,3}\.[0-9]{0,3}\.[1-9][0-9]{0,2}$ ]]; do
|
|
read -p "Please enter correct IPv4 address: " EXTERNAL_IPv4
|
|
done
|
|
fi
|
|
|
|
if [ -n "$EXTERNAL_IPv6" ]
|
|
then
|
|
ip_correct=""
|
|
while [[ ! $ip_correct =~ ^(y|n)$ ]]; do
|
|
read -p "Is $EXTERNAL_IPv6 your external IPv6 address? (y/n): " ip_correct
|
|
done
|
|
|
|
if [ ! "$ip_correct" == "y" ]
|
|
then
|
|
EXTERNAL_IPv6=""
|
|
while [[ ! $EXTERNAL_IPv6 =~ ^[0-9a-z:]{3,39}$ ]]; do
|
|
read -p "Please enter correct IPv6 address: " EXTERNAL_IPv6
|
|
done
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
# write settings
|
|
cp sample.env .env
|
|
sed -i "s/EXTERNAL_IPv4=.*/EXTERNAL_IPv4=$EXTERNAL_IPv4/" .env
|
|
sed -i "s/EXTERNAL_IPv6=.*/EXTERNAL_IPv6=$EXTERNAL_IPv6/" .env
|
|
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
|
|
|
|
if [ "$recording" == "y" ]
|
|
then
|
|
sed -i "s/#ENABLE_RECORDING.*/ENABLE_RECORDING=true/" .env
|
|
fi
|
|
|
|
if [ "$prometheus_exporter" == "y" ]
|
|
then
|
|
sed -i "s/#ENABLE_PROMETHEUS_EXPORTER.*/ENABLE_PROMETHEUS_EXPORTER=true/" .env
|
|
fi
|
|
|
|
# change secrets
|
|
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)
|
|
if [ ! "$greenlight" == "y" ]
|
|
then
|
|
RANDOM_4=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 40)
|
|
fi
|
|
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
|
|
if [ ! "$greenlight" == "y" ]
|
|
then
|
|
sed -i "s/POSTGRESQL_SECRET=.*/POSTGRESQL_SECRET=$RANDOM_4/" .env
|
|
fi
|
|
|
|
./scripts/generate-compose
|
|
|
|
echo "--------------------------------------------------"
|
|
echo "configuration file .env got successfully created!"
|
|
echo ""
|
|
echo "you can look through it for further adjusments"
|
|
echo " $ nano .env"
|
|
echo ""
|
|
echo "make sure to recreate the docker-compose.yml after each change"
|
|
echo " $ ./scripts/generate-compose"
|
|
echo ""
|
|
echo "to start bigbluebutton run"
|
|
echo " $ docker-compose up -d"
|