> ## Documentation Index
> Fetch the complete documentation index at: https://help.freakhosting.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Install a Free Control Panel on Your VPS

> Compare free hosting control panels for a VPS (HestiaCP, CloudPanel, Webmin and Virtualmin), check OS support and RAM needs, then install one on a fresh server.

To install a free control panel on your VPS, rebuild the server with a supported OS (for example Ubuntu 24.04 or Debian 13), connect as root over SSH and run the panel's installer: HestiaCP with `bash hst-install.sh`, CloudPanel with its checksum-verified `install.sh`, or Virtualmin with its `virtualmin-install` script. Then open the panel's port (8083, 8443 or 10000) and log in.

| Difficulty | Time | Works on | Needs |
| - | - | - | - |
| Beginner | 15–30 minutes | Ubuntu 22.04 / 24.04, Debian 12 / 13 (Virtualmin and Webmin also Rocky / AlmaLinux) | A fresh OS, root access, 1–2 GB RAM or more |

## Before you start

* **Use a fresh OS.** HestiaCP, CloudPanel and Virtualmin all say to install on a clean system. [Rebuild your VPS](https://help.freakhosting.com/portals/vps-panel/how-to-rebuild-and-reinstall-your-vps.md) first if you already installed Nginx, Apache, MySQL or PHP by hand.
* **Back up anything you need.** A rebuild erases the disk. See [schedule and restore backups](https://help.freakhosting.com/portals/vps-panel/how-to-schedule-and-restore-backups.md).
* **Set a hostname** such as `panel.example.com` and point it to the server: [change the hostname](https://help.freakhosting.com/portals/other/how-to-change-the-hostname-on-linux.md) and [point a domain](https://help.freakhosting.com/portals/other/how-to-point-a-domain-to-your-server.md).
* Have the [VNC console](https://help.freakhosting.com/portals/vps-panel/how-to-enable-and-use-vnc-console-access.md) ready in case a firewall change locks you out.

A control panel is a web interface that creates websites, databases, email accounts, DNS zones and SSL certificates for you, so you don't edit config files by hand. It installs and manages its own web server stack.

## Which free control panel should I use?

| Panel | Supported OS | Minimum | Web stack | Email | Panel URL |
| - | - | - | - | - | - |
| **HestiaCP** | Debian 12 / 13, Ubuntu 22.04 / 24.04 / 26.04 (LTS only) | 1 core, 1 GB RAM (without SpamAssassin and ClamAV), 10 GB disk | Apache and/or Nginx, PHP-FPM, MariaDB, BIND DNS | Yes (Exim, Dovecot) | `https://panel.example.com:8083` |
| **CloudPanel** | Ubuntu 22.04 / 24.04 / 26.04, Debian 12 / 13 | 1 core, 2 GB RAM, 10 GB disk | Nginx, PHP-FPM, MySQL or MariaDB | No | `https://203.0.113.10:8443` |
| **Virtualmin** (GPL) | Rocky Linux, Debian, Ubuntu LTS | See vendor docs | LAMP or LEMP | Yes | `https://panel.example.com:10000` |
| **Webmin** | Debian / Ubuntu and RHEL family | See vendor docs | Manages what is installed | Via modules | `https://203.0.113.10:10000` |

* **HestiaCP** suits hosting several websites with email and DNS on one server.
* **CloudPanel** suits fast PHP sites (such as WordPress) and Node.js or Python apps, without email.
* **Virtualmin** is the most complete: websites, email, DNS and databases per domain. It is built on Webmin.
* **Webmin** alone is a system admin panel (users, services, firewall, packages), not a website host.

## How to install HestiaCP

**1. Download the installer**

```bash theme={null}
wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
```

**2. See the options (optional)**

```bash theme={null}
sudo bash hst-install.sh -h
```

Options let you leave out parts, for example `--clamav no` and `--spamassassin no` on a small server, or `--apache no` for an Nginx-only setup.

**3. Run it as root**

```bash theme={null}
sudo bash hst-install.sh
```

Answer the questions (admin email, hostname). At the end, the installer shows how to log in.

**4. Log in**

Open `https://panel.example.com:8083` and sign in with the admin details the installer gave you.

## How to install CloudPanel

**1. Update the system**

```bash theme={null}
sudo apt update && sudo apt -y upgrade && sudo apt -y install curl wget sudo
```

**2. Run the verified installer**

Copy the current command from the [CloudPanel installation page](https://www.cloudpanel.io/docs/v2/getting-started/other/). It looks like this, with MySQL 8.4 as the database:

```bash theme={null}
curl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh; \
echo "8146dbe0a488e7088b04071b0c34d59aa0ab1fe9dcec382d395fd155c9e6c476 install.sh" | \
sha256sum -c && sudo DB_ENGINE=MYSQL_8.4 bash install.sh
```

The checksum changes with each CloudPanel release. If `sha256sum -c` fails, the script does not run; take the new command from CloudPanel's page.

**3. Create the admin user**

Open `https://203.0.113.10:8443` (your server IP) straight away and create the admin account. Your browser warns about a self-signed certificate at first; continue to the page.

## How to install Virtualmin or Webmin

> [tab] Virtualmin (websites, email, DNS)
>
> ```bash theme={null}
> sudo sh -c "$(curl -fsSL https://download.virtualmin.com/virtualmin-install)" -- --bundle LAMP
> ```
>
> Use `--bundle LEMP` for Nginx instead of Apache. When it finishes, open `https://panel.example.com:10000`.

> [tab] Webmin only (system admin)
>
> ```bash theme={null}
> curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
> sudo sh webmin-setup-repo.sh
> ```
>
> Ubuntu / Debian:
>
> ```bash theme={null}
> sudo apt-get install webmin --install-recommends
> ```
>
> AlmaLinux / Rocky:
>
> ```bash theme={null}
> sudo dnf install webmin
> ```
>
> Then open `https://203.0.113.10:10000`.

## How to open and protect the panel port

> [tab] ufw
>
> ```bash theme={null}
> sudo ufw allow from 198.51.100.25 to any port 8443 proto tcp
> ```

> [tab] firewalld
>
> ```bash theme={null}
> sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.25" port port="8443" protocol="tcp" accept'
> sudo firewall-cmd --reload
> ```

Replace `198.51.100.25` with your own IP address and `8443` with your panel's port (8083 for HestiaCP, 10000 for Webmin and Virtualmin). Some installers add their own firewall rules; check them after installing.

> [!WARNING]
>
> A control panel has full control of your server. Use a long unique password, turn on two-factor login where the panel offers it, limit the panel port to your IP where you can, and keep the panel updated.

## How to check it worked

* The panel's login page loads on its port.
* After logging in, add a test website and open it in your browser.
* Request a Let's Encrypt certificate for the site from inside the panel. This proves ports 80 and 443 are reachable.

## Frequently asked questions

### Can I install a panel on a server that already hosts sites?

Not safely. The installers expect a clean OS and replace web, database and mail configs. Move your sites into the panel after installing it on a fresh server.

### Can I uninstall a panel later?

There is no clean undo. To go back to a plain server, back up your data and [rebuild the VPS](https://help.freakhosting.com/portals/vps-panel/how-to-rebuild-and-reinstall-your-vps.md).

### Which panel is closest to cPanel?

Virtualmin and HestiaCP both manage websites, email, DNS and databases per account, which is the closest free match.

### Do I still need to update the OS?

Yes. Keep the OS and the panel updated. See [update Linux packages](https://help.freakhosting.com/portals/other/how-to-update-linux-packages.md) and [automatic security updates](https://help.freakhosting.com/portals/other/how-to-enable-automatic-security-updates.md).

### Can I send email from a panel?

HestiaCP and Virtualmin include a mail server, but good delivery needs reverse DNS, SPF, DKIM and DMARC. See [set up a mail server](https://help.freakhosting.com/portals/other/how-to-set-up-a-mail-server-on-a-vps.md).

## Related guides

> [card] [VPS and dedicated server guides](https://help.freakhosting.com/portals/other/vps-and-dedicated-server-guides.md)
>
> Every server guide in one place.

> [card] [Rebuild your VPS](https://help.freakhosting.com/portals/vps-panel/how-to-rebuild-and-reinstall-your-vps.md)
>
> Start from a fresh OS.

> [card] [Mail server on a VPS](https://help.freakhosting.com/portals/other/how-to-set-up-a-mail-server-on-a-vps.md)
>
> What email needs to work.

> [card] [Install WordPress](https://help.freakhosting.com/portals/other/how-to-install-wordpress-on-a-vps.md)
>
> The manual route instead.

> [card] [Linux security checklist](https://help.freakhosting.com/portals/other/linux-server-security-checklist.md)
>
> Harden the server.

***

> [!NOTE]
>
> **Checked against the official [HestiaCP getting started guide](https://hestiacp.com/docs/introduction/getting-started.html), [CloudPanel installation](https://www.cloudpanel.io/docs/v2/getting-started/other/) and [requirements](https://www.cloudpanel.io/docs/v2/requirements/), [Virtualmin download page](https://www.virtualmin.com/download/) and [Webmin download page](https://webmin.com/download/)** on 4 November 2026. The panel installers were not run in testing because they need a fresh, dedicated OS. Commands can differ on other distributions or releases.

> [!NOTE]
>
> ### Need Extra Help?
>
> If you encounter any issues, our support team is ready to assist:
>
> * **Live Chat:** Quick assistance via our website.
> * **Support Ticket:** [Open a Ticket](https://freakhosting.com/clientarea/submitticket.php)
> * **Discord:** [Join our Community](https://discord.gg/freakhosting)
> * **Email:** [support@freakhosting.com](mailto:support@freakhosting.com)

> [!TIP]
>
> ### Save on Your Hosting
>
> Ready to upgrade your hosting? Use code **KB20** at checkout for **20% off** your first order!

***

**Last Updated:** November 2026


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.