How to Install and Use CyberPanel nginx for Plesk

< All Topics
Print

How to Install and Use CyberPanel nginx for Plesk

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 performs these actions:

  1. Detects operating system and CPU architecture.
  2. Installs runtime libraries where needed.
  3. Downloads the CyberPanel nginx Plesk extension zip.
  4. Downloads the matching platform binary.
  5. Installs the Plesk extension.
  6. Copies the binary to /usr/local/sbin/nginx-cyberpanel.
  7. Leaves default Plesk Apache and nginx active.

After this step, public traffic is still served by default Plesk nginx. The expected state is installed-not-active.

Step 2: Confirm Plesk Is Still Serving Sites

Before enabling takeover, verify the server is still in the normal Plesk state:

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:

installed-not-active
apache2: active
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

The extension includes these tabs:

  • Overview: takeover status, enable, disable, and reload controls.
  • Cache: purge LSCache-compatible cache globally or by URL.
  • Config: synthesized config and runtime toggles.
  • SSL: Let’s Encrypt certificate issuance for managed domains.
  • Diagnose: takeover, cache, gzip, brotli, HTTP/2, LSCache, PID shim, and Redis checks.
  • License: license and domain-count status.

Step 4: Review Diagnostics

Open the Diagnose tab before takeover. It checks:

  • Takeover state and service state.
  • Cache directory at /var/cache/nginx-cyberpanel/lscache.
  • gzip configuration.
  • brotli configuration.
  • HTTP/2 on SSL listeners.
  • LiteSpeed Cache plugin signal support.
  • Plesk PID shim state.
  • Redis object cache service state.

If diagnostics show a problem, fix it before enabling takeover.

Step 5: Enable Takeover

When ready, click:

Extensions > CyberPanel nginx > Enable takeover

The takeover helper validates the generated nginx configuration before changing services. If config validation fails, Apache and Plesk nginx are not changed.

When takeover is active, expected port ownership is:

Port Expected owner
: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

After enabling takeover, run:

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 during takeover:

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, including:

  • X-LiteSpeed-Cache-Control
  • X-LiteSpeed-Tag
  • X-LiteSpeed-Vary
  • PURGE support
  • file-backed public cache storage

For gzip-compressed cache objects, test with a browser-like request:

curl -skI --compressed https://example.com/

A successful cached WordPress response can show:

x-litespeed-cache: hit,public

Plain curl without Accept-Encoding may show a miss when the stored cache object is gzip-specific.

Issuing SSL Certificates

The SSL tab can issue Let’s Encrypt certificates for Plesk-managed domains. The flow:

  • normalizes domains to lowercase
  • strips trailing dots
  • validates domain syntax
  • validates email syntax where supplied
  • rejects unmanaged domains before calling certbot or Plesk
  • shows useful Let’s Encrypt errors instead of only a generic failure

Common surfaced causes include DNS NXDOMAIN, domain not pointing to the server, Let’s Encrypt rate limits, and ACME validation details.

Restoring Default Plesk nginx and Apache

To uninstall CyberPanel nginx for Plesk and restore default Plesk behavior, run:

bash <(curl -sSL https://cyberpanel.net/nginx-plesk-install.sh) --uninstall

Then verify services:

systemctl is-active apache2 nginx nginx-cyberpanel
nginx -t
apache2ctl -t

After restore, expected port ownership is:

Port Expected owner
:80 Plesk nginx
:443 Plesk nginx
127.0.0.1:7080 Apache
127.0.0.1:7081 Apache

Installed Paths

Path Purpose
/usr/local/sbin/nginx-cyberpanel Main nginx replacement binary.
/usr/local/psa/admin/sbin/modules/cyberpanel-nginx/ Plesk privileged helper scripts.
/usr/local/psa/admin/htdocs/modules/cyberpanel-nginx/ Plesk extension UI.
/etc/nginx-cyberpanel/state Takeover state: installed-not-active, active, or inactive.
/etc/nginx-cyberpanel/extras.conf Generated gzip, brotli, HTTP/2, and LSCache settings.
/var/cache/nginx-cyberpanel/lscache/ LSCache-compatible cache storage.
/var/log/cyberpanel-nginx-install.log Install and takeover log.
/var/backups/nginx-cyberpanel/ Plesk, Apache, and nginx backup data for rollback.

Release Checksums

SHA256 checksums for version 1.0.0:

b043827c609a73160f3e91b0c59ba43d7c771c5bf7b74dcc4d7cc13bb34f20a1  nginx-plesk-install.sh
8ba108d98cb6aa78b449fd3ccb7cb48706e286375653c3b0ec0a05940e2c8ae6  cyberpanel-nginx-1.0.0.zip
81b2d9313b46296b7f89414fac391d3355b5f0440f5f6c8959e0505e92bbdebd  nginx-cyberpanel-1.0.0-x86_64-ubuntu
eb2c00c3a77c71a50744ed37ef025abf1a97da9028b77611fe8d9ffee5d8d68e  nginx-cyberpanel-1.0.0-x86_64-rhel9
8b631dec87b883c4147f9c8f9b47a396df4f2bba7e6334b9ee08479b0ce64a43  nginx-cyberpanel-1.0.0-x86_64-rhel8

To verify the installer download:

curl -fLsS https://cyberpanel.net/nginx-plesk-install.sh -o /tmp/nginx-plesk-install.sh
sha256sum /tmp/nginx-plesk-install.sh

Recommended Rollout

  1. Run the one-line installer.
  2. Confirm Plesk is still serving sites with default nginx.
  3. Open the CyberPanel nginx extension and review Diagnose.
  4. Enable takeover during a maintenance window.
  5. Verify public site headers and application behavior.
  6. Test LSCache with curl --compressed.
  7. If needed, use restore controls or run 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.

Table of Contents