#!/bin/bash # Colors if [ -z ${BASH_SOURCE} ]; then blue=`echo "\e[1m\e[34m"` green=`echo "\e[1m\e[32m"` greenBold=`echo "\e[1m\e[1;32m"` redBold=`echo "\e[1m\e[1;31m"` red=`echo "\e[1m\e[31m"` purple=`echo "\e[1m\e[35m"` bold=`echo "\e[1m"` normal=`echo "\e[0m"` else blue=`echo -e "\e[1m\e[34m"` green=`echo -e "\e[1m\e[32m"` greenBold=`echo -e "\e[1m\e[1;32m"` redBold=`echo -e "\e[1m\e[1;31m"` purple=`echo -e "\e[1m\e[35m"` bold=`echo -e "\e[1m"` normal=`echo -en "\e[0m"` fi HLINE="================================================================" HLINE_SMALL="=================================" BLA_metro=( 0.2 ' ' '= ' '== ' '=== ' ' ===' ' ==' ' =' ) BLA::play_loading_animation_loop() { while true ; do for frame in "${BLA_active_loading_animation[@]}" ; do printf "\r%s" "${frame}" sleep "${BLA_loading_animation_frame_interval}" done done } BLA::start_loading_animation() { BLA_active_loading_animation=( "${@}" ) BLA_loading_animation_frame_interval="${BLA_active_loading_animation[0]}" unset "BLA_active_loading_animation[0]" tput civis # Hide the terminal cursor BLA::play_loading_animation_loop & BLA_loading_animation_pid="${!}" } BLA::stop_loading_animation() { kill "${BLA_loading_animation_pid}" &> /dev/null printf "\n" tput cnorm # Restore the terminal cursor } ####################################################################################### echo echo "${greenBold}${HLINE_SMALL}" echo "Welcome to Piler-Docker Updater" echo "${greenBold}${HLINE_SMALL}${normal}" echo ####################################################################################### # App Check for bin in curl docker git; do if [[ -z $(which ${bin}) ]]; then echo "${redBold}Cannot find ${bin}, exiting...${normal}"; exit 1; fi done # Docker-Compose Check if docker compose > /dev/null 2>&1; then if docker compose version --short | grep "^2." > /dev/null 2>&1; then COMPOSE_VERSION=native echo -e "${purple}Found Docker Compose Plugin (native).${normal}" echo -e "${purple}Setting the DOCKER_COMPOSE_VERSION Variable to native${normal}" sleep 2 echo -e "${purple}Notice: You´ll have to update this Compose Version via your Package Manager manually!${normal}" else echo -e "${redBold}Cannot find Docker Compose with a Version Higher than 2.X.X.${normal}" exit 1 fi elif docker-compose > /dev/null 2>&1; then if ! [[ $(alias docker-compose 2> /dev/null) ]] ; then if docker-compose version --short | grep "^2." > /dev/null 2>&1; then COMPOSE_VERSION=standalone echo -e "${purple}Found Docker Compose Standalone.${normal}" echo -e "${purple}Setting the DOCKER_COMPOSE_VERSION Variable to standalone${normal}" sleep 2 else echo -e "${redBold}Cannot find Docker Compose with a Version Higher than 2.X.X.${normal}" exit 1 fi fi else echo -e "${redBold}Cannot find Docker Compose.${normal}" exit 1 fi ####################################################################################### while true; do read -ep "Do you want to perform the update?? (y/n): " yn case $yn in [Yy]* ) echo "${greenBold}********* Update started... Please wait... *********${normal}"; break;; [Nn]* ) echo -e "${redBold} The update is canceled!${normal}"; exit;; * ) echo -e "${redBold} Please confirm with y or n.${normal}";; esac done installPth=`pwd` configPth="$installPth/config" etcPth="/var/lib/docker/volumes/piler-docker_piler_etc/_data" buildPth="$installPth/build" # config load . ./piler.conf if [ ! -f $installPth/.env ]; then ln -s ./piler.conf .env fi if [ -f $installPth/docker-compose.yml ]; then rm $installPth/docker-compose.yml fi # Download yml update echo echo "${greenBold}${HLINE}" echo "${greenBold} Download Update files for Piler" echo "${greenBold}${HLINE}${normal}" echo # Update Files for ymlUpdate in piler-default.yml piler-ssl.yml; do echo echo "${purple}${HLINE}${HLINE_SMALL}" echo "${purple}****** Download Update $ymlUpdate ******" curl -o $configPth/$ymlUpdate https://raw.githubusercontent.com/simatec/piler-docker/main/config/$ymlUpdate echo "${purple}${HLINE}${HLINE_SMALL}${normal}" echo done for fileUpdate in install-piler.sh LICENSE piler.conf.example; do echo echo "${purple}${HLINE}${HLINE_SMALL}" echo "${purple}****** Download Update $fileUpdate ******" curl -o $installPth/$fileUpdate https://raw.githubusercontent.com/simatec/piler-docker/main/$fileUpdate echo "${purple}${HLINE}${HLINE_SMALL}${normal}" echo done for buildUpdate in start.sh build.sh DOCKERFILE build.conf; do echo echo "${purple}${HLINE}${HLINE_SMALL}" echo "${purple}****** Download Update $buildUpdate ******" curl -o $buildPth/$buildUpdate https://raw.githubusercontent.com/simatec/piler-docker/main/build/$buildUpdate echo "${purple}${HLINE}${HLINE_SMALL}${normal}" echo done # old docker stop cd $installPth if [ $COMPOSE_VERSION = native ]; then docker compose down else docker-compose down fi # Backup Config if [ ! -d $installPth/backup ]; then mkdir -p $installPth/backup fi cp $etcPth/config-site.php.bak $installPth/backup/ && cp $etcPth/config-site.php $installPth/backup/ cp $etcPth/piler.conf.bak $installPth/backup/ && cp $etcPth/piler.conf $installPth/backup/ cp $etcPth/.my.cnf $installPth/backup/ # delete old files rm -f $etcPth/piler.key $etcPth/piler.pem $etcPth/config-site.php # Added Manticore if [ ! -f $etcPth/MANTICORE ]; then touch $etcPth/MANTICORE fi # Build Piler bash $buildPth/build.sh # Copy docker-compose.yml if [ "$USE_LETSENCRYPT" = "yes" ]; then cp $configPth/piler-ssl.yml $installPth/docker-compose.yml else cp $configPth/piler-default.yml $installPth/docker-compose.yml fi # start Update Container echo echo "${greenBold}${HLINE}" echo "${greenBold} Update Container for Piler" echo "${greenBold}${HLINE}${normal}" echo if [ "$USE_LETSENCRYPT" = "yes" ]; then if ! docker network ls | grep -o "nginx-proxy"; then docker network create nginx-proxy echo echo "${blue}${HLINE}" echo "${blue} docker network created" echo "${blue}${HLINE}${normal}" echo fi fi if [ $COMPOSE_VERSION = native ]; then docker compose up --force-recreate --build -d else docker-compose up --force-recreate --build -d fi echo "${blue}********* Piler started... Please wait... *********${normal}" BLA::start_loading_animation "${BLA_metro[@]}" sleep 20 BLA::stop_loading_animation # Restore Config cp $installPth/backup/config-site.php.bak $etcPth/ && cp $installPth/backup/config-site.php $etcPth/ cp $installPth/backup/piler.conf.bak $etcPth/ && cp $etcPth/piler.conf $etcPth/ cp $installPth/backup/.my.cnf $etcPth/ if [ "$USE_MAILCOW" = true ]; then echo echo "${blue}${HLINE}" echo "set Mailcow Api-Key config" echo "${blue}${HLINE}${normal}" echo cat >> $etcPth/config-site.php <