#!/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