A free, licence-free nginx-based panel: requirements, a one-command install, the admin created in the browser on port 8443, your first site, free SSL, and how it differs from cPanel.
A control panel is a web interface to your server: sites, databases, SSL and PHP settings are done with a mouse, without editing config files. CloudPanel is a free, nginx-based panel - lightweight, ad-free, and aimed at developers. Out of the box it runs PHP, Node.js, Python, static and WordPress sites, plus reverse proxies. This guide covers installing CloudPanel on a clean VPS, creating an admin user, setting up your first site, and issuing a free certificate.
In short. CloudPanel installs on Ubuntu 22.04/24.04 and Debian 11/12. You need a clean server, 2 GB of RAM or more (it installs a database), root, and SSH access. No licence - the panel is completely free. Install: one command, 8-12 minutes. Log in at
https://ADDRESS:8443; you create the admin account right in the browser on the first visit.
A panel earns its place if you keep several sites on the server, add domains often, want SSL, backups and PHP-version switching in a couple of clicks, and would rather not hand-write nginx vhosts.
You do not need a panel if you run one project and are comfortable in a terminal: the panel installs its own stack and directory layout. For that path, see How to deploy a service on a server.
Create a new HIP server on Ubuntu 24.04 (see How to create a server in the HIP panel) or take an existing one with nothing deployed on it yet. Log in over SSH as root.
Wait until the server finishes its first-boot setup (otherwise the CloudPanel installer collides with a background apt and fails):
cloud-init status --wait
Update packages:
apt update && apt -y upgrade
You do not need to configure a firewall at this step - restrict access to port 8443 later, from the panel itself or with ufw.
Download the official Community Edition installer and run it:
curl -sSL https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh
bash install.sh
By default the installer brings up MySQL. For MariaDB, set an environment variable before running it:
DB_ENGINE=MARIADB_11.4 bash install.sh
From here the installer works on its own: it installs nginx, every supported PHP version (7.1 through 8.5), the database, Node.js, Python and the panel. That is 8-12 minutes. If SSH might drop, run the command inside screen: apt install -y screen && screen -S clp, and return later with screen -r clp.
At the end the installer says the panel is available at https://ADDRESS:8443. It does not hand out a separate login and password - you create the admin on the first visit.
In a browser open https://ADDRESS:8443, where ADDRESS is the server IP. The browser warns about a self-signed certificate - normal on the first visit, the connection is still encrypted. Continue.
The Admin User Creation form opens: first and last name, username, email, password, timezone. Fill it in, agree to the terms and click Create User. This is the account that administers the whole panel.
After that you are sent to the login page - sign in with the username and password you just set. The site list opens, empty for now.
Click + ADD SITE. CloudPanel asks for the site type: WordPress, PHP, Node.js, static HTML, Python or reverse proxy.
For a plain PHP site pick Create a PHP Site and fill the form:
Generic for arbitrary code, or a ready template (Laravel, Symfony and so on).Click Create. The panel creates the user, the site directory (/home/USER/htdocs/DOMAIN), the nginx entry and a self-signed certificate.
From there you manage the site through the Manage button - the tabs Settings (domain, root directory, PHP version and limits), Vhost (the nginx config), Databases, SSL/TLS, SSH/FTP, File Manager, Cron Jobs, Logs.
Open the site's SSL/TLS tab and click New Let's Encrypt Certificate. The domain list holds the domain itself and the www subdomain; add others if needed and click Create and Install.
The certificate is issued if the domains already point at this server with an A record, is installed into nginx automatically, and renews on its own.
.htaccess does not work - rules go in the nginx config.cloud-init status --wait, and run the install again.:8443 page will not open. The port is blocked by a firewall. Inside the server: ufw allow 8443/tcp. Check any external firewall too.