2019-11-13 18:51:57 +05:00
#!/bin/bash
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
#set -e -o pipefail
#set -x
#set -u
2020-10-11 17:12:16 -04:00
2021-01-20 00:37:46 +05:00
2021-04-20 19:49:51 -04:00
#CyberPanel installer script for CentOS 7.X, CentOS 8.X, CloudLinux 7.X, Ubuntu 18.04, Ubuntu 20.04 , Ubuntu 20.10 and AlmaLinux 8.X
2021-03-09 15:13:32 +01:00
#For whoever may edit this script, please follow :
#Please use Pre_Install_xxx() and Post_Install_xxx() if you want to something respectively before or after the panel installation
#and update below accordingly
#Please use variable/functions name as MySomething or My_Something, and please try not to use too-short abbreviation :)
#Please use On/Off, True/False, Yes/No.
#workflow:
#Set_Default_Variables() ---> set some default variable for later use
#Check_Root() ---> check for root
#Check_Server_IP() ---> check for server IP and geolocation at country level
#Check_OS() ---> check system , support on centos7/8 ubutnu18/20 and cloudlinux 7 , 8 is untested.
2021-04-20 19:49:51 -04:00
#Check_Virtualization() ---> check for virtualizaon , #LXC not supported# , some edit needed on OVZ
2021-03-09 15:13:32 +01:00
#Check_Panel() ---> check to make sure no other panel is installed
2021-04-20 19:49:51 -04:00
#Check_Process() ---> check no other process like Apache is running
#Check_Provider() ---> check the provider, certain provider like Alibaba or Tencent Yun may need some special change
2021-03-09 15:13:32 +01:00
#Check_Argument() ---> parse argument and go to Argument_Mode() or Interactive_Mode() respectively
#Pre_Install_Setup_Repository() ---> setup/install repositories for centos system.
#go to Pre_Install_Setup_CN_Repository() if server is within China.
#Pre_Install_Setup_Git_URL() ---> form up github URL , use Gitee for servers within China.
#Pre_Install_Required_Components() ---> install required softwares and git clone it
#Pre_Install_System_Tweak() ---> set up SWAP and apply some system tweak depends on providers
#Main_Installation() ---> change some code within python files for CN servers and start to install
#Post_Install_Addon_Memcached() ---> Install Memcached extension and process
#Post_Install_Addon_Redis() ---> Install Redis extension and process
#Post_Install_Required_Components() ---> install some required softwares.
#Post_Install_PHP_Session_Setup() ---> set up PHP session
#Post_Install_PHP_TimezoneDB() ---> set up PHP timezoneDB
#Post_Install_Regenerate_Cert() ---> regenerate cert for :7080 and :8090 to avoid Chrome on MacOS blocking.
#Post_Install_Regenerate_Webadmin_Console_Passwd() ---> regenerate the webadmin console password
#Post_Install_Setup_Watchdog() ---> set up watchdog script for webserver and MariaDB.
#Post_Install_Setup_Utility() ---> set up utility script for some handy features
#Post_Install_Tweak() ---> some patches/fixes on certain systems
#Post_Install_Display_Final_Info() ---> display installation successful information.
Sudo_Test = $( set )
#for SUDO check
Set_Default_Variables( ) {
echo -e "Fetching latest data from CyberPanel server...\n"
echo -e "This may take few seconds..."
Silent = "Off"
Server_Edition = "OLS"
Admin_Pass = "1234567"
2021-03-17 19:19:47 +01:00
Memcached = "Off"
Redis = "Off"
2021-03-09 15:13:32 +01:00
Postfix_Switch = "On"
PowerDNS_Switch = "On"
PureFTPd_Switch = "On"
Server_IP = ""
Server_Country = "Unknow"
Server_OS = ""
Server_OS_Version = ""
Server_Provider = 'Undefined'
Watchdog = "On"
Redis_Hosting = "No"
Temp_Value = $( curl --silent --max-time 30 -4 https://cyberpanel.net/version.txt)
Panel_Version = ${ Temp_Value : 12 : 3 }
Panel_Build = ${ Temp_Value : 25 : 1 }
Branch_Name = " v ${ Panel_Version } . ${ Panel_Build } "
Base_Number = "1.9.3"
Total_RAM = $( free -m | awk '/Mem:/ { print $2 }' )
Remote_MySQL = "Off"
Final_Flags = ( )
Git_User = ""
Git_Content_URL = ""
Git_Clone_URL = ""
LSWS_Latest_URL = "https://cyberpanel.sh/update.litespeedtech.com/ws/latest.php"
curl --silent --max-time 30 -4 -o /tmp/lsws_latest " $LSWS_Latest_URL " 2>/dev/null
LSWS_Stable_Line = $( grep "LSWS_STABLE" /tmp/lsws_latest)
LSWS_Stable_Version = $( expr " $LSWS_Stable_Line " : '.*LSWS_STABLE=\(.*\) BUILD .*' )
#grab the LSWS latest stable version.
Enterprise_Flag = ""
License_Key = ""
2021-04-01 11:51:39 +05:00
Debug_Log2 "Starting installation..,1"
2020-10-11 17:12:16 -04:00
2021-03-09 15:13:32 +01:00
}
2020-10-11 17:12:16 -04:00
2021-03-09 15:13:32 +01:00
Debug_Log( ) {
echo -e " \n ${ 1 } = ${ 2 } \n " >> /tmp/cyberpanel_debug.log
2020-10-11 17:12:16 -04:00
}
2020-03-07 21:22:53 +01:00
2021-03-09 15:13:32 +01:00
Debug_Log2( ) {
2021-03-29 20:47:08 +02:00
Check_Server_IP " $@ " >/dev/null 2>& 1
2021-03-09 15:13:32 +01:00
echo -e " \n ${ 1 } " >> /var/log/installLogs.txt
2021-04-30 03:54:08 +05:00
curl --max-time 20 -d '{"ipAddress": "' " $Server_IP " '", "InstallCyberPanelStatus": "' " $1 " '"}' -H "Content-Type: application/json" -X POST https://cloud.cyberpanel.net/servers/RecvData >/dev/null 2>& 1
2021-03-09 15:13:32 +01:00
}
2020-05-12 02:22:08 +05:00
2021-03-09 15:13:32 +01:00
Branch_Check( ) {
if [ [ " $1 " = *.*.* ] ] ; then
#check input if it's valid format as X.Y.Z
Output = $( awk -v num1 = " $Base_Number " -v num2 = " ${ 1 //[[ : space : ]]/ } " '
BEGIN {
print "num1" , ( num1 < num2 ? "<" : ">=" ) , "num2"
}
' )
if [ [ $Output = *">=" * ] ] ; then
echo -e "\nYou must use version number higher than 1.9.4"
exit
else
Branch_Name = " v ${ 1 //[[ : space : ]]/ } "
echo -e " \nSet branch name to $Branch_Name ... "
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
else
echo -e "\nPlease input a valid format version number."
exit
fi
}
2020-05-12 02:22:08 +05:00
2021-03-09 15:13:32 +01:00
License_Check( ) {
License_Key = " $1 "
echo -e "\nChecking LiteSpeed Enterprise license key..."
if echo " $License_Key " | grep -q " ^....-....-....-.... $" && [ [ ${# License_Key } = "19" ] ] ; then
echo -e "\nLicense key set...\n"
elif [ [ ${ License_Key ,, } = "trial" ] ] ; then
echo -e "\nTrial license set..."
License_Key = "Trial"
else
echo -e "\nLicense key seems incorrect, please verify"
echo -e "\nIf you are copying/pasting, please make sure you didn't paste blank space...\n"
exit
fi
2020-05-12 02:22:08 +05:00
}
2019-12-31 17:27:04 +01:00
2021-03-09 15:13:32 +01:00
Check_Return( ) {
2020-10-11 12:38:40 -04:00
#check previous command result , 0 = ok , non-0 = something wrong.
2021-03-09 15:13:32 +01:00
# shellcheck disable=SC2181
if [ [ $? != "0" ] ] ; then
if [ [ -n " $1 " ] ] ; then
echo -e " \n\n\n $1 "
fi
echo -e "above command failed..."
Debug_Log2 "command failed, exiting. For more information read /var/log/installLogs.txt [404]"
if [ [ " $2 " = "no_exit" ] ] ; then
echo -e"\nRetrying..."
2020-10-11 12:38:40 -04:00
else
exit
fi
2021-03-09 15:13:32 +01:00
fi
2020-01-17 15:25:27 +01:00
}
2021-03-09 15:13:32 +01:00
# check command success or not
Retry_Command( ) {
# shellcheck disable=SC2034
for i in { 1..50} ;
do
2021-05-21 16:15:57 +02:00
if [ [ " $i " = "50" ] ] ; then
echo " command $1 failed for 50 times, exit... "
exit 2
else
$1 && break || echo -e " \n $1 has failed for $i times\nWait for 3 seconds and try again...\n " ; sleep 3;
fi
2021-03-09 15:13:32 +01:00
done
2020-01-17 15:29:56 +01:00
}
2020-01-07 00:53:59 +01:00
2021-03-09 15:13:32 +01:00
Check_Root( ) {
echo -e "\nChecking root privileges..."
if echo " $Sudo_Test " | grep SUDO >/dev/null; then
echo -e "\nYou are using SUDO , please run as root user...\n"
echo -e "\nIf you don't have direct access to root user, please run \e[31msudo su -\e[39m command (do NOT miss the \e[31m-\e[39m at end or it will fail) and then run installation command again."
exit
fi
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
if [ [ $( id -u) != 0 ] ] >/dev/null; then
echo -e "\nYou must run on root user to install CyberPanel...\n"
echo -e "or run following command: (do NOT miss the quotes)"
echo -e "\e[31msudo su -c \"sh <(curl https://cyberpanel.sh || wget -O - https://cyberpanel.sh)\"\e[39m"
exit 1
else
echo -e "\nYou are runing as root...\n"
2020-10-11 12:38:40 -04:00
fi
2019-12-19 18:08:10 +05:00
}
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
Check_Server_IP( ) {
Server_IP = $( curl --silent --max-time 30 -4 https://cyberpanel.sh/?ip)
if [ [ $Server_IP = ~ ^[ 0-9] +\. [ 0-9] +\. [ 0-9] +\. [ 0-9] +$ ] ] ; then
echo -e "Valid IP detected..."
2020-10-11 12:38:40 -04:00
else
2021-03-09 15:13:32 +01:00
echo -e "Can not detect IP, exit..."
2021-04-03 22:04:31 +05:00
Debug_Log2 "Can not detect IP. [404]"
2021-03-09 15:13:32 +01:00
exit
2020-10-11 12:38:40 -04:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
echo -e "\nChecking server location...\n"
2020-01-17 15:25:27 +01:00
2021-04-03 21:46:31 +02:00
if [ [ " $Server_Country " != "CN" ] ] ; then
Server_Country = $( curl --silent --max-time 10 -4 https://cyberpanel.sh/?country)
if [ [ ${# Server_Country } != "2" ] ] ; then
Server_Country = "Unknow"
fi
fi
#to avoid repeated check_ip called by debug_log2 to break force mirror for CN servers.
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_IP" " $Server_IP "
Debug_Log "Server_Country" " $Server_Country "
fi
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
if [ [ " $* " = *"--mirror" * ] ] ; then
Server_Country = "CN"
echo -e "Force to use mirror server due to --mirror argument...\n"
fi
if [ [ " $Server_Country " = *"CN" * ] ] ; then
Server_Country = "CN"
echo -e "Setting up to use mirror server...\n"
fi
2020-02-13 04:22:00 +01:00
}
2021-03-09 15:13:32 +01:00
Check_OS( ) {
if [ [ ! -f /etc/os-release ] ] ; then
echo -e "Unable to detect the operating system...\n"
exit
fi
if ! uname -m | grep -q 64 ; then
echo -e "x64 system is required...\n"
exit
fi
if grep -q -E "CentOS Linux 7|CentOS Linux 8" /etc/os-release ; then
Server_OS = "CentOS"
2021-04-20 18:27:18 -04:00
elif grep -q "AlmaLinux-8" /etc/os-release ; then
Server_OS = "AlmaLinux"
2021-03-09 15:13:32 +01:00
elif grep -q -E "CloudLinux 7|CloudLinux 8" /etc/os-release ; then
Server_OS = "CloudLinux"
2021-04-20 18:27:18 -04:00
elif grep -q -E "Ubuntu 18.04|Ubuntu 20.04|Ubuntu 20.10" /etc/os-release ; then
2021-03-09 15:13:32 +01:00
Server_OS = "Ubuntu"
else
echo -e "Unable to detect your system..."
2021-04-20 18:27:18 -04:00
echo -e "\nCyberPanel is supported on Ubuntu 18.04 x86_64, Ubuntu 20.04 x86_64, Ubuntu 20.10 x86_64, CentOS 7.x, CentOS 8.x, AlmaLinux 8.x and CloudLinux 7.x...\n"
Debug_Log2 "CyberPanel is supported on Ubuntu 18.04 x86_64, Ubuntu 20.04 x86_64, Ubuntu 20.10 x86_64, CentOS 7.x, CentOS 8.x, AlmaLinux 8.x and CloudLinux 7.x... [404]"
2021-03-09 15:13:32 +01:00
exit
fi
2021-04-20 18:27:18 -04:00
Server_OS_Version = $( grep VERSION_ID /etc/os-release | awk -F[ = ,] '{print $2}' | tr -d \" | head -c2 | tr -d . )
2021-03-09 15:13:32 +01:00
#to make 20.04 display as 20
echo -e " System: $Server_OS $Server_OS_Version detected...\n "
2021-04-20 18:27:18 -04:00
if [ [ $Server_OS = "CloudLinux" ] ] || [ [ " $Server_OS " = "AlmaLinux" ] ] ; then
2021-03-09 15:13:32 +01:00
Server_OS = "CentOS"
#CloudLinux gives version id like 7.8 , 7.9 , so cut it to show first number only
2021-04-20 18:27:18 -04:00
#treat CL and Alma as CentOS
2021-03-09 15:13:32 +01:00
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_OS" " $Server_OS $Server_OS_Version "
fi
2020-02-13 04:22:00 +01:00
2019-12-12 14:26:54 +05:00
}
2021-04-20 19:49:51 -04:00
Check_Virtualization( ) {
2021-03-09 15:13:32 +01:00
echo -e "Checking virtualization type..."
2021-04-20 19:49:51 -04:00
#if hostnamectl | grep -q "Virtualization: lxc"; then
# echo -e "\nLXC detected..."
# echo -e "CyberPanel does not support LXC"
# echo -e "Exiting..."
# Debug_Log2 "CyberPanel does not support LXC.. [404]"
# exit
#fi
#remove per https://github.com/usmannasir/cyberpanel/issues/589
2021-03-09 15:13:32 +01:00
if hostnamectl | grep -q "Virtualization: openvz" ; then
echo -e "OpenVZ detected...\n"
if [ [ ! -d /etc/systemd/system/pure-ftpd.service.d ] ] ; then
mkdir /etc/systemd/system/pure-ftpd.service.d
echo " [Service]
PIDFile = /run/pure-ftpd.pid" >/etc/systemd/system/pure-ftpd.service.d/override.conf
echo -e "PureFTPd service file modified for OpenVZ..."
2020-10-11 12:38:40 -04:00
fi
2019-12-19 18:08:10 +05:00
2021-03-09 15:13:32 +01:00
if [ [ ! -d /etc/systemd/system/lshttpd.service.d ] ] ; then
mkdir /etc/systemd/system/lshttpd.service.d
echo " [Service]
PIDFile = /tmp/lshttpd/lshttpd.pid" >/etc/systemd/system/lshttpd.service.d/override.conf
echo -e "LiteSPeed service file modified for OpenVZ..."
2020-10-11 12:38:40 -04:00
fi
2019-12-19 18:08:10 +05:00
2021-03-09 15:13:32 +01:00
if [ [ ! -d /etc/systemd/system/spamassassin.service.d ] ] ; then
mkdir /etc/systemd/system/spamassassin.service.d
echo " [Service]
PIDFile = /run/spamassassin.pid" >/etc/systemd/system/spamassassin.service.d/override.conf
echo -e "SpamAssassin service file modified for OpenVZ..."
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_Virtualization" " $( hostnamectl | grep "Virtualization" ) "
fi
2020-01-17 15:25:27 +01:00
}
2021-03-09 15:13:32 +01:00
Check_Panel( ) {
if [ [ -d /usr/local/cpanel ] ] ; then
echo -e "\ncPanel detected...\n"
Debug_Log2 "cPanel detected...exit... [404]"
exit
elif [ [ -d /usr/local/directadmin ] ] ; then
echo -e "\nDirectAdmin detected...\n"
Debug_Log2 "DirectAdmin detected...exit... [404]"
exit
elif [ [ -d /etc/httpd/conf/plesk.conf.d/ ] ] || [ [ -d /etc/apache2/plesk.conf.d/ ] ] ; then
echo -e "\nPlesk detected...\n"
Debug_Log2 "Plesk detected...exit... [404]"
exit
fi
}
2020-10-11 12:38:40 -04:00
2021-04-18 01:44:12 -04:00
Check_Process( ) {
2021-03-09 15:13:32 +01:00
if systemctl is-active --quiet httpd; then
systemctl disable httpd
systemctl stop httpd
systemctl mask httpd
echo -e "\nhttpd process detected, disabling...\n"
fi
if systemctl is-active --quiet apache2; then
systemctl disable apache2
systemctl stop apache2
systemctl mask apache2
echo -e "\napache2 process detected, disabling...\n"
fi
if systemctl is-active --quiet named; then
systemctl stop named
systemctl disable named
systemctl mask named
echo -e "\nnamed process detected, disabling...\n"
fi
if systemctl is-active --quiet exim; then
systemctl stop exim
systemctl disable exim
systemctl mask exim
echo -e "\nexim process detected, disabling...\n"
fi
}
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Check_Provider( ) {
if hash dmidecode >/dev/null 2>& 1; then
if [ [ " $( dmidecode -s bios-vendor) " = "Google" ] ] ; then
Server_Provider = "Google Cloud Platform"
elif [ [ " $( dmidecode -s bios-vendor) " = "DigitalOcean" ] ] ; then
Server_Provider = "Digital Ocean"
elif [ [ " $( dmidecode -s system-product-name | cut -c 1-7) " = "Alibaba" ] ] ; then
Server_Provider = "Alibaba Cloud"
elif [ [ " $( dmidecode -s system-manufacturer) " = "Microsoft Corporation" ] ] ; then
Server_Provider = "Microsoft Azure"
elif [ [ -d /usr/local/qcloud ] ] ; then
Server_Provider = "Tencent Cloud"
2020-10-11 12:38:40 -04:00
else
2021-03-09 15:13:32 +01:00
Server_Provider = "Undefined"
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
else
Server_Provider = 'Undefined'
fi
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
if [ [ -f /sys/devices/virtual/dmi/id/product_uuid ] ] ; then
if [ [ " $( cut -c 1-3 /sys/devices/virtual/dmi/id/product_uuid) " = 'EC2' ] ] && [ [ -d /home/ubuntu ] ] ; then
Server_Provider = 'Amazon Web Service'
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Server_Provider" " $Server_Provider "
fi
2020-01-17 15:25:27 +01:00
}
2021-03-09 15:13:32 +01:00
Show_Help( ) {
echo -e "\nCyberPanel Installer Script Help\n"
echo -e "\nUsage: sh <(curl cyberpanel.sh) --argument"
2021-03-14 04:15:58 +01:00
echo -e "\n\e[31m-v\e[39m or \e[31m--version\e[39m : choose to install CyberPanel OpenLiteSpeed or CyberPanel Enterprise, available options are \e[31mols\e[39m , \e[31mTRIAL\e[39m and \e[31mSERIAL_NUMBER\e[39m, default ols"
echo -e "Please be aware, this serial number must be obtained from LiteSpeed Store."
echo -e "And if this serial number has been used before, it must be released/migrated in Store first, otherwise it will fail to start."
echo -e "\n\e[31m-a\e[39m or \e[31m--addons\e[39m : install addons: memcached, redis, PHP extension for memcached and redis"
echo -e "\n\e[31m-p\e[39m or \e[31m--password\e[39m : set password of new installation, empty for default 1234567, [r] or [random] for randomly generated 16 digital password, any other value besides [d] and [r(andom)] will be accept as password, default use 1234567."
echo -e "e.g. \e[31m-p r\e[39m will generate a random password"
echo -e " \e[31m-p 123456789\e[39m will set password to 123456789"
echo -e "\n\e[31m-m\e[39m or \e[31m--minimal\e[39m : set to minimal mode which will not install PowerDNS, Pure-FTPd and Postfix"
echo -e "\n\e[31m-m postfix/pureftpd/powerdns\e[39m will do minimal install also with compoenent given"
echo -e "e.g. \e[31m-m postfix\e[39m will do minimal install also with Postfix"
echo -e " \e[31m-m powerdns\e[39m will do minimal install also with PowerDNS"
echo -e " \e[31m-m postfix\e[39m powerdns will do minimal install also with Postfix and PowerDNS"
echo -e "\n\e[31m-b\e[39m or \e[31m--branch\e[39m : install with given branch/version , must be higher than 1.9.4"
echo -e "e.g. \e[31m-b 2.0.2\e[39m will install 2.0.2 version"
echo -e "\n\e[31m--mirror\e[39m : this argument force to use mirror server for majority of repositories, only suggest to use for servers within China"
echo -e "\nExample:"
echo -e "\nsh <(curl cyberpanel.sh) -v ols -p r or ./cyberpanel.sh --version ols --password random"
echo -e "\nThis will install CyberPanel OpenLiteSpeed and randomly generate the password."
echo -e "\nsh <(curl cyberpanel.sh) -v LICENSE_KEY -a -p my_pass_word"
echo -e "\nThis will install LiteSpeed Enterise , replace LICENSE_KEY to actual license key and set password to my_pass_word\n"
2021-03-09 15:13:32 +01:00
}
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Check_Argument( ) {
if [ [ " $# " = "0" ] ] || [ [ " $# " = "1" && " $1 " = "--debug" ] ] || [ [ " $# " = "1" && " $1 " = "--mirror" ] ] ; then
echo -e "\nInitializing...\n"
else
if [ [ $1 = "help" ] ] ; then
Show_Help
exit
elif [ [ $1 = "default" ] ] ; then
echo -e "\nThis will start default installation...\n"
Silent = "On"
Postfix_Switch = "On"
PowerDNS_Switch = "On"
PureFTPd_Switch = "On"
Server_Edition = "OLS"
Admin_Pass = "1234567"
Memcached = "On"
Redis = "On"
else
while [ [ -n " ${ 1 } " ] ] ; do
case $1 in
-v | --version)
shift
if [ [ " ${ 1 } " = "" ] ] ; then
Show_Help
exit
elif [ [ " ${ 1 ^^ } " = "OLS" ] ] ; then
Server_Edition = "OLS"
Silent = "On"
echo -e "\nSet to use OpenLiteSpeed..."
2020-10-11 12:38:40 -04:00
else
2021-03-09 15:13:32 +01:00
Server_Edition = "Enterprise"
License_Key = " ${ 1 } "
Silent = "On"
echo -e "\nSet to use LiteSpeed Enterprise..."
echo -e " \nSet to use license key ${ 1 } ... "
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
; ;
-p | --password)
shift
if [ [ ${ 1 } = "" ] ] ; then
Admin_Pass = "1234567"
elif [ [ ${ 1 } = "r" ] ] || [ [ $1 = "random" ] ] ; then
Admin_Pass = $(
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
echo ''
)
elif [ [ ${ 1 } = "d" ] ] ; then
Admin_Pass = "1234567"
else
if [ [ ${# 1 } -lt 8 ] ] ; then
echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n"
exit
fi
Admin_Pass = " ${ 1 } "
fi
echo -e " \nSet to use password ${ 1 } ... "
; ;
-b | --branch)
shift
Branch_Check " ${ 1 } "
; ;
-m | --minimal)
if ! echo " $@ " | grep -q -i "postfix\|pureftpd\|powerdns" ; then
Postfix_Switch = "Off"
PowerDNS_Switch = "Off"
PureFTPd_Switch = "Off"
echo -e "\nSet to use minimal installation..."
else
if [ [ " ${ *^^ } " = *"POSTFIX" * ] ] ; then
Postfix_Switch = "On"
echo -e "\nEnable Postfix..."
fi
if [ [ " ${ *^^ } " = *"PUREFTPD" * ] ] ; then
PureFTPd_Switch = "On"
echo -e "\nEnable PureFTPd..."
fi
if [ [ " ${ *^^ } " = *"POWERDNS" * ] ] ; then
PowerDNS_Switch = "On"
echo -e "\nEnable PowerDNS..."
fi
fi
; ;
-a | --addons)
Memcached = "On"
Redis = "On"
echo -e "\nEnable Addons..."
; ;
-h | --help)
Show_Help
exit
; ;
--debug)
echo -e "\nEnable Debug log...\n"
; ;
--mirror)
echo -e "\nForce to use mirror server...\n"
; ;
*)
if [ [ " ${ 1 ^^ } " = *"POSTFIX" * ] ] || [ [ " ${ 1 ^^ } " = *"PUREFTPD" * ] ] || [ [ " ${ 1 ^^ } " = *"POWERDNS" * ] ] ; then
:
#this is ugly workaround , leave it for now , to-do for further improvement.
else
echo -e "\nUnknown argument...\n"
Show_Help
exit
fi
; ;
esac
shift
2020-10-11 12:38:40 -04:00
done
fi
2021-03-09 15:13:32 +01:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Arguments" " ${ @ } "
fi
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Debug_Log2 "Initialization completed..,2"
}
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Argument_Mode( ) {
if [ [ " ${ Server_Edition ^^ } " = "OLS" ] ] ; then
Server_Edition = "OLS"
echo -e "\nSet to OpenLiteSpeed..."
else
License_Check " $License_Key "
fi
if [ [ $Admin_Pass = "d" ] ] ; then
Admin_Pass = "1234567"
echo -e "\nSet to default password..."
echo -e " \nAdmin password will be set to \e[31m $Admin_Pass \e[39m\n "
elif [ [ $Admin_Pass = "r" ] ] ; then
Admin_Pass = $(
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
echo ''
)
echo -e "\nSet to random-generated password..."
echo -e " \nAdmin password will be set to \e[31m $Admin_Pass \e[39m "
else
echo -e " \nAdmin password will be set to \e[31m $Admin_Pass \e[39m "
fi
}
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Interactive_Mode( ) {
echo -e " CyberPanel Installer v $Panel_Version . $Panel_Build
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
1. Install CyberPanel.
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
2. Addons and Miscellaneous
2020-04-13 00:58:56 +05:00
2021-03-09 15:13:32 +01:00
3. Exit.
2020-09-09 13:03:24 +05:00
2021-03-09 15:13:32 +01:00
"
read -r -p " Please enter the number[1-3]: " Input_Number
echo ""
case " $Input_Number " in
1)
Interactive_Mode_Set_Parameter
; ;
2)
Interactive_Mode_Addon
; ;
3)
exit
; ;
*)
echo -e " Please enter the right number [1-3]\n"
exit
; ;
esac
}
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
Interactive_Mode_Set_Parameter( ) {
echo -e " CyberPanel Installer v $Panel_Version . $Panel_Build
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
RAM check : $( free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }' )
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
Disk check : $( df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}' ) ( Minimal \e [ 31m10GB\e [ 39m free space)
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
1. Install CyberPanel with \e [ 31mOpenLiteSpeed\e [ 39m.
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
2. Install Cyberpanel with \e [ 31mLiteSpeed Enterprise\e [ 39m.
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
3. Exit.
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
"
read -r -p " Please enter the number[1-3]: " Input_Number
echo ""
case " $Input_Number " in
1)
Server_Edition = "OLS"
; ;
2)
Interactive_Mode_License_Input
; ;
3)
exit
; ;
*)
echo -e " Please enter the right number [1-3]\n"
exit
; ;
esac
echo -e "\nInstall Full service for CyberPanel? This will include PowerDNS, Postfix and Pure-FTPd."
echo -e ""
printf "%s" "Full installation [Y/n]: "
read -r Tmp_Input
if [ [ $( expr " x $Tmp_Input " : 'x[Yy]' ) -gt 1 ] ] || [ [ $Tmp_Input = "" ] ] ; then
echo -e "\nFull installation selected..."
Postfix_Switch = "On"
PowerDNS_Switch = "On"
PureFTPd_Switch = "On"
else
echo -e ""
printf "%s" "Install Postfix? [Y/n]: "
read -r Tmp_Input
if [ [ $Tmp_Input = ~ ^( no| n| N) ] ] ; then
Postfix_Switch = "Off"
else
Postfix_Switch = "On"
fi
echo -e ""
printf "%s" "Install PowerDNS? [Y/n]: "
read -r Tmp_Input
if [ [ $Tmp_Input = ~ ^( no| n| N) ] ] ; then
PowerDNS_Switch = "Off"
else
PowerDNS_Switch = "On"
fi
echo -e ""
printf "%s" "Install PureFTPd? [Y/n]: "
read -r Tmp_Input
if [ [ $Tmp_Input = ~ ^( no| n| N) ] ] ; then
PureFTPd_Switch = "Off"
else
PureFTPd_Switch = "On"
fi
fi
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
### Ask if you want to set up this CyberPanel with remote MySQL
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
echo -e "\nDo you want to setup Remote MySQL? (This will skip installation of local MySQL)"
echo -e ""
printf "%s" "(Default = No) Remote MySQL [y/N]: "
read -r Tmp_Input
if [ [ $( expr " x $Tmp_Input " : 'x[Yy]' ) -gt 1 ] ] ; then
echo -e "\nRemote MySQL selected..."
Remote_MySQL = "On"
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
echo -e ""
printf "%s" "Remote MySQL Hostname: "
read -r MySQL_Host
2020-09-16 13:47:18 +05:00
2021-03-09 15:13:32 +01:00
echo -e ""
printf "%s" "Remote MySQL Database that contains meta information regarding MYSQL. (usually mysql): "
read -r MySQL_DB
2020-09-16 13:47:18 +05:00
2021-03-09 15:13:32 +01:00
echo -e ""
printf "%s" "Remote MySQL Username: "
read -r MySQL_User
2020-09-17 00:35:44 +05:00
2021-03-09 15:13:32 +01:00
echo -e ""
printf "%s" "Remote MySQL Password: "
read -r -s -p "Password: " MySQL_Password
2020-09-08 20:13:21 +05:00
2021-03-09 15:13:32 +01:00
echo -e ""
printf "%s" "Remote MySQL Port: "
read -r MySQL_Port
else
echo -e "\nLocal MySQL selected..."
fi
echo -e "\nPress \e[31mEnter\e[39m key to continue with latest version or Enter specific version such as: \e[31m1.9.4\e[39m , \e[31m2.0.1\e[39m , \e[31m2.0.2\e[39m ...etc"
printf "%s" ""
read -r Tmp_Input
if [ [ $Tmp_Input = "" ] ] ; then
echo -e " Branch name set to $Branch_Name "
else
Branch_Check " $Tmp_Input "
fi
echo -e "\nPlease choose to use default admin password \e[31m1234567\e[39m, randomly generate one \e[31m(recommended)\e[39m or specify the admin password?"
printf "%s" "Choose [d]fault, [r]andom or [s]et password: [d/r/s] "
read -r Tmp_Input
if [ [ $Tmp_Input = ~ ^( d| D| ) ] ] || [ [ -z $Tmp_Input ] ] ; then
Admin_Pass = "1234567"
echo -e " \nAdmin password will be set to $Admin_Pass \n "
elif [ [ $Tmp_Input = ~ ^( r| R) ] ] ; then
Admin_Pass = $(
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
echo ''
)
echo -e "\nAdmin password will be provided once installation is completed...\n"
elif [ [ $Tmp_Input = ~ ^( s| S) ] ] ; then
Custom_Pass = "True"
echo -e "\nPlease enter your password:"
printf "%s" ""
read -r -s -p "Password: " Tmp_Input
if [ [ -z " $Tmp_Input " ] ] ; then
echo -e "\nPlease do not use empty string...\n"
exit
fi
if [ [ ${# Tmp_Input } -lt 8 ] ] ; then
echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n"
exit
fi
Tmp_Input1 = $Tmp_Input
read -r -s -p "Confirm Password:" Tmp_Input
if [ [ -z " $Tmp_Input " ] ] ; then
echo -e "\nPlease do not use empty string...\n"
exit
fi
if [ [ " $Tmp_Input " = " $Tmp_Input1 " ] ] ; then
Admin_Pass = $Tmp_Input
else
echo -e "\nRepeated password didn't match , please check...\n"
exit
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
else
Admin_Pass = "1234567"
echo -e " \nAdmin password will be set to $Admin_Pass \n "
fi
echo -e "\nDo you wish to install Memcached process and its PHP extension?"
printf "%s" "Please select [Y/n]: "
read -r Tmp_Input
if [ [ $Tmp_Input = ~ ^( no| n| N) ] ] ; then
Memcached = "Off"
else
Memcached = "On"
echo -e "\nInstall Memcached process and its PHP extension set to Yes...\n"
fi
echo -e "\nDo you wish to install Redis process and its PHP extension?"
printf "%s" "Please select [Y/n]: "
read -r Tmp_Input
if [ [ $Tmp_Input = ~ ^( no| n| N) ] ] ; then
Redis = "Off"
else
Redis = "On"
echo -e "\nInstall Redis process and its PHP extension set to Yes...\n"
fi
echo -e "\nWould you like to set up a WatchDog \e[31m(beta)\e[39m for Web service and Database service ?"
echo -e "The watchdog script will be automatically started up after installation and server reboot"
echo -e "If you want to kill the watchdog , run \e[31mwatchdog kill\e[39m"
echo -e "Please type Yes or no (with capital \e[31mY\e[39m, default Yes): "
read -r Tmp_Input
if [ [ $Tmp_Input = "Yes" ] ] || [ [ $Tmp_Input = "" ] ] ; then
Watchdog = "On"
echo -e "\nInstall Watchdog set to Yes...\n"
else
Watchdog = "Off"
fi
}
2020-03-06 17:36:04 +01:00
2021-03-09 15:13:32 +01:00
Interactive_Mode_License_Input( ) {
Server_Edition = "Enterprise"
echo -e " \nPlease note that your server has \e[31m $Total_RAM MB\e[39m RAM "
echo -e "If you are using \e[31mFree Start\e[39m license, It will not start due to \e[31m2GB RAM limit\e[39m.\n"
echo -e "If you do not have any license, you can also use trial license (if server has not used trial license before), type \e[31mTRIAL\e[39m\n"
printf "%s" "Please input your serial number for LiteSpeed WebServer Enterprise: "
read -r License_Key
if [ [ -z " $License_Key " ] ] ; then
echo -e "\nPlease provide license key\n"
exit
fi
echo -e " The serial number you input is: \e[31m $License_Key \e[39m\n "
printf "%s" "Please verify it is correct. [y/N]: "
read -r Tmp_Input
if [ [ -z " $Tmp_Input " ] ] ; then
echo -e "\nPlease type \e[31my\e[39m\n"
exit
fi
License_Check " $License_Key "
#echo -e "\nWould you like use Redis Mass Hosting?"
#echo -e "Please type Yes or No (with capital \e[31mY\e[39m, default No):"
#read -r Redis_Hosting
#if [[ "$Redis_Hosting" = "Yes" ]]; then
# echo -e "\nRedis Mass Hosting is set to Yes...\n"
#fi
# hide it for now
}
2020-04-13 11:01:15 +05:00
2021-03-09 15:13:32 +01:00
Pre_Install_Setup_Repository( ) {
if [ [ $Server_OS = "CentOS" ] ] ; then
rpm --import https://cyberpanel.sh/rpms.litespeedtech.com/centos/RPM-GPG-KEY-litespeed
#import the LiteSpeed GPG key
yum clean all
yum autoremove -y epel-release
rm -f /etc/yum.repos.d/epel.repo
rm -f /etc/yum.repos.d/epel.repo.rpmsave
2021-04-19 12:56:29 -04:00
yum install -y yum-plugin-copr
Check_Return "yum repo" "no_exit"
yum copr enable -y copart/restic
Check_Return "yum repo" "no_exit"
2021-04-09 16:54:32 +02:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "8" ] ] ; then
2021-04-20 19:49:51 -04:00
rpm --import https://cyberpanel.sh/www.centos.org/keys/RPM-GPG-KEY-CentOS-Official
2021-04-09 16:54:32 +02:00
rpm --import https://cyberpanel.sh/dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8
yum install -y https://cyberpanel.sh/dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Check_Return "yum repo" "no_exit"
2021-03-09 15:13:32 +01:00
cat <<EOF >/etc/yum.repos.d/CentOS-PowerTools-CyberPanel.repo
[ powertools-for-cyberpanel]
name = CentOS Linux \$ releasever - PowerTools
mirrorlist = http://mirrorlist.centos.org/?release= \$ releasever& arch = \$ basearch& repo = PowerTools& infra = \$ infra
baseurl = http://mirror.centos.org/\$ contentdir/\$ releasever/PowerTools/\$ basearch/os/
gpgcheck = 1
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
EOF
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "7" ] ] ; then
2021-04-09 16:54:32 +02:00
rpm --import https://cyberpanel.sh/dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Check_Return "yum repo" "no_exit"
2020-05-13 18:32:36 +05:00
2021-03-09 15:13:32 +01:00
yum install -y yum-plugin-priorities
Check_Return "yum repo" "no_exit"
curl -o /etc/yum.repos.d/powerdns-auth-43.repo https://cyberpanel.sh/repo.powerdns.com/repo-files/centos-auth-43.repo
Check_Return "yum repo" "no_exit"
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
cat <<EOF >/etc/yum.repos.d/MariaDB.repo
# MariaDB 10.5 CentOS repository list - created 2020-09-08 14:54 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[ mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
EOF
2020-05-13 18:32:36 +05:00
2021-03-09 15:13:32 +01:00
yum install --nogpg -y https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
Check_Return "yum repo" "no_exit"
2020-04-16 17:20:44 +05:00
2021-03-09 15:13:32 +01:00
rpm -ivh https://cyberpanel.sh/repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
Check_Return "yum repo" "no_exit"
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
rpm -ivh https://cyberpanel.sh/repo.ius.io/ius-release-el7.rpm
Check_Return "yum repo" "no_exit"
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
fi
2021-03-22 13:46:43 +05:00
Debug_Log2 "Setting up repositories...,1"
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Country " = "CN" ] ] ; then
Pre_Install_Setup_CN_Repository
2021-03-22 13:46:43 +05:00
Debug_Log2 "Setting up repositories for CN server...,1"
2021-03-09 15:13:32 +01:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Country " = "CN" ] ] || [ [ " $Server_Provider " = "Alibaba Cloud" ] ] || [ [ " $Server_Provider " = "Tencent Cloud" ] ] ; then
Setup_Pip
fi
2020-01-17 15:25:27 +01:00
2019-11-13 18:51:57 +05:00
}
2021-03-09 15:13:32 +01:00
Setup_Pip( ) {
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
rm -rf /root/.pip
mkdir -p /root/.pip
cat <<EOF >/root/.pip/pip.conf
[ global]
index-url= https://cyberpanel.sh/pip-repo/pypi/simple/
EOF
#default to self-host pip for CN
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Provider " = "Alibaba Cloud" ] ] ; then
sed -i 's|https://cyberpanel.sh/pip-repo/pypi/simple/|http://mirrors.cloud.aliyuncs.com/pypi/simple/|g' /root/.pip/pip.conf
echo "trusted-host = mirrors.cloud.aliyuncs.com" >> /root/.pip/pip.conf
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Provider " = "Tencent Cloud" ] ] ; then
sed -i 's|https://cyberpanel.sh/pip-repo/pypi/simple/|https://mirrors.cloud.tencent.com/pypi/simple/|g' /root/.pip/pip.conf
fi
#set Alibaba and Tencent to their private mirror
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
2021-03-22 13:46:43 +05:00
Debug_Log2 "Setting up PIP repo...,3"
2021-03-09 15:13:32 +01:00
#set up pip for Alibaba, Tencent worldwide and Chinese server
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Pip Source" " $( grep "index-url" /root/.pip/pip.conf) "
fi
2019-11-13 18:51:57 +05:00
}
2021-03-09 15:13:32 +01:00
Pre_Install_Setup_CN_Repository( ) {
if [ [ " $Server_OS " = "CentOS" ] ] && [ [ " $Server_OS_Version " = "7" ] ] ; then
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
sed -i 's|http://yum.mariadb.org|https://cyberpanel.sh/yum.mariadb.org|g' /etc/yum.repos.d/MariaDB.repo
sed -i 's|https://yum.mariadb.org/RPM-GPG-KEY-MariaDB|https://cyberpanel.sh/yum.mariadb.org/RPM-GPG-KEY-MariaDB|g' /etc/yum.repos.d/MariaDB.repo
# use MariaDB Mirror
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
sed -i 's|https://download.copr.fedorainfracloud.org|https://cyberpanel.sh/download.copr.fedorainfracloud.org|g' /etc/yum.repos.d/_copr_copart-restic.repo
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
sed -i 's|http://repo.iotti.biz|https://cyberpanel.sh/repo.iotti.biz|g' /etc/yum.repos.d/frank.repo
2020-05-12 02:22:08 +05:00
2021-03-09 15:13:32 +01:00
sed -i "s|mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/\$basearch/mirrorlist|baseurl=https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/7/gf/x86_64/|g" /etc/yum.repos.d/gf.repo
sed -i "s|mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/\$basearch/mirrorlist|baseurl=https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/|g" /etc/yum.repos.d/gf.repo
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
sed -i 's|https://repo.ius.io|https://cyberpanel.sh/repo.ius.io|g' /etc/yum.repos.d/ius.repo
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
sed -i 's|http://repo.iotti.biz|https://cyberpanel.sh/repo.iotti.biz|g' /etc/yum.repos.d/lux.repo
2019-12-12 14:26:54 +05:00
2021-03-09 15:13:32 +01:00
sed -i 's|http://repo.powerdns.com|https://cyberpanel.sh/repo.powerdns.com|g' /etc/yum.repos.d/powerdns-auth-43.repo
sed -i 's|https://repo.powerdns.com|https://cyberpanel.sh/repo.powerdns.com|g' /etc/yum.repos.d/powerdns-auth-43.repo
fi
# sed -i 's|http://mirrors.tencentyun.com/ubuntu/|https://cyberpanel.sh/us.archive.ubuntu.com/ubuntu/|g' /etc/apt/sources.list
2020-01-17 15:25:27 +01:00
2021-03-22 13:46:43 +05:00
Debug_Log2 "Setting up repositories for CN server...,1"
2020-01-17 15:25:27 +01:00
}
2021-03-09 15:13:32 +01:00
Download_Requirement( ) {
for i in { 1..50} ;
do
wget -O /usr/local/requirments.txt " ${ Git_Content_URL } / ${ Branch_Name } /requirments.txt "
if grep -q "Django==" /usr/local/requirments.txt ; then
break
else
echo -e " \n Requirement list has failed to download for $i times... "
echo -e "Wait for 30 seconds and try again...\n"
sleep 30
fi
done
#special made function for Gitee.com , for whatever reason , sometimes it fails to download this file
2020-01-17 15:25:27 +01:00
}
2021-03-09 15:13:32 +01:00
Pre_Install_Required_Components( ) {
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Debug_Log2 "Installing necessary components..,3"
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS " = "CentOS" ] ] ; then
yum update -y
if [ [ " $Server_OS_Version " = "7" ] ] ; then
yum install -y wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel gpgme-devel curl-devel git socat openssl-devel MariaDB-shared mariadb-devel yum-utils python36u python36u-pip python36u-devel zip unzip bind-utils
Check_Return
yum -y groupinstall development
Check_Return
elif [ [ " $Server_OS_Version " = "8" ] ] ; then
dnf install -y zip wget strace net-tools curl which bc telnet htop libevent-devel gcc libattr-devel xz-devel mariadb-devel curl-devel git platform-python-devel tar socat python3 zip unzip bind-utils
Check_Return
dnf install -y gpgme-devel
Check_Return
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
ln -s /usr/bin/pip3 /usr/bin/pip
else
apt update -y
DEBIAN_FRONTEND = noninteractive apt upgrade -y -o Dpkg::Options::= "--force-confdef" -o Dpkg::Options::= "--force-confold"
2021-04-20 19:49:51 -04:00
DEBIAN_FRONTEND = noninteracitve apt install -y dnsutils net-tools htop telnet libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libmariadbclient-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev libidn2-0-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcomerr2 libldap2-dev virtualenv git socat vim unzip zip
2021-03-09 15:13:32 +01:00
Check_Return
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
DEBIAN_FRONTEND = noninteractive apt install -y python3-pip
Check_Return
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
ln -s /usr/bin/pip3 /usr/bin/pip3.6
ln -s /usr/bin/pip3.6 /usr/bin/pip
2020-03-02 11:51:39 +05:00
2021-03-09 15:13:32 +01:00
DEBIAN_FRONTEND = noninteractive apt install -y build-essential libssl-dev libffi-dev python3-dev
Check_Return
DEBIAN_FRONTEND = noninteractive apt install -y python3-venv
Check_Return
2020-03-02 11:51:39 +05:00
2021-03-09 15:13:32 +01:00
DEBIAN_FRONTEND = noninteractive apt install -y locales
locale-gen "en_US.UTF-8"
update-locale LC_ALL = "en_US.UTF-8"
fi
2020-01-17 15:25:27 +01:00
2021-03-22 13:56:18 +05:00
Debug_Log2 "Installing required virtual enviroment,3"
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
export LC_CTYPE = en_US.UTF-8
export LC_ALL = en_US.UTF-8
#need to set lang to address some pip module installation issue.
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Retry_Command "pip install --default-timeout=3600 virtualenv==16.7.9"
2019-12-12 14:26:54 +05:00
2021-03-09 15:13:32 +01:00
Download_Requirement
2019-12-12 14:26:54 +05:00
2021-03-09 15:13:32 +01:00
virtualenv -p /usr/bin/python3 /usr/local/CyberPanel
Check_Return
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS " = "Ubuntu" ] ] && [ [ " $Server_OS_Version " != "20" ] ] ; then
# shellcheck disable=SC1091
source /usr/local/CyberPanel/bin/activate
else
# shellcheck disable=SC1091
. /usr/local/CyberPanel/bin/activate
fi
2020-01-17 15:25:27 +01:00
2021-03-22 13:56:18 +05:00
Debug_Log2 "Installing requirments..,3"
2021-03-09 15:13:32 +01:00
Retry_Command "pip install --default-timeout=3600 -r /usr/local/requirments.txt"
Check_Return "requirments" "no_exit"
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
rm -rf cyberpanel
echo -e " \nFetching files from ${ Git_Clone_URL } ...\n "
2020-01-17 15:25:27 +01:00
2021-03-22 13:56:18 +05:00
Debug_Log2 "Getting CyberPanel code..,4"
2021-03-09 15:13:32 +01:00
Retry_Command " git clone ${ Git_Clone_URL } "
Check_Return " git clone ${ Git_Clone_URL } "
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
echo -e "\nCyberPanel source code downloaded...\n"
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
cd cyberpanel || exit
git checkout " $Branch_Name "
Check_Return "git checkout"
cd - || exit
cp -r cyberpanel /usr/local/cyberpanel
cd cyberpanel/install || exit
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Debug_Log2 "Necessary components installed..,5"
2019-11-13 18:51:57 +05:00
}
2021-03-09 15:13:32 +01:00
Pre_Install_System_Tweak( ) {
2021-03-22 14:48:42 +05:00
Debug_Log2 "Setting up sytem tweak...,20"
2021-03-09 15:13:32 +01:00
Line_Number = $( grep -n "127.0.0.1" /etc/hosts | cut -d: -f 1)
My_Hostname = $( hostname)
if [ [ -n $Line_Number ] ] ; then
for Line_Number2 in $Line_Number ; do
String = $( sed " ${ Line_Number2 } q;d " /etc/hosts)
if [ [ $String != *" $My_Hostname " * ] ] ; then
New_String = " $String $My_Hostname "
sed -i " ${ Line_Number2 } s/.*/ ${ New_String } / " /etc/hosts
fi
done
else
echo " 127.0.0.1 $My_Hostname " >>/etc/hosts
fi
#this should address on "sudo: unable to resolve host ..." on Ubuntu , it's not issue but annoying.
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS " = "CentOS" ] ] ; then
setenforce 0 || true
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
#disable SELinux
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "7" ] ] ; then
:
fi
#CentOS 7 specific change
if [ [ " $Server_OS_Version " = "8" ] ] ; then
:
fi
#CentOS 8 specific change
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
elif [ [ " $Server_OS " = "Ubuntu" ] ] ; then
if [ [ " $Server_OS_Version " = "20" ] ] ; then
sed -i 's|ce-2.3-latest/ubuntu/bionic bionic main|ce-2.3-latest/ubuntu/focal focal main|g' install.py
fi
#Ubuntu 20 specific change.
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "18" ] ] ; then
:
fi
#Ubuntu 18 specific change.
fi
if ! grep -q "pid_max" /etc/rc.local 2>/dev/null ; then
if [ [ $Server_OS = "CentOS" ] ] ; then
echo " echo 1000000 > /proc/sys/kernel/pid_max
echo 1 > /sys/kernel/mm/ksm/run" >>/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
else
echo " echo 1000000 > /proc/sys/kernel/pid_max
echo 1 > /sys/kernel/mm/ksm/run" >>/etc/rc.local
chmod +x /etc/rc.local
2021-05-21 16:15:57 +02:00
fi
if grep -q "nf_conntrack_max" /etc/sysctl.conf ; then
sysctl -w net.netfilter.nf_conntrack_max= 2097152 > /dev/null
sysctl -w net.nf_conntrack_max= 2097152 > /dev/null
echo "net.netfilter.nf_conntrack_max=2097152" >> /etc/sysctl.conf
echo "net.nf_conntrack_max=2097152" >> /etc/sysctl.conf
2021-03-09 15:13:32 +01:00
fi
echo "fs.file-max = 65535" >>/etc/sysctl.conf
sysctl -p >/dev/null
echo " * soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
* soft nproc 65535
* hard nproc 65535
root soft nproc 65535
root hard nproc 65535" >>/etc/security/limits.conf
fi
#sed -i 's|#DefaultLimitNOFILE=|DefaultLimitNOFILE=65535|g' /etc/systemd/system.conf
#raise the file limit for systemd process
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Total_SWAP = $( free -m | awk '/^Swap:/ { print $2 }' )
Set_SWAP = $(( Total_RAM - Total_SWAP))
SWAP_File = /cyberpanel.swap
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
if [ ! -f $SWAP_File ] ; then
if [ [ $Total_SWAP -gt $Total_RAM ] ] || [ [ $Total_SWAP -eq $Total_RAM ] ] ; then
echo -e "Check SWAP...\n"
2020-10-11 12:38:40 -04:00
else
2021-03-09 15:13:32 +01:00
if [ [ $Set_SWAP -gt "2049" ] ] ; then
#limit it to 2GB as max size
Set_SWAP = "2048"
fi
fallocate --length ${ Set_SWAP } MiB $SWAP_File
chmod 600 $SWAP_File
mkswap $SWAP_File
swapon $SWAP_File
echo -e " ${ SWAP_File } swap swap sw 0 0 " | sudo tee -a /etc/fstab
sysctl vm.swappiness= 10
echo -e "vm.swappiness = 10" >> /etc/sysctl.conf
echo -e "\nSWAP set...\n"
2020-10-11 12:38:40 -04:00
fi
fi
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Provider " = "Tencent Cloud" ] ] ; then
echo " $( host mirrors.tencentyun.com | awk '{print $4}' ) mirrors.tencentyun.com " >> /etc/hosts
fi
if [ [ " $Server_Provider " = "Alibaba Cloud" ] ] ; then
echo " $( host mirrors.cloud.aliyuncs.com | awk '{print $4}' ) mirrors.cloud.aliyuncs.com " >> /etc/hosts
fi
#add internal repo server to host file before systemd-resolved is disabled
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
if grep -i -q "systemd-resolve" /etc/resolv.conf ; then
systemctl stop systemd-resolved >/dev/null 2>& 1
systemctl disable systemd-resolved >/dev/null 2>& 1
systemctl mask systemd-resolved >/dev/null 2>& 1
fi
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
rm -f /etc/resolv.conf
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Provider " = "Tencent Cloud" ] ] ; then
echo -e "nameserver 183.60.83.19" > /etc/resolv.conf
echo -e "nameserver 183.60.82.98" >> /etc/resolv.conf
elif [ [ " $Server_Provider " = "Alibaba Cloud" ] ] ; then
echo -e "nameserver 100.100.2.136" > /etc/resolv.conf
echo -e "nameserver 100.100.2.138" >> /etc/resolv.conf
else
echo -e "nameserver 1.1.1.1" > /etc/resolv.conf
echo -e "nameserver 8.8.8.8" >> /etc/resolv.conf
fi
2020-07-05 14:39:57 +05:00
2021-03-09 15:13:32 +01:00
systemctl restart systemd-networkd >/dev/null 2>& 1
sleep 3
#take a break ,or installer will break
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
cp /etc/resolv.conf /etc/resolv.conf-tmp
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
Line1 = " $( grep -n "f.write('nameserver 8.8.8.8')" installCyberPanel.py | head -n 1 | cut -d: -f1) "
sed -i " ${ Line1 } i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ subprocess.call\(command, shell=True) " installCyberPanel.py
sed -i " ${ Line1 } i\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ command = 'cat /etc/resolv.conf-tmp > /etc/resolv.conf' " installCyberPanel.py
}
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
License_Validation( ) {
2021-03-22 13:46:43 +05:00
Debug_Log2 "Validating LiteSpeed license...,40"
2021-03-09 15:13:32 +01:00
Current_Dir = $( pwd )
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
if [ -f /root/cyberpanel-tmp ] ; then
rm -rf /root/cyberpanel-tmp
fi
mkdir /root/cyberpanel-tmp
cd /root/cyberpanel-tmp || exit
Retry_Command " wget https://cyberpanel.sh/www.litespeedtech.com/packages/ ${ LSWS_Stable_Version : 0 : 1 } .0/lsws- $LSWS_Stable_Version -ent-x86_64-linux.tar.gz "
tar xzvf " lsws- $LSWS_Stable_Version -ent-x86_64-linux.tar.gz " >/dev/null
cd " /root/cyberpanel-tmp/lsws- $LSWS_Stable_Version /conf " || exit
if [ [ " $License_Key " = "Trial" ] ] ; then
Retry_Command "wget -q https://cyberpanel.sh/license.litespeedtech.com/reseller/trial.key"
sed -i " s|writeSerial = open('lsws-5.4.2/serial.no', 'w')|command = 'wget -q --output-document=./lsws- $LSWS_Stable_Version /trial.key https://cyberpanel.sh/license.litespeedtech.com/reseller/trial.key'|g " " $Current_Dir /installCyberPanel.py "
sed -i 's|writeSerial.writelines(self.serial)|subprocess.call(command, shell=True)|g' " $Current_Dir /installCyberPanel.py "
sed -i 's|writeSerial.close()||g' " $Current_Dir /installCyberPanel.py "
else
echo " $License_Key " > serial.no
fi
cd " /root/cyberpanel-tmp/lsws- $LSWS_Stable_Version /bin " || exit
if [ [ " $License_Key " = "Trial" ] ] ; then
License_Key = "1111-2222-3333-4444"
else
./lshttpd -r
fi
if ./lshttpd -V | & grep "ERROR" || ./lshttpd -V | & grep "expire in 0 days" ; then
echo -e "\n\nIt apeears to have some issue with license , please check above result..."
Debug_Log2 "It appears to have some issue with LiteSpeed License, make sure you are using correct serial key. [404]"
exit
fi
echo -e "\nLicense seems valid..."
cd " $Current_Dir " || exit
rm -rf /root/cyberpanel-tmp
#clean up the temp files
}
Pre_Install_CN_Replacement( ) {
if [ [ " $Server_OS " = "Ubuntu" ] ] ; then
sed -i 's|wget http://rpms.litespeedtech.com/debian/|wget https://cyberpanel.sh/litespeed/|g' install.py
sed -i 's|https://repo.dovecot.org/|https://cyberpanel.sh/repo.dovecot.org/|g' install.py
fi
#replace litespeed repo on ubuntu 18/20
if [ [ " $Server_OS " = "CentOS" ] ] ; then
sed -i 's|rpm -ivh http://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el7.noarch.rpm|curl -o /etc/yum.repos.d/litespeed.repo https://cyberpanel.sh/litespeed/litespeed_cn.repo|g' install.py
sed -i 's|rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm|curl -o /etc/yum.repos.d/litespeed.repo https://cyberpanel.sh/litespeed/litespeed_cn.repo|g' install.py
sed -i 's|https://mirror.ghettoforge.org/distributions|https://cyberpanel.sh/mirror.ghettoforge.org/distributions|g' install.py
if [ [ " $Server_OS_Version " = "8" ] ] ; then
sed -i 's|dnf --nogpg install -y https://mirror.ghettoforge.org/distributions/gf/el/8/gf/x86_64/gf-release-8-11.gf.el8.noarch.rpm|echo gf8|g' install.py
sed -i 's|dnf --nogpg install -y https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/8/gf/x86_64/gf-release-8-11.gf.el8.noarch.rpm|echo gf8|g' install.py
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
Retry_Command "dnf --nogpg install -y https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/8/gf/x86_64/gf-release-8-11.gf.el8.noarch.rpm"
sed -i "s|mirrorlist=http://mirrorlist.ghettoforge.org/el/8/gf/\$basearch/mirrorlist|baseurl=https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/8/gf/x86_64/|g" /etc/yum.repos.d/gf.repo
sed -i "s|mirrorlist=http://mirrorlist.ghettoforge.org/el/8/plus/\$basearch/mirrorlist|baseurl=https://cyberpanel.sh/mirror.ghettoforge.org/distributions/gf/el/8/plus/x86_64/|g" /etc/yum.repos.d/gf.repo
#get this set up beforehand.
2020-10-11 12:38:40 -04:00
fi
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
fi
2020-06-26 12:32:02 +05:00
2021-03-09 15:13:32 +01:00
sed -i "s|https://www.litespeedtech.com/|https://cyberpanel.sh/www.litespeedtech.com/|g" installCyberPanel.py
sed -i 's|composer.sh|composer_cn.sh|g' install.py
sed -i 's|./composer_cn.sh|COMPOSER_ALLOW_SUPERUSER=1 ./composer_cn.sh|g' install.py
sed -i 's|http://www.litespeedtech.com|https://cyberpanel.sh/www.litespeedtech.com|g' install.py
sed -i 's|https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip|https://cyberpanel.sh/www.rainloop.net/repository/webmail/rainloop-community-latest.zip|g' install.py
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
sed -i "s|rep.cyberpanel.net|cyberpanel.sh/rep.cyberpanel.net|g" installCyberPanel.py
sed -i "s|rep.cyberpanel.net|cyberpanel.sh/rep.cyberpanel.net|g" install.py
2020-01-17 15:25:27 +01:00
2020-01-29 14:39:48 +01:00
2021-03-22 13:46:43 +05:00
Debug_Log2 "Setting up URLs for CN server...,1"
2019-11-13 18:51:57 +05:00
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
sed -i 's|wget -O - https://get.acme.sh \| sh|echo acme|g' install.py
sed -i 's|/root/.acme.sh/acme.sh --upgrade --auto-upgrade|echo acme2|g' install.py
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Current_Dir = $( pwd )
Retry_Command "git clone https://gitee.com/neilpang/acme.sh.git"
cd acme.sh || exit
./acme.sh --install
cd " $Current_Dir " || exit
rm -rf acme.sh
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
# shellcheck disable=SC2016
sed -i 's|$PROJECT/archive/$BRANCH.tar.gz|https://cyberpanel.sh/codeload.github.com/acmesh-official/acme.sh/tar.gz/master|g' /root/.acme.sh/acme.sh
2019-11-13 18:51:57 +05:00
2021-03-09 15:13:32 +01:00
Retry_Command "/root/.acme.sh/acme.sh --upgrade --auto-upgrade"
#install acme and upgrade it beforehand, to prevent gitee fail
}
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Main_Installation( ) {
2021-03-22 13:56:18 +05:00
Debug_Log2 "Starting main installation..,30"
2021-03-09 15:13:32 +01:00
if [ [ -d /usr/local/CyberCP ] ] ; then
echo -e "\n CyberPanel already installed, exiting..."
Debug_Log2 "CyberPanel already installed, exiting... [404]"
exit
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ $Server_Edition = "Enterprise" ] ] ; then
echo -e "\nValidating the license..."
echo -e "\nThis may take a minute..."
echo -e "\nPlease be patient...\n"
2020-03-02 10:55:29 +05:00
2021-03-09 15:13:32 +01:00
License_Validation
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
sed -i " s|lsws-5.4.2|lsws- $LSWS_Stable_Version |g " installCyberPanel.py
sed -i " s|lsws-5.3.5|lsws- $LSWS_Stable_Version |g " installCyberPanel.py
2020-10-11 12:38:40 -04:00
#this sed must be done after license validation
2021-03-09 15:13:32 +01:00
Enterprise_Flag = "--ent ent --serial "
fi
sed -i 's|git clone https://github.com/usmannasir/cyberpanel|echo downloaded|g' install.py
sed -i 's|mirror.cyberpanel.net|cyberpanel.sh|g' install.py
if [ [ $Server_Country = "CN" ] ] ; then
Pre_Install_CN_Replacement
fi
echo -e "Preparing...\n"
Final_Flags = ( )
Final_Flags += ( " $Server_IP " )
Final_Flags += ( ${ Enterprise_Flag : + $Enterprise_Flag } )
Final_Flags += ( ${ License_Key : + $License_Key } )
Final_Flags += ( --postfix " ${ Postfix_Switch ^^ } " )
Final_Flags += ( --powerdns " ${ PowerDNS_Switch ^^ } " )
Final_Flags += ( --ftp " ${ PureFTPd_Switch ^^ } " )
if [ [ " $Redis_Hosting " = "Yes" ] ] ; then
Final_Flags += ( --redis enable )
fi
if [ [ " $Remote_MySQL " = "On" ] ] ; then
Final_Flags += ( --remotemysql " ${ Remote_MySQL ^^ } " )
Final_Flags += ( --mysqlhost " $MySQL_Host " )
Final_Flags += ( --mysqldb " $MySQL_DB " )
Final_Flags += ( --mysqluser " $MySQL_User " )
Final_Flags += ( --mysqlpassword " $MySQL_Password " )
Final_Flags += ( --mysqlport " $MySQL_Port " )
else
Final_Flags += ( --remotemysql " ${ Remote_MySQL ^^ } " )
fi
#form up the final agurment for install.py
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Final_Flags" " ${ Final_Flags [@] } "
fi
/usr/local/CyberPanel/bin/python install.py " ${ Final_Flags [@] } "
if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt >/dev/null; then
echo -e "\nCyberPanel installation sucessfully completed...\n"
2021-03-22 13:46:43 +05:00
Debug_Log2 "Main installation completed...,70"
2021-03-09 15:13:32 +01:00
else
echo -e "Oops, something went wrong..."
Debug_Log2 "Oops, something went wrong... [404]"
exit
fi
}
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_Addon_Mecached_LSMCD( ) {
if [ [ $Server_OS = "CentOS" ] ] ; then
yum groupinstall "Development Tools" -y
yum install autoconf automake zlib-devel openssl-devel expat-devel pcre-devel libmemcached-devel cyrus-sasl* -y
wget -O lsmcd-master.zip https://cyberpanel.sh/codeload.github.com/litespeedtech/lsmcd/zip/master
unzip lsmcd-master.zip
Current_Dir = $( pwd )
cd " $Current_Dir /lsmcd-master " || exit
./fixtimestamp.sh
./configure CFLAGS = " -O3" CXXFLAGS = " -O3"
make
make install
systemctl enable lsmcd
systemctl start lsmcd
cd " $Current_Dir " || exit
else
DEBIAN_FRONTEND = noninteractive apt install build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev git -y
wget -O lsmcd-master.zip https://cyberpanel.sh/codeload.github.com/litespeedtech/lsmcd/zip/master
unzip lsmcd-master.zip
Current_Dir = $( pwd )
cd " $Current_Dir /lsmcd-master " || exit
./fixtimestamp.sh
./configure CFLAGS = " -O3" CXXFLAGS = " -O3"
make
make install
cd " $Current_Dir " || exit
systemctl enable lsmcd
systemctl start lsmcd
fi
}
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_Addon_Memcached( ) {
if [ [ $Server_OS = "CentOS" ] ] ; then
yum install -y lsphp??-memcached lsphp??-pecl-memcached
if [ [ $Total_RAM -eq "2048" ] ] || [ [ $Total_RAM -gt "2048" ] ] ; then
Post_Install_Addon_Mecached_LSMCD
else
yum install -y memcached
sed -i 's|OPTIONS=""|OPTIONS="-l 127.0.0.1 -U 0"|g' /etc/sysconfig/memcached
#turn off UDP and bind to 127.0.0.1 only
systemctl enable memcached
systemctl start memcached
fi
fi
if [ [ $Server_OS = "Ubuntu" ] ] ; then
DEBIAN_FRONTEND = noninteractive apt install -y "lsphp*-memcached"
if [ [ " $Total_RAM " -eq "2048" ] ] || [ [ " $Total_RAM " -gt "2048" ] ] ; then
Post_Install_Addon_Mecached_LSMCD
else
DEBIAN_FRONTEND = noninteractive apt install -y memcached
systemctl enable memcached
systemctl start memcached
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
fi
2020-05-13 20:20:23 +05:00
2021-03-09 15:13:32 +01:00
if pgrep "lsmcd" ; then
echo -e "\n\nLiteSpeed Memcached installed and running..."
fi
2019-12-12 14:26:54 +05:00
2021-03-09 15:13:32 +01:00
if pgrep "memcached" ; then
echo -e "\n\nMemcached installed and running..."
fi
}
2019-12-31 17:27:04 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_Addon_Redis( ) {
if [ [ " $Server_OS " = "CentOS" ] ] ; then
if [ [ " $Server_OS_Version " = "8" ] ] ; then
yum install -y lsphp??-redis redis
else
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --disable remi
yum-config-manager --disable remi-safe
yum -y --enablerepo= remi install redis
fi
fi
if [ [ $Server_OS = "Ubuntu" ] ] ; then
DEBIAN_FRONTEND = noninteractive apt install -y "lsphp*-redis" redis
fi
if ifconfig -a | grep inet6; then
echo -e "\nIPv6 detected...\n"
else
sed -i 's|bind 127.0.0.1 ::1|bind 127.0.0.1|g' /etc/redis/redis.conf
echo -e "\n no IPv6 detected..."
fi
if [ [ $Server_OS = "Ubuntu" ] ] ; then
systemctl stop redis-server
rm -f /var/run/redis/redis-server.pid
systemctl enable redis-server
systemctl start redis-server
else
systemctl enable redis
systemctl start redis
fi
if pgrep "redis" ; then
echo -e "\n\nRedis installed and running..."
fi
}
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Post_Install_PHP_Session_Setup( ) {
echo -e "\nSetting up PHP session storage path...\n"
wget -O /root/php_session_script.sh " ${ Git_Content_URL } /stable/CPScripts/setup_php_sessions.sh "
chmod +x /root/php_session_script.sh
bash /root/php_session_script.sh
rm -f /root/php_session_script.sh
2021-03-14 10:33:32 +05:00
Debug_Log2 "Setting up PHP session conf...,90"
2021-03-09 15:13:32 +01:00
}
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Post_Install_PHP_TimezoneDB( ) {
Current_Dir = " $( pwd ) "
rm -f /usr/local/lsws/cyberpanel-tmp
mkdir /usr/local/lsws/cyberpanel-tmp
cd /usr/local/lsws/cyberpanel-tmp || exit
wget -O timezonedb.tgz https://cyberpanel.sh/pecl.php.net/get/timezonedb
tar xzvf timezonedb.tgz
cd timezonedb-* || exit
if [ [ " $Server_OS " = "Ubuntu" ] ] ; then
DEBIAN_FRONTEND = noninteractive apt install libmagickwand-dev pkg-config build-essential -y
DEBIAN_FRONTEND = noninteractive apt install -y lsphp*-dev
else
yum remove -y lsphp??-mysql
yum install -y lsphp??-mysqlnd
yum install -y lsphp??-devel make gcc glibc-devel libmemcached-devel zlib-devel
fi
for PHP_Version in /usr/local/lsws/lsphp?? ;
do
PHP_INI_Path = $( find " $PHP_Version " -name php.ini)
if [ [ " $Server_OS " = "CentOS" ] ] ; then
if [ [ ! -d " ${ PHP_Version } /tmp " ] ] ; then
mkdir " ${ PHP_Version } /tmp "
fi
" ${ PHP_Version } " /bin/pecl channel-update pecl.php.net
" ${ PHP_Version } " /bin/pear config-set temp_dir " ${ PHP_Version } /tmp "
" ${ PHP_Version } " /bin/phpize
./configure --with-php-config= " ${ PHP_Version } " /bin/php-config
make
make install
echo "extension=timezonedb.so" > " ${ PHP_Version } /etc/php.d/20-timezone.ini "
make clean
sed -i 's|expose_php = On|expose_php = Off|g' " $PHP_INI_Path "
sed -i 's|mail.add_x_header = On|mail.add_x_header = Off|g' " $PHP_INI_Path "
2020-10-11 12:38:40 -04:00
else
2021-03-09 15:13:32 +01:00
" ${ PHP_Version } " /bin/phpize
./configure --with-php-config= " ${ PHP_Version } " /bin/php-config
make
make install
echo "extension=timezonedb.so" > " /usr/local/lsws/ ${ PHP_Version : 16 : 7 } /etc/php/ ${ PHP_Version : 21 : 1 } . ${ PHP_Version : 22 : 1 } /mods-available/20-timezone.ini "
make clean
sed -i 's|expose_php = On|expose_php = Off|g' " $PHP_INI_Path "
sed -i 's|mail.add_x_header = On|mail.add_x_header = Off|g' " $PHP_INI_Path "
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
done
rm -rf /usr/local/lsws/cyberpanel-tmp
cd " $Current_Dir " || exit
2021-03-14 10:33:32 +05:00
Debug_Log2 "Installing timezoneDB...,95"
2021-03-09 15:13:32 +01:00
}
Post_Install_Regenerate_Webadmin_Console_Passwd( ) {
if [ [ " $Server_Edition " = "OLS" ] ] ; then
PHP_Command = "admin_php"
else
PHP_Command = "admin_php5"
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Webadmin_Pass = $(
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16
echo ''
)
Encrypt_string = $( /usr/local/lsws/admin/fcgi-bin/${ PHP_Command } /usr/local/lsws/admin/misc/htpasswd.php " ${ Webadmin_Pass } " )
echo "" >/usr/local/lsws/admin/conf/htpasswd
echo " admin: $Encrypt_string " >/usr/local/lsws/admin/conf/htpasswd
echo " ${ Webadmin_Pass } " >/etc/cyberpanel/webadmin_passwd
chmod 600 /etc/cyberpanel/webadmin_passwd
}
Post_Install_Setup_Watchdog( ) {
if [ [ " $Watchdog " = "On" ] ] ; then
wget -O /etc/cyberpanel/watchdog.sh " ${ Git_Content_URL } /stable/CPScripts/watchdog.sh "
chmod 700 /etc/cyberpanel/watchdog.sh
ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog
#shellcheck disable=SC2009
pid = $( ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}' )
if [ [ $pid = "" ] ] ; then
nohup watchdog lsws >/dev/null 2>& 1 &
fi
echo -e "Checking MariaDB ..."
#shellcheck disable=SC2009
pid = $( ps aux | grep "watchdog mariadb" | grep -v grep | awk '{print $2}' )
if [ [ $pid = "" ] ] ; then
nohup watchdog mariadb >/dev/null 2>& 1 &
fi
if [ [ " $Server_OS " = "CentOS" ] ] ; then
echo " nohup watchdog lsws > /dev/null 2>&1 &
nohup watchdog mariadb > /dev/null 2>& 1 & " >>/etc/rc.d/rc.local
else
echo " nohup watchdog lsws > /dev/null 2>&1 &
nohup watchdog mariadb > /dev/null 2>& 1 & " >>/etc/rc.local
2020-10-11 12:38:40 -04:00
fi
2021-03-09 15:13:32 +01:00
echo -e "\nSetting up WatchDog..."
fi
}
2020-03-07 21:22:53 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_Setup_Utility( ) {
if [ [ ! -f /usr/bin/cyberpanel_utility ] ] ; then
wget -q -O /usr/bin/cyberpanel_utility https://cyberpanel.sh/misc/cyberpanel_utility.sh
chmod 700 /usr/bin/cyberpanel_utility
fi
}
2020-03-07 21:22:53 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_Display_Final_Info( ) {
2021-04-18 01:44:12 -04:00
RainloopAdminPass = $( grep SetPassword /usr/local/CyberCP/public/rainloop.php| sed -e 's|$oConfig->SetPassword(||g' -e "s|');||g" -e "s|'||g" )
2021-03-09 15:13:32 +01:00
Elapsed_Time = " $(( Time_Count / 3600 )) hrs $(( ( SECONDS / 60 ) % 60 )) min $(( Time_Count % 60 )) sec "
echo "###################################################################"
echo " CyberPanel Successfully Installed "
echo " "
echo " Current Disk usage : $( df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}' ) "
echo " "
echo " Current RAM usage : $( free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }' ) "
echo " "
2021-04-18 01:44:12 -04:00
echo " Installation time : $Elapsed_Time "
2021-03-09 15:13:32 +01:00
echo " "
echo " Visit: https:// $Server_IP :8090 "
echo " Panel username: admin "
if [ [ " $Custom_Pass " = "True" ] ] ; then
echo " Panel password: ***** "
else
echo " Panel password: $Admin_Pass "
fi
2021-04-18 01:44:12 -04:00
echo " Visit: https:// $Server_IP :7080 "
echo " WebAdmin console username: admin "
echo " WebAdmin console password: $Webadmin_Pass "
echo " "
echo " Visit: https:// $Server_IP :8090/rainloop/?admin "
echo " Rainloop Admin username: admin "
echo " Rainloop Admin password: $RainloopAdminPass "
2021-03-09 15:13:32 +01:00
echo " "
echo -e " Run \e[31mcyberpanel help\e[39m to get FAQ info"
echo -e " Run \e[31mcyberpanel upgrade\e[39m to upgrade it to latest version."
echo -e " Run \e[31mcyberpanel utility\e[39m to access some handy tools ."
echo " "
echo " Website : https://www.cyberpanel.net "
echo " Forums : https://forums.cyberpanel.net "
echo " Wikipage: https://docs.cyberpanel.net "
2021-04-18 01:44:12 -04:00
echo " Docs : https://cyberpanel.net/docs/ "
2021-03-09 15:13:32 +01:00
echo " "
echo -e " Enjoy your accelerated Internet by "
echo -e " CyberPanel & $Word "
echo "###################################################################"
if [ [ " $Server_Provider " != "Undefined" ] ] ; then
echo -e " \033[0;32m $Server_Provider \033[39m detected... "
echo -e "This provider has a \e[31mnetwork-level firewall\033[39m"
else
echo -e "If your provider has a \e[31mnetwork-level firewall\033[39m"
fi
echo -e "Please make sure you have opened following port for both in/out:"
echo -e "\033[0;32mTCP: 8090\033[39m for CyberPanel"
echo -e "\033[0;32mTCP: 80\033[39m, \033[0;32mTCP: 443\033[39m and \033[0;32mUDP: 443\033[39m for webserver"
echo -e "\033[0;32mTCP: 21\033[39m and \033[0;32mTCP: 40110-40210\033[39m for FTP"
echo -e "\033[0;32mTCP: 25\033[39m, \033[0;32mTCP: 587\033[39m, \033[0;32mTCP: 465\033[39m, \033[0;32mTCP: 110\033[39m, \033[0;32mTCP: 143\033[39m and \033[0;32mTCP: 993\033[39m for mail service"
echo -e "\033[0;32mTCP: 53\033[39m and \033[0;32mUDP: 53\033[39m for DNS service"
if ! timeout 3 telnet mx.zoho.com 25 | grep "Escape" >/dev/null 2>& 1; then
echo -e "Your provider seems \e[31mblocked\033[39m port 25 , E-mail sending may \e[31mnot\033[39m work properly."
fi
2021-03-29 20:47:08 +02:00
Debug_Log2 "Completed [200]"
2021-03-09 15:13:32 +01:00
if [ [ " $Silent " != "On" ] ] ; then
printf "%s" "Would you like to restart your server now? [y/N]: "
read -r Tmp_Input
if [ [ " ${ Tmp_Input ^^ } " = *Y* ] ] ; then
reboot
fi
fi
2021-03-29 20:47:08 +02:00
2020-01-17 15:25:27 +01:00
}
2021-03-09 15:13:32 +01:00
Post_Install_Regenerate_Cert( ) {
cat <<EOF >/root/cyberpanel/cert_conf
2020-03-10 04:09:22 +01:00
[ req]
prompt = no
distinguished_name = cyberpanel
[ cyberpanel]
commonName = www.example.com
countryName = CP
localityName = CyberPanel
organizationName = CyberPanel
organizationalUnitName = CyberPanel
stateOrProvinceName = CP
emailAddress = mail@example.com
name = CyberPanel
surname = CyberPanel
givenName = CyberPanel
initials = CP
dnQualifier = CyberPanel
[ server_exts]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
EOF
2021-03-09 15:13:32 +01:00
openssl req -x509 -config /root/cyberpanel/cert_conf -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout /usr/local/lscp/conf/key.pem -out /usr/local/lscp/conf/cert.pem
if [ [ " $Server_Edition " = "OLS" ] ] ; then
Key_Path = "/usr/local/lsws/admin/conf/webadmin.key"
Cert_Path = "/usr/local/lsws/admin/conf/webadmin.crt"
else
Key_Path = "/usr/local/lsws/admin/conf/cert/admin.key"
Cert_Path = "/usr/local/lsws/admin/conf/cert/admin.crt"
fi
openssl req -x509 -config /root/cyberpanel/cert_conf -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout " $Key_Path " -out " $Cert_Path "
rm -f /root/cyberpanel/cert_conf
}
2020-03-10 04:09:22 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_Required_Components( ) {
Debug_Log2 "Finalization..,80"
virtualenv -p /usr/bin/python3 /usr/local/CyberCP
if [ [ " $Server_OS " = "Ubuntu" ] ] && [ [ " $Server_OS_Version " = "20" ] ] ; then
# shellcheck disable=SC1091
. /usr/local/CyberCP/bin/activate
Check_Return
else
# shellcheck disable=SC1091
source /usr/local/CyberCP/bin/activate
Check_Return
fi
Retry_Command "pip install --default-timeout=3600 -r /usr/local/requirments.txt"
Check_Return "requirments.txt" "no_exit"
chown -R cyberpanel:cyberpanel /usr/local/CyberCP/lib
chown -R cyberpanel:cyberpanel /usr/local/CyberCP/lib64 || true
}
2020-03-10 04:09:22 +01:00
2021-03-09 15:13:32 +01:00
Pre_Install_Setup_Git_URL( ) {
if [ [ $Server_Country != "CN" ] ] ; then
Git_User = "usmannasir"
Git_Content_URL = " https://raw.githubusercontent.com/ ${ Git_User } /cyberpanel "
Git_Clone_URL = " https://github.com/ ${ Git_User } /cyberpanel.git "
else
Git_User = "qtwrk"
Git_Content_URL = " https://gitee.com/ ${ Git_User } /cyberpanel/raw "
Git_Clone_URL = " https://gitee.com/ ${ Git_User } /cyberpanel.git "
fi
if [ [ " $Debug " = "On" ] ] ; then
Debug_Log "Git_URL" " $Git_Content_URL "
fi
2020-03-10 04:09:22 +01:00
}
2021-03-09 15:13:32 +01:00
Post_Install_Tweak( ) {
if [ [ -d /etc/pure-ftpd/conf ] ] ; then
echo "yes" >/etc/pure-ftpd/conf/ChrootEveryone
systemctl restart pure-ftpd-mysql
fi
if [ [ -f /etc/pure-ftpd/pure-ftpd.conf ] ] ; then
sed -i 's|NoAnonymous no|NoAnonymous yes|g' /etc/pure-ftpd/pure-ftpd.conf
fi
sed -i " s|lsws-5.3.8|lsws- $LSWS_Stable_Version |g " /usr/local/CyberCP/serverStatus/serverStatusUtil.py
sed -i " s|lsws-5.4.2|lsws- $LSWS_Stable_Version |g " /usr/local/CyberCP/serverStatus/serverStatusUtil.py
sed -i " s|lsws-5.3.5|lsws- $LSWS_Stable_Version |g " /usr/local/CyberCP/serverStatus/serverStatusUtil.py
if [ [ ! -f /usr/bin/cyberpanel_utility ] ] ; then
wget -q -O /usr/bin/cyberpanel_utility https://cyberpanel.sh/misc/cyberpanel_utility.sh
chmod 700 /usr/bin/cyberpanel_utility
fi
rm -rf /etc/profile.d/cyberpanel*
curl --silent -o /etc/profile.d/cyberpanel.sh https://cyberpanel.sh/?banner 2>/dev/null
chmod 700 /etc/profile.d/cyberpanel.sh
echo " $Admin_Pass " > /etc/cyberpanel/adminPass
/usr/local/CyberPanel/bin/python /usr/local/CyberCP/plogical/adminPass.py --password " $Admin_Pass "
mkdir -p /etc/opendkim
echo '/usr/local/CyberPanel/bin/python /usr/local/CyberCP/plogical/adminPass.py --password $@' > /usr/bin/adminPass
echo "systemctl restart lscpd" >> /usr/bin/adminPass
chmod 700 /usr/bin/adminPass
2021-03-17 14:16:54 +01:00
rm -f /usr/bin/php
ln -s /usr/local/lsws/lsphp74/bin/php /usr/bin/php
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS " = "CentOS" ] ] ; then
#all centos7/8 post change goes here
sed -i 's|error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT|error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT|g' /usr/local/lsws/{ lsphp72,lsphp73} /etc/php.ini
#fix php.ini & issue
sed -i 's|/usr/local/lsws/bin/lswsctrl restart|systemctl restart lsws|g' /var/spool/cron/root
if [ [ " $Server_OS_Version " = "7" ] ] ; then
#all centos 7 specific post change goes here
2021-05-21 16:15:57 +02:00
if ! yum list installed lsphp74-devel ; then
yum install -y lsphp74-devel
fi
if [ [ ! -f /usr/local/lsws/lsphp74/lib64/php/modules/zip.so ] ] ; then
if yum list installed libzip-devel >/dev/null 2>& 1 ; then
yum remove -y libzip-devel
fi
yum install -y https://cyberpanel.sh/misc/libzip-0.11.2-6.el7.psychotic.x86_64.rpm
yum install -y https://cyberpanel.sh/misc/libzip-devel-0.11.2-6.el7.psychotic.x86_64.rpm
yum install lsphp74-devel
if [ [ ! -d /usr/local/lsws/lsphp74/tmp ] ] ; then
mkdir /usr/local/lsws/lsphp74/tmp
fi
/usr/local/lsws/lsphp74/bin/pecl channel-update pecl.php.net
/usr/local/lsws/lsphp74/bin/pear config-set temp_dir /usr/local/lsws/lsphp74/tmp
if /usr/local/lsws/lsphp74/bin/pecl install zip ; then
echo "extension=zip.so" >/usr/local/lsws/lsphp74/etc/php.d/20-zip.ini
chmod 755 /usr/local/lsws/lsphp74/lib64/php/modules/zip.so
else
echo -e "\nlsphp74-zip compilation failed..."
fi
#fix compile lsphp74-zip on centos 7
fi
2020-10-11 12:38:40 -04:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "8" ] ] ; then
#all centos 8 specific post change goes here
:
2020-10-11 12:38:40 -04:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
elif [ [ " $Server_OS " = "Ubuntu" ] ] ; then
#all ubuntu18/20 post change goes here
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
sed -i 's|/usr/local/lsws/bin/lswsctrl restart|systemctl restart lsws|g' /var/spool/cron/crontabs/root
if [ [ ! -f /usr/sbin/ipset ] ] ; then
ln -s /sbin/ipset /usr/sbin/ipset
2020-10-11 12:38:40 -04:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "18" ] ] ; then
#all ubuntu 18 specific post change goes here
:
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_OS_Version " = "20" ] ] ; then
#all ubuntu 20 specific post change goes here
2021-03-17 16:40:35 +01:00
:
2021-03-09 15:13:32 +01:00
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
fi
2020-01-17 15:25:27 +01:00
2020-11-11 13:14:32 +05:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Edition " = "OLS" ] ] ; then
Word = "OpenLiteSpeed"
else
Word = "LiteSpeed Enterprise"
sed -i 's|Include /usr/local/lsws/conf/rules.conf||g' /usr/local/lsws/conf/modsec.conf
fi
2020-05-11 13:43:04 +05:00
2021-03-09 15:13:32 +01:00
systemctl restart lscpd >/dev/null 2>& 1
/usr/local/lsws/bin/lswsctrl stop >/dev/null 2>& 1
systemctl stop lsws >/dev/null 2>& 1
systemctl start lsws >/dev/null 2>& 1
echo -e "\nFinalizing...\n"
echo -e "Cleaning up...\n"
rm -rf /root/cyberpanel
rm -f /tmp/cyberpanel_debug.log
rm -f /tmp/lsws_latest
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Server_Country " = "CN" ] ] ; then
Post_Install_CN_Replacement
fi
2020-10-11 12:38:40 -04:00
2021-04-24 19:21:23 -04:00
# If valid hostname is set that resolves externally we can issue an ssl. This will create the hostname as a website so we can issue the SSL and do our first login without SSL warnings or exceptions needed.
HostName = $( hostname --fqdn) ; [ -n " $( dig @1.1.1.1 +short " $HostName " ) " ] && echo " $HostName resolves to valid IP. Setting up hostname SSL " && cyberpanel createWebsite --package Default --owner admin --domainName $( hostname --fqdn) --email root@localhost --php 7.4 && cyberpanel hostNameSSL --domainName $( hostname --fqdn)
2021-04-18 01:44:12 -04:00
2021-03-09 15:13:32 +01:00
}
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Post_Install_CN_Replacement( ) {
sed -i 's|wp core download|wp core download https://cyberpanel.sh/wordpress.org/latest.tar.gz|g' /usr/local/CyberCP/plogical/applicationInstaller.py
sed -i 's|https://raw.githubusercontent.com/|https://cyberpanel.sh/raw.githubusercontent.com/|g' /usr/local/CyberCP/plogical/applicationInstaller.py
sed -i 's|wp plugin install litespeed-cache|wp plugin install https://cyberpanel.sh/downloads.wordpress.org/plugin/litespeed-cache.zip|g' /usr/local/CyberCP/plogical/applicationInstaller.py
2021-03-14 03:57:32 +01:00
sed -i 's|https://www.litespeedtech.com/|https://cyberpanel.sh/www.litespeedtech.com/|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
sed -i 's|http://license.litespeedtech.com/|https://cyberpanel.sh/license.litespeedtech.com/|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
2021-03-09 15:13:32 +01:00
}
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
echo -e "\nInitializing...\n"
2020-01-17 15:29:56 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $* " = *"--debug" * ] ] ; then
Debug = "On"
rm -f /tmp/cyberpanel_debug.log
echo -e " $( date) " > /tmp/cyberpanel_debug.log
fi
2020-02-01 15:48:29 +01:00
2021-03-09 15:13:32 +01:00
Set_Default_Variables
2020-01-28 18:26:00 +01:00
2021-03-09 15:13:32 +01:00
Check_Root
2020-01-28 18:26:00 +01:00
2021-03-09 15:13:32 +01:00
Check_Server_IP " $@ "
2020-05-14 14:18:23 +05:00
2021-03-09 15:13:32 +01:00
Check_OS
2020-10-11 12:38:40 -04:00
2021-04-20 19:49:51 -04:00
Check_Virtualization
2020-10-11 12:38:40 -04:00
2021-03-09 15:13:32 +01:00
Check_Panel
2020-10-11 12:38:40 -04:00
2021-04-18 01:44:12 -04:00
Check_Process
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Check_Provider
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Check_Argument " $@ "
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ $Silent = "On" ] ] ; then
Argument_Mode
else
Interactive_Mode
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Time_Count = "0"
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Pre_Install_Setup_Repository
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Pre_Install_Setup_Git_URL
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Pre_Install_Required_Components
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Pre_Install_System_Tweak
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
Main_Installation
#Python install in here
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Memcached " = "On" ] ] ; then
Post_Install_Addon_Memcached
fi
2020-01-17 15:25:27 +01:00
2021-03-09 15:13:32 +01:00
if [ [ " $Redis " = "On" ] ] ; then
Post_Install_Addon_Redis
fi
2020-04-24 17:31:02 +05:00
2021-03-09 15:13:32 +01:00
Post_Install_Required_Components
Post_Install_PHP_Session_Setup
Post_Install_PHP_TimezoneDB
Post_Install_Regenerate_Cert
Post_Install_Regenerate_Webadmin_Console_Passwd
Post_Install_Setup_Watchdog
Post_Install_Setup_Utility
Post_Install_Tweak
2020-04-24 17:31:02 +05:00
2021-03-14 03:57:32 +01:00
Post_Install_Display_Final_Info