Handle the scenario where users install ModSecurity after CyberPanel is already installed with custom OpenLiteSpeed binaries. Problem: - When users click "Install ModSecurity" in CyberPanel UI, the system used package manager (yum/apt) to install stock ModSecurity - Stock ModSecurity is NOT ABI-compatible with custom OLS binaries - This causes immediate server crashes (segfaults) when installed Solution: - Detect if custom OLS binary is already installed before installing ModSecurity - If custom OLS detected, download compatible ModSecurity from cyberpanel.net - If stock OLS detected, use package manager as usual Implementation: - isCustomOLSBinaryInstalled(): Detects custom OLS by scanning binary for markers - detectBinarySuffix(): Determines Ubuntu vs RHEL binaries needed - installCompatibleModSecurity(): Downloads, verifies, and installs compatible ModSecurity - Modified installModSec(): Main entry point - routes to compatible installer if needed User flow: 1. User with custom OLS clicks "Install ModSecurity" in UI 2. System detects custom OLS binary is installed 3. System writes "Detected custom OpenLiteSpeed binary" to install log 4. System downloads OS-specific compatible ModSecurity from cyberpanel.net 5. System verifies SHA256 checksum 6. System backs up any existing ModSecurity 7. System installs compatible version with OLS restart 8. User sees "ModSecurity Installed (ABI-compatible version).[200]" Safety features: - Checksum verification before installation - Automatic backup of existing ModSecurity - Graceful OLS restart with timeout handling - Detailed logging to /home/cyberpanel/modSecInstallLog This prevents server crashes when users install ModSecurity after custom OLS binaries are already deployed.
CyberPanel
Web Hosting Control Panel powered by OpenLiteSpeed Fast • Secure • Scalable — Simplify hosting management with style.
Version: 2.5.5-dev • Updated: January 15, 2026
Key highlights
- ⚡ Performance first — OpenLiteSpeed + HTTP/3 + LSCache
- 🔒 Security by default — Auto SSL, FirewallD integration, 2FA, brute-force protection
- 📧 Integrated mail — Postfix, Dovecot, panel webmail (SSO/Sieve), SnappyMail
- 🗂 Backups & restore — One-click snapshots and rollbacks
- 👨💻 Developer friendly — Git manager, REST API, staging, PHP version switcher
Features
Security
- Auto SSL (Let's Encrypt)
- Firewall integrations (FirewallD, optional CSF export)
- 2FA (TOTP + WebAuthn/Passkey)
- AI-powered security scanner (optional)
Hosting & Websites
- OpenLiteSpeed (HTTP/3, QUIC)
- One-click WordPress (LSCache-ready)
- PHP per-site version selector
- File manager, FTP, SFTP
Email & DNS
- Postfix + Dovecot
- Panel webmail + SnappyMail
- DNS (PowerDNS) with easy zone management
Developer & Automation
- RESTful API (create/list/manage sites, users, packages)
- Git integration & staging
- Docker command execution support
Backups & Storage
- Local snapshots, remote backups (S3/AWS compatible)
- One-click restore and scheduled backups
Supported platforms (condensed)
| OS family | Recommended / Supported |
|---|---|
| AlmaLinux 10, 9, 8 | ✅ Recommended |
| CentOS 7 | ⚠️ Legacy — EOL |
| CloudLinux 9, 8 | ✅ Supported |
| Debian 13, 12, 11 | ✅ Supported |
| RHEL 9, 8 | ✅ Supported |
| RockyLinux 9, 8 | ✅ Supported |
| Ubuntu 24.04, 22.04, 20.04 | ✅ Recommended |
Architectures: x86_64 (primary), aarch64/ARM64 (supported). AlmaLinux is the recommended RHEL-compatible distribution. Test unsupported OS in staging first.
PHP support (short)
- ✅ Recommended: PHP 8.5, 8.4
- ⚠️ Security fixes only: PHP 8.3, 8.2, 8.1
- ❌ EOL / Deprecated: PHP 8.0, 7.4, 7.1, 7.2, 7.3 (no longer supported)
Third-party repositories may provide older or niche versions; verify compatibility before use. RHEL/Alma/Rocky: Remi RPM. Ubuntu/Debian: Ondrej PPA. See php.net/supported-versions.
Quick install
sh <(curl -s https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)
➡️ See guides/INSTALLATION.md (or docs/ on this repo) for platform-specific options and non-interactive installs.
Upgrade
The upgrade uses a modular loader (cyberpanel_upgrade.sh) that works on both stable and v2.5.5-dev. When run via the one-liner (no repo on disk), the loader fetches upgrade_modules/ from the chosen branch. Use preUpgrade.sh (recommended) or the direct loader URL below.
Upgrade to stable (recommended)
sh <(curl -sL https://raw.githubusercontent.com/master3395/cyberpanel/stable/preUpgrade.sh || wget -qO - https://raw.githubusercontent.com/master3395/cyberpanel/stable/preUpgrade.sh)
PreUpgrade downloads the loader from stable and runs it with -b stable, so modules are taken from the stable branch. No -b flag needed.
Post-upgrade: verify email, DNS, SSL, and run a smoke test on key sites.
Upgrade to v2.5.5-dev
Use -b v2.5.5-dev so the loader fetches modules from the dev branch.
# Interactive (branch + MariaDB prompts)
sh <(curl -sL https://raw.githubusercontent.com/master3395/cyberpanel/v2.5.5-dev/preUpgrade.sh || wget -qO - https://raw.githubusercontent.com/master3395/cyberpanel/v2.5.5-dev/preUpgrade.sh) -b v2.5.5-dev
# Non-interactive: v2.5.5-dev + MariaDB 11.8 (LTS) — recommended
sh <(curl -sL https://raw.githubusercontent.com/master3395/cyberpanel/v2.5.5-dev/preUpgrade.sh || wget -qO - https://raw.githubusercontent.com/master3395/cyberpanel/v2.5.5-dev/preUpgrade.sh) -b v2.5.5-dev --mariadb-version 11.8
MariaDB options: 10.11, 11.8 (LTS default), 12.x (e.g. 12.1, 12.2). Use --mariadb for 10.11, or --mariadb-version X.Y to set explicitly.
# MariaDB 10.11
sh <(curl -sL .../preUpgrade.sh) -b v2.5.5-dev --mariadb
# MariaDB 12.1
sh <(curl -sL .../preUpgrade.sh) -b v2.5.5-dev --mariadb-version 12.1
Direct loader (advanced)
If you prefer to run the upgrade script without preUpgrade (e.g. already have the branch in mind):
# Stable (default; modules fetched from stable)
sudo bash <(curl -sL https://raw.githubusercontent.com/master3395/cyberpanel/stable/cyberpanel_upgrade.sh)
# Dev (pass -b so modules are fetched from v2.5.5-dev)
sudo bash <(curl -sL https://raw.githubusercontent.com/master3395/cyberpanel/stable/cyberpanel_upgrade.sh) -b v2.5.5-dev
Optional flags (same as with preUpgrade): --mariadb-version 11.8, --debug, --mirror, etc.
Troubleshooting (common)
Command not found — install curl/wget/git/python3
# Ubuntu/Debian
sudo apt update && sudo apt install -y curl wget git python3
# RHEL/CentOS/Alma/Rocky
sudo yum install -y curl wget git python3
Port 8090 in use — find and stop conflicting process:
sudo ss -tlnp | grep :8090
sudo kill -9 <PID>
Logs & verification
systemctl status lscpd
curl -I http://localhost:8090
tail -f /usr/local/lscp/logs/error.log
journalctl -u lscpd -f
Recent fixes
- 02.02.2026 — Plugin updates: premiumPlugin & paypalPremiumPlugin unified verification (Plugin Grants, activation key, Patreon, PayPal, AES-256-CBC encryption). Installed Plugins UI: bulk activate/deactivate, freshness badges, removed Patreon messaging from front.
- 15.11.2025 — Hardened MySQL password rotation:
mysqlUtilities.changePasswordnow auto-resolves the backing MySQL account (user + host) even whenDBUsersmetadata is missing, preventing the historical[mysqlUtilities.changePassword] can only concatenate str (not "int")error. Regression tests live underTest/mysqlUtilities/, and you should restartlscpdafter deploying the patch so the helper reloads.
Testing
OLS Feature Test Suite
The OpenLiteSpeed feature test suite (128 tests) validates binary integrity, CyberPanel module, Auto-SSL config, SSL listener auto-mapping, .htaccess processing, ReadApacheConf directives, and more.
# Run from CyberPanel repo root
./tests/ols_test_setup.sh # One-time setup
./tests/ols_feature_tests.sh
Requires a live CyberPanel + OLS installation.
Resources
- Official site: https://cyberpanel.net
- Docs (KnowledgeBase): https://cyberpanel.net/KnowledgeBase/
- Community forum: https://community.cyberpanel.net
- GitHub: https://github.com/usmannasir/cyberpanel
- Guides folder: guides (API, INSTALLATION, UPGRADE, TROUBLESHOOTING)
💡 Hosting should be secure, simple, and fast. CyberPanel is built for that.