mirror of https://github.com/tteck/Proxmox.git
				
				
				
			Create grocy-install.sh
This commit is contained in:
		
							parent
							
								
									ed377bd06d
								
							
						
					
					
						commit
						2cd95851e5
					
				| 
						 | 
					@ -0,0 +1,117 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					YW=`echo "\033[33m"`
 | 
				
			||||||
 | 
					RD=`echo "\033[01;31m"`
 | 
				
			||||||
 | 
					BL=`echo "\033[36m"`
 | 
				
			||||||
 | 
					GN=`echo "\033[1;92m"`
 | 
				
			||||||
 | 
					CL=`echo "\033[m"`
 | 
				
			||||||
 | 
					RETRY_NUM=10
 | 
				
			||||||
 | 
					RETRY_EVERY=3
 | 
				
			||||||
 | 
					NUM=$RETRY_NUM
 | 
				
			||||||
 | 
					CM="${GN}✓${CL}"
 | 
				
			||||||
 | 
					CROSS="${RD}✗${CL}"
 | 
				
			||||||
 | 
					BFR="\\r\\033[K"
 | 
				
			||||||
 | 
					HOLD="-"
 | 
				
			||||||
 | 
					set -o errexit
 | 
				
			||||||
 | 
					set -o errtrace
 | 
				
			||||||
 | 
					set -o nounset
 | 
				
			||||||
 | 
					set -o pipefail
 | 
				
			||||||
 | 
					shopt -s expand_aliases
 | 
				
			||||||
 | 
					alias die='EXIT=$? LINE=$LINENO error_exit'
 | 
				
			||||||
 | 
					trap die ERR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function error_exit() {
 | 
				
			||||||
 | 
					  trap - ERR
 | 
				
			||||||
 | 
					  local reason="Unknown failure occurred."
 | 
				
			||||||
 | 
					  local msg="${1:-$reason}"
 | 
				
			||||||
 | 
					  local flag="${RD}‼ ERROR ${CL}$EXIT@$LINE"
 | 
				
			||||||
 | 
					  echo -e "$flag $msg" 1>&2
 | 
				
			||||||
 | 
					  exit $EXIT
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function msg_info() {
 | 
				
			||||||
 | 
					    local msg="$1"
 | 
				
			||||||
 | 
					    echo -ne " ${HOLD} ${YW}${msg}..."
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function msg_ok() {
 | 
				
			||||||
 | 
					    local msg="$1"
 | 
				
			||||||
 | 
					    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Setting up Container OS "
 | 
				
			||||||
 | 
					sed -i "/$LANG/ s/\(^# \)//" /etc/locale.gen
 | 
				
			||||||
 | 
					locale-gen >/dev/null
 | 
				
			||||||
 | 
					while [ "$(hostname -I)" = "" ]; do
 | 
				
			||||||
 | 
					  1>&2 echo -en "${CROSS}${RD} No Network! "
 | 
				
			||||||
 | 
					  sleep $RETRY_EVERY
 | 
				
			||||||
 | 
					  ((NUM--))
 | 
				
			||||||
 | 
					  if [ $NUM -eq 0 ]
 | 
				
			||||||
 | 
					  then
 | 
				
			||||||
 | 
					    1>&2 echo -e "${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}"    
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					msg_ok "Set up Container OS"
 | 
				
			||||||
 | 
					msg_ok "Network Connected: ${BL}$(hostname -I)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Updating Container OS"
 | 
				
			||||||
 | 
					apt update &>/dev/null
 | 
				
			||||||
 | 
					apt-get -qqy upgrade &>/dev/null
 | 
				
			||||||
 | 
					msg_ok "Updated Container OS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Dependencies"
 | 
				
			||||||
 | 
					apt-get install -y curl &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y sudo &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y apache2 &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y unzip &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y php &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y libapache2-mod-php &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y php-sqlite3 &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y php-gd &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y php-intl &>/dev/null
 | 
				
			||||||
 | 
					apt-get install -y php-mbstring &>/dev/null
 | 
				
			||||||
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing grocy"
 | 
				
			||||||
 | 
					wget https://releases.grocy.info/latest &>/dev/null
 | 
				
			||||||
 | 
					unzip latest -d /var/www/html &>/dev/null
 | 
				
			||||||
 | 
					chown -R www-data:www-data /var/www/html
 | 
				
			||||||
 | 
					cp /var/www/html/config-dist.php /var/www/html/data/config.php
 | 
				
			||||||
 | 
					chmod +x /var/www/html/update.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF > /etc/apache2/sites-available/grocy.conf                                 
 | 
				
			||||||
 | 
					<VirtualHost *:80>
 | 
				
			||||||
 | 
					  ServerAdmin webmaster@localhost
 | 
				
			||||||
 | 
					  DocumentRoot /var/www/html/public
 | 
				
			||||||
 | 
					</VirtualHost>
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
 | 
				
			||||||
 | 
					a2dissite 000-default.conf &>/dev/null
 | 
				
			||||||
 | 
					a2ensite grocy.conf &>/dev/null
 | 
				
			||||||
 | 
					a2enmod rewrite &>/dev/null
 | 
				
			||||||
 | 
					systemctl reload apache2
 | 
				
			||||||
 | 
					msg_ok "Installed grocy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PASS=$(grep -w "root" /etc/shadow | cut -b6);
 | 
				
			||||||
 | 
					  if [[ $PASS != $ ]]; then
 | 
				
			||||||
 | 
					msg_info "Customizing Container"
 | 
				
			||||||
 | 
					chmod -x /etc/update-motd.d/*
 | 
				
			||||||
 | 
					touch ~/.hushlogin
 | 
				
			||||||
 | 
					GETTY_OVERRIDE="/etc/systemd/system/container-getty@1.service.d/override.conf"
 | 
				
			||||||
 | 
					mkdir -p $(dirname $GETTY_OVERRIDE)
 | 
				
			||||||
 | 
					cat << EOF > $GETTY_OVERRIDE
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					ExecStart=
 | 
				
			||||||
 | 
					ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					systemctl daemon-reload
 | 
				
			||||||
 | 
					systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed 's/\.d//')
 | 
				
			||||||
 | 
					msg_ok "Customized Container"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					msg_info "Cleaning up"
 | 
				
			||||||
 | 
					apt-get autoremove >/dev/null
 | 
				
			||||||
 | 
					apt-get autoclean >/dev/null
 | 
				
			||||||
 | 
					rm -rf /var/{cache,log}/* /var/lib/apt/lists/* /root/latest
 | 
				
			||||||
 | 
					msg_ok "Cleaned"
 | 
				
			||||||
		Loading…
	
		Reference in New Issue