You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hestiacp/install/hst-install.sh

129 lines
3.5 KiB

#!/bin/bash
# ======================================================== #
#
# Hestia Control Panel Installation Routine
# Automatic OS detection wrapper
# https://hestiadocs.brepo.ru/
#
# Supported Operating Systems:
#
# AlmaLinux, EuroLinux, Red Hat EnterPrise Linux, Rocky Linux, MSVSphere 9
#
# ======================================================== #
# Am I root?
if [ "x$(id -u)" != 'x0' ]; then
echo 'Error: this script can only be executed by root'
exit 1
fi
# Check admin user account
if [ ! -z "$(grep ^admin: /etc/passwd)" ] && [ -z "$1" ]; then
echo "Error: user admin exists"
echo
echo 'Please remove admin user before proceeding.'
echo 'If you want to do it automatically run installer with -f option:'
echo "Example: bash $0 --force"
exit 1
fi
# Check admin group
if [ ! -z "$(grep ^admin: /etc/group)" ] && [ -z "$1" ]; then
echo "Error: group admin exists"
echo
echo 'Please remove admin group before proceeding.'
echo 'If you want to do it automatically run installer with -f option:'
echo "Example: bash $0 --force"
exit 1
fi
# Detect OS
if [ -e "/etc/os-release" ] && [ ! -e "/etc/redhat-release" ]; then
type="NoSupport"
elif [ -e "/etc/os-release" ] && [ -e "/etc/redhat-release" ]; then
type=$(grep "^ID=" /etc/os-release | cut -f 2 -d '"')
VERSION=$type
# TODO: Not sure if this required
if [[ "$type" =~ ^(rhel|almalinux|eurolinux|ol|rocky|centos|msvsphere)$ ]]; then
release=$(rpm --eval='%rhel')
fi
else
type="NoSupport"
fi
no_support_message() {
echo "****************************************************"
echo "Your operating system (OS) is not supported by"
echo "Hestia Control Panel (RPM edition). Officially supported releases:"
echo "****************************************************"
echo " Red Hat Enterprise Linux 9 and related versions of"
echo " AlmaLinux, Rocky Linux, Oracle Linux Server and EuroLinux, MSVSphere"
echo ""
exit 1
}
if [ "$type" = "NoSupport" ]; then
no_support_message
fi
check_wget_curl() {
# Check wget
if [ -e '/usr/bin/wget' ]; then
if [ -e '/etc/redhat-release' ]; then
wget -q https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install-rhel.sh -O hst-install-rhel.sh
if [ "$?" -eq '0' ]; then
bash hst-install-rhel.sh $*
exit
else
echo "Error: hst-install-rhel.sh download failed."
exit 1
fi
else
wget -q https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install-$type.sh -O hst-install-$type.sh
if [ "$?" -eq '0' ]; then
bash hst-install-$type.sh $*
exit
else
echo "Error: hst-install-$type.sh download failed."
exit 1
fi
fi
fi
# Check curl
if [ -e '/usr/bin/curl' ]; then
if [ -e '/etc/redhat-release' ]; then
curl -s -O https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install-rhel.sh
if [ "$?" -eq '0' ]; then
bash hst-install-rhel.sh $*
exit
else
echo "Error: hst-install-rhel.sh download failed."
exit 1
fi
else
curl -s -O https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install-$type.sh
if [ "$?" -eq '0' ]; then
bash hst-install-$type.sh $*
exit
else
echo "Error: hst-install-$type.sh download failed."
exit 1
fi
fi
fi
}
# Check for supported operating system before proceeding with download
# of OS-specific installer, and throw error message if unsupported OS detected.
if [[ "$release" =~ ^(10|11|12|20.04|22.04)$ ]]; then
check_wget_curl $*
elif [[ -e "/etc/redhat-release" ]] && [[ "$release" =~ ^(8|9)$ ]]; then
check_wget_curl $*
else
no_support_message
fi
exit