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.
148 lines
4.1 KiB
148 lines
4.1 KiB
#!/bin/bash
|
|
|
|
# ======================================================== #
|
|
#
|
|
# Hestia Control Panel Installation Routine
|
|
# Automatic OS detection wrapper
|
|
# https://www.hestiacp.com/
|
|
#
|
|
# Currently Supported Operating Systems:
|
|
#
|
|
# Debian 10, 11
|
|
# Ubuntu 20.04, 22.04
|
|
# AlmaLinux, EuroLinux, Red Hat EnterPrise Linux, Rocky Linux 8, 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=$(grep "^ID=" /etc/os-release | cut -f 2 -d '=')
|
|
if [ "$type" = "ubuntu" ]; then
|
|
# Check if lsb_release is installed
|
|
if [ -e '/usr/bin/lsb_release' ]; then
|
|
release="$(lsb_release -s -r)"
|
|
VERSION='ubuntu'
|
|
else
|
|
echo "lsb_release is currently not installed, please install it:"
|
|
echo "apt-get update && apt-get install lsb-release"
|
|
exit 1
|
|
fi
|
|
elif [ "$type" = "debian" ]; then
|
|
release=$(cat /etc/debian_version | grep -o "[0-9]\{1,2\}" | head -n1)
|
|
VERSION='debian'
|
|
fi
|
|
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. Officially supported releases:"
|
|
echo "****************************************************"
|
|
echo " Debian 10, 11"
|
|
echo " Ubuntu 20.04, 22.04 LTS"
|
|
# Commenting this out for now
|
|
echo " Red Hat Enterprise Linux 8, 9 and related versions of"
|
|
echo " AlmaLinux, Rocky Linux, Oracle Linux Server and EuroLinux"
|
|
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
|