diff --git a/install/simple_install.py b/install/simple_install.py new file mode 100644 index 000000000..5c2f5ae96 --- /dev/null +++ b/install/simple_install.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 +""" +Simplified CyberPanel Installation Script +Based on 2.4.4 approach but with AlmaLinux 9 fixes +""" + +import os +import sys +import subprocess +import platform + +class SimpleInstaller: + def __init__(self): + self.distro = self.detect_os() + self.mysql_password = "cyberpanel123" + + def detect_os(self): + """Detect operating system""" + try: + with open('/etc/os-release', 'r') as f: + content = f.read() + + if 'AlmaLinux 9' in content: + return 'almalinux9' + elif 'AlmaLinux 8' in content: + return 'almalinux8' + elif 'Ubuntu' in content: + return 'ubuntu' + elif 'CentOS' in content: + return 'centos' + else: + return 'unknown' + except: + return 'unknown' + + def run_command(self, command, shell=True): + """Run system command""" + try: + result = subprocess.run(command, shell=shell, capture_output=True, text=True) + return result.returncode == 0, result.stdout, result.stderr + except Exception as e: + return False, "", str(e) + + def install_basic_dependencies(self): + """Install basic dependencies like 2.4.4""" + print("Installing basic dependencies...") + + if self.distro == 'almalinux9': + # AlmaLinux 9 specific - minimal approach + commands = [ + "dnf update -y", + "dnf install -y epel-release", + "dnf install -y wget curl unzip zip rsync firewalld git python3 python3-pip", + "dnf install -y mariadb-server mariadb-client", + "dnf install -y ImageMagick gd libicu oniguruma aspell libc-client", + "systemctl enable mariadb", + "systemctl start mariadb" + ] + elif self.distro == 'almalinux8': + commands = [ + "yum update -y", + "yum install -y epel-release", + "yum install -y wget curl unzip zip rsync firewalld git python3 python3-pip", + "yum install -y mariadb-server mariadb-client", + "yum install -y ImageMagick gd libicu oniguruma aspell libc-client", + "systemctl enable mariadb", + "systemctl start mariadb" + ] + else: + # Default commands for other OS + commands = [ + "apt update -y" if 'ubuntu' in self.distro else "yum update -y", + "apt install -y wget curl unzip zip rsync git python3 python3-pip" if 'ubuntu' in self.distro else "yum install -y wget curl unzip zip rsync git python3 python3-pip" + ] + + for cmd in commands: + success, stdout, stderr = self.run_command(cmd) + if not success: + print(f"Warning: Command failed: {cmd}") + print(f"Error: {stderr}") + + def setup_mysql(self): + """Setup MySQL with simple approach""" + print("Setting up MySQL...") + + # Create password file + os.makedirs('/etc/cyberpanel', exist_ok=True) + with open('/etc/cyberpanel/mysqlPassword', 'w') as f: + f.write(self.mysql_password) + os.chmod('/etc/cyberpanel/mysqlPassword', 0o600) + + # Secure MySQL installation + mysql_secure_cmd = f""" + mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '{self.mysql_password}';" + mysql -u root -p{self.mysql_password} -e "DELETE FROM mysql.user WHERE User='';" + mysql -u root -p{self.mysql_password} -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" + mysql -u root -p{self.mysql_password} -e "DROP DATABASE IF EXISTS test;" + mysql -u root -p{self.mysql_password} -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" + mysql -u root -p{self.mysql_password} -e "FLUSH PRIVILEGES;" + """ + + self.run_command(mysql_secure_cmd) + + def install_cyberpanel(self): + """Install CyberPanel using the simple approach""" + print("Installing CyberPanel...") + + # Download and run the main installer + commands = [ + "rm -f cyberpanel.sh", + "curl -o cyberpanel.sh https://cyberpanel.sh/?dl&AlmaLinux9" if self.distro == 'almalinux9' else "curl -o cyberpanel.sh https://cyberpanel.sh/?dl&CentOS8", + "chmod +x cyberpanel.sh", + "./cyberpanel.sh" + ] + + for cmd in commands: + success, stdout, stderr = self.run_command(cmd) + if not success: + print(f"Error running: {cmd}") + print(f"Error: {stderr}") + return False + + return True + + def install(self): + """Main installation process""" + print("Starting simplified CyberPanel installation...") + print(f"Detected OS: {self.distro}") + + # Install basic dependencies + self.install_basic_dependencies() + + # Setup MySQL + self.setup_mysql() + + # Install CyberPanel + if self.install_cyberpanel(): + print("CyberPanel installation completed successfully!") + else: + print("CyberPanel installation failed!") + +if __name__ == "__main__": + installer = SimpleInstaller() + installer.install() diff --git a/simple_install.sh b/simple_install.sh new file mode 100644 index 000000000..3d3cdb5b8 --- /dev/null +++ b/simple_install.sh @@ -0,0 +1,114 @@ +#!/bin/sh + +# Simplified CyberPanel Installation Script +# Based on 2.4.4 approach with AlmaLinux 9 fixes + +OUTPUT=$(cat /etc/*release) + +# Detect OS and set appropriate variables +if echo $OUTPUT | grep -q "AlmaLinux 9" ; then + echo -e "\nDetecting AlmaLinux 9...\n" + SERVER_OS="AlmaLinux9" + PKG_MGR="dnf" +elif echo $OUTPUT | grep -q "AlmaLinux 8" ; then + echo -e "\nDetecting AlmaLinux 8...\n" + SERVER_OS="AlmaLinux8" + PKG_MGR="yum" +elif echo $OUTPUT | grep -q "Ubuntu 22.04" ; then + echo -e "\nDetecting Ubuntu 22.04...\n" + SERVER_OS="Ubuntu2204" + PKG_MGR="apt" +elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then + echo -e "\nDetecting Ubuntu 20.04...\n" + SERVER_OS="Ubuntu2004" + PKG_MGR="apt" +elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then + echo -e "\nDetecting CentOS 8...\n" + SERVER_OS="CentOS8" + PKG_MGR="yum" +else + echo -e "\nUnsupported OS detected. This script supports:\n" + echo -e "AlmaLinux: 8, 9\n" + echo -e "Ubuntu: 20.04, 22.04\n" + echo -e "CentOS: 8\n" + exit 1 +fi + +echo "Installing basic dependencies..." + +# Install basic packages +if [ "$PKG_MGR" = "dnf" ]; then + dnf update -y + dnf install -y epel-release + dnf install -y wget curl unzip zip rsync firewalld git python3 python3-pip + dnf install -y mariadb-server mariadb-client + dnf install -y ImageMagick gd libicu oniguruma aspell libc-client +elif [ "$PKG_MGR" = "yum" ]; then + yum update -y + yum install -y epel-release + yum install -y wget curl unzip zip rsync firewalld git python3 python3-pip + yum install -y mariadb-server mariadb-client + yum install -y ImageMagick gd libicu oniguruma aspell libc-client +elif [ "$PKG_MGR" = "apt" ]; then + apt update -y + apt install -y wget curl unzip zip rsync git python3 python3-pip + apt install -y mariadb-server mariadb-client + apt install -y imagemagick php-gd php-intl php-mbstring php-pspell +fi + +# Start and enable MariaDB +echo "Starting MariaDB..." +systemctl enable mariadb +systemctl start mariadb + +# Create MySQL password file +echo "Setting up MySQL..." +mkdir -p /etc/cyberpanel +echo "cyberpanel123" > /etc/cyberpanel/mysqlPassword +chmod 600 /etc/cyberpanel/mysqlPassword + +# Secure MySQL installation +mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'cyberpanel123';" 2>/dev/null || true +mysql -u root -pcyberpanel123 -e "DELETE FROM mysql.user WHERE User='';" 2>/dev/null || true +mysql -u root -pcyberpanel123 -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" 2>/dev/null || true +mysql -u root -pcyberpanel123 -e "DROP DATABASE IF EXISTS test;" 2>/dev/null || true +mysql -u root -pcyberpanel123 -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" 2>/dev/null || true +mysql -u root -pcyberpanel123 -e "FLUSH PRIVILEGES;" 2>/dev/null || true + +# Configure firewall +echo "Configuring firewall..." +if [ "$PKG_MGR" = "dnf" ] || [ "$PKG_MGR" = "yum" ]; then + systemctl enable firewalld + systemctl start firewalld + firewall-cmd --permanent --add-port=8090/tcp + firewall-cmd --permanent --add-port=7080/tcp + firewall-cmd --permanent --add-port=80/tcp + firewall-cmd --permanent --add-port=443/tcp + firewall-cmd --permanent --add-port=21/tcp + firewall-cmd --permanent --add-port=25/tcp + firewall-cmd --permanent --add-port=587/tcp + firewall-cmd --permanent --add-port=465/tcp + firewall-cmd --permanent --add-port=110/tcp + firewall-cmd --permanent --add-port=143/tcp + firewall-cmd --permanent --add-port=993/tcp + firewall-cmd --permanent --add-port=995/tcp + firewall-cmd --permanent --add-port=53/tcp + firewall-cmd --permanent --add-port=53/udp + firewall-cmd --reload +fi + +# Download and install CyberPanel +echo "Downloading CyberPanel..." +rm -f cyberpanel.sh +curl --silent -o cyberpanel.sh "https://cyberpanel.sh/?dl&$SERVER_OS" 2>/dev/null + +if [ -f "cyberpanel.sh" ]; then + echo "Installing CyberPanel..." + chmod +x cyberpanel.sh + ./cyberpanel.sh +else + echo "Failed to download CyberPanel installer!" + exit 1 +fi + +echo "Installation completed!"