Install CloudPanel on a Linux VPS (Ubuntu/Debian)

3 min
VPS/VDS Hosting

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.

Bash
ssh 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).

Bash
curl -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:

Bash
dig +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:
Bash
apt update && apt -y upgrade

✅ 7. Verify the installation

Bash
ss -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 8443 on 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.

Stay up to date with the latest offers, discounts and special promotions.

View promotions

We use cookies

We use analytics cookies to improve your experience on our site. No data is sold to third parties. Learn more in our privacy policy.