CyberPanel nginx for Plesk is a Plesk extension and nginx replacement layer. It lets a Plesk server run nginx-cyberpanel on public ports 80 and 443, while Plesk continues managing domains, Apache configuration, vhosts, SSL certificates, PHP handlers, and WordPress cache signals.
The installer is safe by default. It installs the Plesk extension and stages the correct nginx-cyberpanel binary, but it does not take over live traffic automatically. You enable takeover later from the Plesk UI after checking status and diagnostics.
Requirements
- A Plesk server with root SSH access.
- x86_64 CPU architecture.
- One of the supported Linux platforms listed below.
- A maintenance window for the actual takeover step.
Supported platforms
| Platform | Binary used by installer |
|---|---|
| Ubuntu 22, Ubuntu 24, Debian 12 | nginx-cyberpanel-1.0.0-x86_64-ubuntu |
| RHEL 9, AlmaLinux 9, Rocky 9 | nginx-cyberpanel-1.0.0-x86_64-rhel9 |
| RHEL 8, AlmaLinux 8, Rocky 8 | nginx-cyberpanel-1.0.0-x86_64-rhel8 |
Step 1 — Install the extension
Log in to your Plesk server as root and run:
bash <(curl -sSL https://cyberpanel.net/nginx-plesk-install.sh)
The installer detects the OS and architecture, installs runtime libraries where needed, downloads the Plesk extension and the matching binary, installs the extension, copies the binary to /usr/local/sbin/nginx-cyberpanel, and leaves default Plesk Apache and nginx active. Expected state afterwards: installed-not-active.
Step 2 — Confirm Plesk is still serving sites
cat /etc/nginx-cyberpanel/state
systemctl is-active apache2 nginx nginx-cyberpanel
ss -ltnp 'sport = :80 or sport = :443 or sport = :7080 or sport = :7081'
curl -skI https://example.com/ | sed -n '1,10p'
Expected before takeover: state installed-not-active, Apache active, Plesk nginx active, nginx-cyberpanel inactive, server: nginx. Replace example.com with a domain hosted on your Plesk server.
Step 3 — Open the CyberPanel nginx extension
In Plesk go to Extensions > CyberPanel nginx. Tabs: Overview (takeover status, enable/disable/reload), Cache (purge globally or by URL), Config (synthesized config + toggles), SSL (Let's Encrypt issuance), Diagnose (takeover, cache, gzip, brotli, HTTP/2, LSCache, PID shim, Redis), and License.
Step 4 — Review diagnostics
Open the Diagnose tab before takeover. It checks takeover/service state, the cache directory at /var/cache/nginx-cyberpanel/lscache, gzip and brotli config, HTTP/2 on SSL listeners, LiteSpeed Cache plugin signal support, the Plesk PID shim, and the Redis object cache. Fix any reported problem before enabling takeover.
Step 5 — Enable takeover
When ready, click Extensions > CyberPanel nginx > Enable takeover. The helper validates the generated nginx configuration before changing services; if validation fails, Apache and Plesk nginx are left unchanged.
| Port | Expected owner during takeover |
|---|---|
:80 | nginx-cyberpanel |
:443 | nginx-cyberpanel |
127.0.0.1:7080 | Apache backend |
127.0.0.1:7081 | Apache SSL backend |
:8443 | Plesk panel |
Step 6 — Verify active takeover
cat /etc/nginx-cyberpanel/state
systemctl is-active apache2 nginx nginx-cyberpanel
curl -skI https://example.com/ | sed -n '1,10p'
Expected during takeover: state active, nginx-cyberpanel: active, server: nginx-cyberpanel/1.0.0, x-powered-by: CyberPanel-Nginx/1.0.0.
Using LiteSpeed Cache with WordPress
nginx-cyberpanel implements LiteSpeed Cache plugin signals: X-LiteSpeed-Cache-Control, X-LiteSpeed-Tag, X-LiteSpeed-Vary, PURGE support, and file-backed public cache storage. Test with a browser-like request:
curl -skI --compressed https://example.com/
A successful cached WordPress response shows x-litespeed-cache: hit,public.
Issuing SSL certificates
The SSL tab issues Let's Encrypt certificates for Plesk-managed domains. It normalizes domains to lowercase, strips trailing dots, validates domain and email syntax, rejects unmanaged domains before calling certbot/Plesk, and surfaces useful Let's Encrypt errors (DNS NXDOMAIN, domain not pointing to the server, rate limits, ACME validation detail).
Restoring default Plesk nginx and Apache
To uninstall and restore default Plesk behaviour:
bash <(curl -sSL https://cyberpanel.net/nginx-plesk-install.sh) --uninstall
After restore, public :80/:443 return to Plesk nginx and ports 7080/7081 to Apache.
Recommended rollout
- Run the one-line installer.
- Confirm Plesk is still serving sites with default nginx.
- Open the extension and review Diagnose.
- Enable takeover during a maintenance window.
- Verify public site headers and application behaviour.
- Test LSCache with
curl --compressed. - If needed, use restore controls or the uninstall command.
The install command is safe to run before the maintenance window because it does not switch traffic — the traffic switch happens only when the admin enables takeover. Release checksums for verifying downloads are on the changelog.