CloudPanel is a free, lightweight control panel that manages Nginx, PHP-FPM, databases and SSL certificates from a web interface. Installed on a VPS Linux Infrawire, it turns an empty server into a multi-site hosting platform in a few minutes. This guide covers Ubuntu 24.04 and Debian 12.
📋 Prerequisites
- A brand new KVM VPS running Ubuntu 24.04 or Debian 12, with nothing else installed (no Apache, Nginx, MySQL or other panel).
- At least 2 GB of RAM and root SSH access. From your customer area you will find the VPS IP and the root password.
- A domain name whose DNS A record (and AAAA if you use IPv6) points to
VPS_IP. - Ports 22, 80, 443 and 8443 reachable from the Internet.
🔄 1. Prepare the system
Connect as root and update the packages. CloudPanel needs curl, wget and sudo.
Bashssh root@VPS_IP apt update && apt -y upgrade && apt -y install curl wget sudo
If the kernel was upgraded, reboot with reboot and reconnect before going further.
⬇️ 2. Run the official installer
The installer is downloaded first and its SHA-256 checksum is verified before it runs. The checksum changes with every installer release, so copy the current value and the current database engine list from the official page: https://www.cloudpanel.io/docs/v2/getting-started/other/ (replace SHA256_FROM_DOCS below).
Bashcurl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh echo "SHA256_FROM_DOCS install.sh" | sha256sum -c sudo CLOUD_PANEL_DB_ENGINE=MARIADB_11.4 bash install.sh
The CLOUD_PANEL_DB_ENGINE variable selects the database server. The documented values are MYSQL_8.4, MYSQL_8.0, MARIADB_11.4 and MARIADB_10.11. If you omit it, the installer picks its default. The sha256sum -c command must print install.sh: OK; if it prints FAILED, stop and download the file again. The installation takes a few minutes.
🔑 3. Create the first admin account
Open https://VPS_IP:8443 in your browser. The certificate is self-signed, so the browser shows a warning: accept it for this first login.
The first visitor creates the administrator, so do this immediately. Fill in the user name, e-mail address and a long password, then log in. Do not leave the panel exposed for hours before creating the account.
🌐 4. Add a PHP site
In the panel, click Sites, then Add Site, then Create a PHP Site. Choose an application template (Generic, WordPress, Laravel, etc.), enter example.com as the domain, pick a PHP version, and define the site user and password. CloudPanel creates the Nginx vhost, a PHP-FPM pool and a dedicated system user for the site.
Upload your files with SFTP using the site user (not root), into /home/USER/htdocs/example.com. You can also create a database for the site under Databases.
🔒 5. Issue a Let's Encrypt certificate
Check that example.com already resolves to VPS_IP:
Bashdig +short example.com
Then open the site, go to the SSL/TLS tab, click Actions and choose New Let's Encrypt Certificate. Select the domain names to include and confirm. Renewal is handled automatically by CloudPanel.
🛡️ 6. Secure the panel
- In Admin Area > Security > Firewall, restrict port 8443 to your own IP address and remove the rule that allows it from everywhere. Keep 22, 80 and 443 open as needed.
- In Admin Area > Security, enable Basic Auth for the panel as a second barrier.
- In your user profile, enable two-factor authentication.
- Use a long, unique password and keep the system updated:
Bashapt update && apt -y upgrade
✅ 7. Verify the installation
Bashss -tlnp | grep -E ':(80|443|8443)\b' systemctl is-active nginx clp-agent curl -I https://example.com
Ports 80, 443 and 8443 should be listening, both services should answer active, and the last command should return an HTTP 200 or a redirect with a valid certificate.
🧰 Troubleshooting
- The installer refuses to run or fails midway: CloudPanel must be installed on a clean system. If another web server or database was already present, reinstall the OS from your customer area and start again.
- Port 8443 does not answer: check that the firewall (panel rules and any other firewall) allows it, and that your IP was not removed from the allowed list. Run
ss -tlnp | grep 8443on the server. - Let's Encrypt fails: the domain does not point to the VPS yet, or a proxy hides the real IP. Fix the DNS record, wait for propagation and retry. Port 80 must be open.
- Lost admin password: reset it from the shell with
clpctl user:reset:password --userName='admin' --password='NEW_PASSWORD'.
🎉 CloudPanel is running: add your sites, secure port 8443 and enjoy a clean hosting stack on your VPS.