2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								#!/bin/sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ------------ Find the root folder where social is installed --------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								INSTALL_DIR="${PWD}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ ! -f "${INSTALL_DIR}/social.yaml" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        INSTALL_DIR="$(dirname "${INSTALL_DIR}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    elif [ "${INSTALL_DIR}" = '/' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        echo "The current folder and it's parents don't seem to contain a valid GNU social installation, exiting"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        break
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cd "${INSTALL_DIR}" || exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 23:23:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ------------ Check whether the system has whiptail or dialog -------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if command -v whiptail > /dev/null 2>&1; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WHIPTAIL=whiptail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								elif command -v dialog > /dev/null 2>&1; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    WHIPTAIL=dialog
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								else
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    echo "whiptail/dialog are not available, can't proceed"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    exit 1
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# whiptail/dialog exits with 1 when cancelling through the UI, or 255 on ^C
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								validate_exit () {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    case $1 in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        1|255) printf "Canceling...\n" && exit 2 ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    esac
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# TODO Add suport for other webservers
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ------------ Pick which services to configure through docker-compose and which to configure externally --------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SERVICES=$(${WHIPTAIL} --title 'GNU social' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                       --menu "\nWelcome to the GNU social configurator. This program will help configure your GNU social node.\n\n\
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Choose whether you prefer social to handle all the services it needs though docker,\nor if you'd rather use and configure your own:" 0 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                       docker 'Docker service configuration' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                       mixed 'Mixed docker/external service configuration' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                       external 'External service configuration' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                       3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								case ${SERVICES} in
							 
						 
					
						
							
								
									
										
										
										
											2021-12-20 20:39:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    'docker') DOCKER='"nginx" "certbot" "php" "db" "redis" "worker"' ;; # TODO enable and configure "mail"
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    'mixed')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        DOCKER=$(${WHIPTAIL} --title 'GNU social Docker services' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             --checklist "\nPick which of the following services you'd like to add to docker-compose.\n* indicates a service that has extra configuration" 0 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             nginx 'Configure NGINX' on \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             certbot "Configure CertBot (automatic certificate renewing)" on \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             php 'Configure PHP' on \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             db 'Configure a DBMS*' on \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             redis 'Configure Redis (optional, recommended)' on \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             mail 'Confugure a mail server*' on \
							 
						 
					
						
							
								
									
										
										
										
											2021-12-20 20:39:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                             worker 'Confugure container with worker queues' on \
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                             3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    'external') DOCKER='' ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								esac
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-11-23 20:17:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ------------ If the user requested the use of docker services, ensure we have `docker` and `docker-compose` --------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								case ${SERVICES} in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    'mixed'|'docker')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if ! (command -v docker > /dev/null 2>&1 && command -v docker-compose > /dev/null 2>&1); then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            echo "docker/docker-compose are not available, can't proceed"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								esac
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ------------ Regarless of whether using a docker container for the DBMS or not, we need to know which we're using, and it's settings --------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								DBMS=$(${WHIPTAIL} --title 'GNU social DBMS' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                   --radiolist "\nPick which DBMS you'd like to use" 0 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                   postgres 'Use PostgreSQL' on \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                   mariadb 'Use MariaDB' off \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                   3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    DB_NAME=$(${WHIPTAIL} --title 'GNU social DB name' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          --inputbox "\nEnter a name for the database to be used by social" 0 0 "social" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ -n "${DB_NAME}" ]; then break; fi
							 
						 
					
						
							
								
									
										
										
										
											2020-05-16 12:37:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if [ "${DBMS}" = 'postgres' ]; then DB_USER="postgres"; else DB_USER="social"; fi
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 22:31:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if echo "${DOCKER}" | grep -Fvq '"db"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        DB_USER=$(${WHIPTAIL} --title 'GNU social DB user' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              --inputbox "\nEnter a user name for social to connect to the database under" 0 0 "${DB_USER}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if [ -n "${DB_USER}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    DB_PASSWORD=$(${WHIPTAIL} --title 'GNU social DB password' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              --passwordbox "\nEnter a password for social to connect to the database with" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ -n "${DB_PASSWORD}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if [ "${DBMS}" = 'postgres' ]; then DB_DSN="postgresql://${DB_USER}:${DB_PASSWORD}@db:5432/${DB_NAME}";
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								else                                DB_DSN="mysql://${DB_USER}:${DB_PASSWORD}@db:3306/${DB_NAME}"; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if echo "${DOCKER}" | grep -Fvq '"db"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        DB_DSN=$(${WHIPTAIL} --title 'GNU social DB DSN' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             --inputbox "\nEnter the DSN/URL for social to connect to the database with" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if [ -n "${DB_DSN}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    done
							 
						 
					
						
							
								
									
										
										
										
											2020-10-07 13:29:17 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if [ "${DBMS}" != 'postgres' ] && echo "${DOCKER}" | grep -Fq '"db"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        DB_ROOT_PASSWORD=$(${WHIPTAIL} --title 'GNU social DB root user password' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       --passwordbox "\nEnter a password for the database root user" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if [ -n "${DB_ROOT_PASSWORD}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    done
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-05-16 12:37:06 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-23 18:51:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 13:17:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# -------------------------------- PHP -------------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if echo "${DOCKER}" | grep -Fq '"php"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ${WHIPTAIL} --title "Build PHP container locally?" --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
									
										
										
										
											2021-04-14 15:45:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                --yesno "\nDo you want to compile the needed PHP extensions and build the container locally? (May provide better performance but requires more than 1GiB of RAM)" 0 0 \
							 
						 
					
						
							
								
									
										
										
										
											2021-12-20 20:39:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                --defaultno \
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 13:17:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                3>&1 1>&2 2>&3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    BUILD_PHP=$((1-$?)) # Invert output
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ------------------------ Network configuration ----------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    DOMAIN_ROOT=$(${WHIPTAIL} --title 'GNU social domain root' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              --inputbox "\nEnter the root domain from where social will be served" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ -n "${DOMAIN_ROOT}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Subdomain is optional
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SUBDOMAIN=$(${WHIPTAIL} --title 'GNU social subdomain' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        --inputbox "\nEnter the subdomain from where social will be served, if any" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if [ -z "${SUBDOMAIN}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    DOMAIN="${DOMAIN_ROOT}"
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								else
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    DOMAIN="${SUBDOMAIN}.${DOMAIN_ROOT}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								${WHIPTAIL} --title "Use Let's Encrypt certificate?" --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            --yesno "\nDo you want to use a certificate signed by Let's Encrypt? A self signed certificate will be created, \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								as one is required, but you may provide your own" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            3>&1 1>&2 2>&3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								LE_CERT=$((1-$?)) # Invert output
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if [ $LE_CERT -ne 0 ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        EMAIL=$(${WHIPTAIL} --title 'GNU social admin email' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            --inputbox "\nEnter the email to register the admin user under" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if [ -n "${EMAIL}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    NODE_NAME=$(${WHIPTAIL} --title 'GNU social node name' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            --inputbox "\nEnter the name for this GNU social node" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ -n "${NODE_NAME}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    NGINX_HTTP_PORT=$(${WHIPTAIL} --title 'GNU social HTTP port' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                  --inputbox "\nWhich port should NGINX use for HTTP traffic ('host:port' is also valid)" 0 0 "80" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                  3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ -n "${NGINX_HTTP_PORT}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    NGINX_HTTPS_PORT=$(${WHIPTAIL} --title 'GNU social HTTPS port' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                   --inputbox "\nWhich port should NGINX use for HTTPS traffic ('host:port' is also valid)" 0 0 "443" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                   3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if [ -n "${NGINX_HTTPS_PORT}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PHP_PORT=9000
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if echo "${DOCKER}" | grep -Fvq '"php"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        PHP_PORT=$(${WHIPTAIL} --title 'GNU social PHP service port' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               --inputbox "\nWhich port should be used for PHP" 0 0 "9000" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                               3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if [ -n "${PHP_PORT}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								PROFILE=$(${WHIPTAIL} --title 'GNU social site profile' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      --menu "\nPick one of the following node visibility presets:" 0 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      public 'Make this node publicly accessible, with open registration' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      community 'Make this node publicly accessible, but with invite-only registration' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      isolated 'Make this node publicly accessible, with open registration but do not federate' \
							 
						 
					
						
							
								
									
										
										
										
											2021-11-26 13:05:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                      private 'Make this node publicly accessible, but with invite-only registration, only registered users can see feeds' \
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                      single_user 'Like public, but only allows registering one user' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ------------ Mail server --------------
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 22:31:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								MAILER_DSN='sendmail://localhost'
							 
						 
					
						
							
								
									
										
										
										
											2021-03-25 22:02:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								if false; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if echo "${DOCKER}" | grep -Fvq '"mail"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAILER_DSN=$(${WHIPTAIL} --title 'GNU social mail server DSN' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     --inputbox "\nEnter a DSN/URL social will use to connect to the mail server" 0 0 "${MAILER_DSN}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if [ -n "${MAILER_DSN}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_DOMAIN=$(${WHIPTAIL} --title 'GNU social mail server domain' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      --inputbox "\nEnter the domain social will use to serve mail" 0 0 "${DOMAIN_ROOT}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if [ -n "${MAIL_DOMAIN}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        done
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 11:48:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-25 22:02:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if echo "${DOCKER}" | grep -Fq '"mail"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_DOMAIN_ROOT=$(${WHIPTAIL} --title 'GNU social mail server domain' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           --inputbox "\nEnter the root domain social will use to serve mail" 0 0 "${DOMAIN_ROOT}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if [ -n "${MAIL_DOMAIN_ROOT}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        MAIL_SUBDOMAIN=$(${WHIPTAIL} --title 'GNU social mail server subdomain' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     --inputbox "\nEnter a subdomain social will send email from (optional, can be empty)" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-25 22:02:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if [ -z "${MAIL_SUBDOMAIN}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_DOMAIN="${MAIL_DOMAIN_ROOT}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_DOMAIN="${MAIL_SUBDOMAIN}.${MAIL_DOMAIN_ROOT}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        fi
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-25 22:02:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_SENDER_USER=$(${WHIPTAIL} --title 'GNU social mail sender user' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           --inputbox "\nEnter the user emails should be sent from (email without @domain)" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if [ -n "${MAIL_SENDER_USER}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_SENDER_NAME=$(${WHIPTAIL} --title 'GNU social mail sender name' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           --inputbox "\nEnter the name emails should be sent from" 0 0 "${NODE_NAME}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if [ -n "${MAIL_SENDER_NAME}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        while true; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MAIL_PASSWORD=$(${WHIPTAIL} --title 'GNU social mail password' --clear --backtitle 'GNU social' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        --passwordbox "\nEnter a password for the user in the mail server" 0 0 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        3>&1 1>&2 2>&3)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if [ -n "${MAIL_PASSWORD}" ]; then break; fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    fi
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------- Ensure we have the needed certificates -------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mkdir -p "${INSTALL_DIR}/docker/bootstrap"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cat > "${INSTALL_DIR}/docker/bootstrap/bootstrap.env" <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#!/bin/sh
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								DOMAIN_ROOT=${DOMAIN_ROOT}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 11:48:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								WEB_DOMAIN=${DOMAIN}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MAIL_DOMAIN=${MAIL_DOMAIN}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								SIGNED=${LE_CERT}
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								[ -n "${EMAIL}" ] && echo EMAIL="${EMAIL}" >> "${INSTALL_DIR}/docker/bootstrap/bootstrap.env"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								chmod +x ./docker/bootstrap/bootstrap.env
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								docker-compose -f docker/bootstrap/bootstrap.yaml up
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								validate_exit $?
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ------------ Configure parameters for the creation of docker containers --------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mkdir -p "${INSTALL_DIR}/docker/db"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if [ "${DBMS}" = 'postgres' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    cat > "${INSTALL_DIR}/docker/db/db.env" <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								DBMS=${DBMS}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								POSTGRES_USER=postgres
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								POSTGRES_PASSWORD=${DB_PASSWORD}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    cat > "${INSTALL_DIR}/docker/db/db.env" <<EOF
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								DBMS=${DBMS}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MYSQL_DATABASE=${DB_NAME}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MYSQL_USER=${DB_USER}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MYSQL_PASSWORD=${DB_PASSWORD}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								touch .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sed -ri 's/DATABASE_URL=.*//' .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo "DATABASE_URL=${DB_DSN}" >> .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								sed -ri 's/MAILER_DSN=.*//' .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								echo "MAILER_DSN=${MAILER_DSN}" >> .env.local
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mkdir -p "${INSTALL_DIR}/docker/social"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cat > "${INSTALL_DIR}/docker/social/social.env" <<EOF
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								SOCIAL_DBMS=${DBMS}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SOCIAL_DB=${DB_NAME}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SOCIAL_USER=${DB_USER}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SOCIAL_PASSWORD=${DB_PASSWORD}
							 
						 
					
						
							
								
									
										
										
										
											2022-02-11 00:17:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								CONFIG_DOMAIN=${DOMAIN}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								CONFIG_NODE_NAME=${NODE_NAME}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								SOCIAL_ADMIN_EMAIL=${EMAIL}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SOCIAL_SITE_PROFILE=${PROFILE}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MAILER_DSN=${MAILER_DSN}
							 
						 
					
						
							
								
									
										
										
										
											2020-05-06 11:57:32 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# TODO create admin user
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#SOCIAL_ADMIN_NICK="${ADMIN_NICK}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#SOCIAL_ADMIN_PASSWORD="${ADMIN_PASSWORD}"
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --------------- Write mail configuration, and setup ----------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								mkdir -p "${INSTALL_DIR}/docker/mail"
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 22:31:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								HASHED_PASSWORD="{SHA512-CRYPT}"$(echo "${MAIL_PASSWORD}" | openssl passwd -6 -in -)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								cat > "${INSTALL_DIR}/docker/mail/mail.env" <<EOF
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								MAIL_DOMAIN=${MAIL_DOMAIN}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 22:31:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								MAIL_DOMAIN_ROOT=${MAIL_DOMAIN_ROOT}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								MAIL_USER=${MAIL_SENDER_USER}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MAIL_NAME=${MAIL_SENDER_NAME}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 22:31:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								MAIL_ADDRESS=${MAIL_SENDER_USER}@${MAIL_DOMAIN}
							 
						 
					
						
							
								
									
										
										
										
											2021-03-23 17:28:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								SSL_CERT=/etc/letsencrypt/live/${MAIL_DOMAIN}/fullchain.pem
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								SSL_KEY=/etc/letsencrypt/live/${MAIL_DOMAIN}/privkey.pem
							 
						 
					
						
							
								
									
										
										
										
											2021-03-24 22:31:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								HASHED_PASSWORD=${HASHED_PASSWORD}
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 00:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-10-20 02:49:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-23 20:17:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ------------------- Write docker-compose config file ---------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								cat > "${INSTALL_DIR}/docker-compose.yaml" <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								version: '3'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								services:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export DOCKER="${DOCKER}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export NGINX_HTTP_PORT="${NGINX_HTTP_PORT}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export NGINX_HTTPS_PORT="${NGINX_HTTPS_PORT}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export PHP_PORT="${PHP_PORT}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export DBMS="${DBMS}"
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 13:17:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								export BUILD_PHP="${BUILD_PHP}"
							 
						 
					
						
							
								
									
										
										
										
											2021-04-14 15:40:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								export LE_CERT="${LE_CERT}"
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								for SERV in ${DOCKER}; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SERV=$(echo "${SERV}" | sed -r 's/"([^"]*)"/\1/')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    sh "${INSTALL_DIR}/docker/${SERV}/docker-compose.fragment.sh" >> "${INSTALL_DIR}/docker-compose.yaml"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								if echo "${DOCKER}" | grep -Fq '"db"'; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    cat >> "${INSTALL_DIR}/docker-compose.yaml" <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								volumes:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    database:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --------------------------------------------------------------------------
							 
						 
					
						
							
								
									
										
										
										
											2020-11-23 20:17:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-20 23:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								cd "${OLDPWD}" || exit 1