System requirements
The operating systems, hardware, virtualisation, network, ports and access HF Panel needs, and what the installer checks.
Check these before you install HF Panel. The installer checks the most important ones itself and stops, before it changes anything, when one is not met.
Operating system
HF Panel installs on a freshly installed, 64-bit server running one of these releases:
| System | Default PHP for websites | Other PHP versions | MariaDB |
|---|---|---|---|
| Ubuntu 22.04 LTS | 8.1 | 7.4–8.5, from the panel | 10.6 |
| Ubuntu 24.04 LTS | 8.3 | 7.4–8.5, from the panel | 10.11 |
| Ubuntu 26.04 LTS | 8.5 | when the extra PHP repository publishes them | 11.8 |
| Debian 12 | 8.2 | 7.4–8.5, from the panel | 10.11 |
| Debian 13 | 8.4 | when the extra PHP repository publishes them | 11.8 |
| Rocky Linux 8, AlmaLinux 8, CloudLinux 8 | 8.3 (from the extra PHP versions repository, which these need) | 7.4–8.5, from the panel | 10.11 |
| Rocky Linux 9, AlmaLinux 9, CentOS Stream 9, CloudLinux 9 | 8.3 | 7.4–8.5, from the panel | 10.11 (10.5 when the newer stream is not offered) |
| Rocky Linux 10, AlmaLinux 10, CentOS Stream 10, CloudLinux 10 | 8.3 | 7.4–8.5, from the panel | 10.11 |
Important:
- Interim Ubuntu releases (for example 26.10) are not supported: they lose security updates after nine months.
- Rocky Linux 8 and AlmaLinux 8 reach their end of life in May 2029 (security updates stop then). For a new server, choose 9 or 10, which are supported for longer. CentOS Stream 8 is not supported.
- Install on a clean server. Do not install HF Panel on a server that already runs another control panel, websites, a mail server or a database you want to keep. The download script refuses to run when it finds another control panel.
Rocky Linux, AlmaLinux, CentOS Stream and CloudLinux
- 64-bit Intel/AMD (
x86_64) only on these systems. - The installer adds EPEL (with the CRB repository it needs, called PowerTools on version 8) and the extra PHP versions repository, whose release package is installed only when its signature checks out. On 9 and 10, when that repository can't be reached, websites get the system's own PHP 8.3 and no other PHP versions are offered. On 8 the system's own PHP stops at 8.2, so the installer stops and says so when the repository can't be reached.
- SELinux stays on (enforcing). The installer sets the labels, switches and ports HF Panel needs; it never turns SELinux off. A server where SELinux is permissive or disabled works too.
- The firewall is firewalld instead of ufw. The panel's Firewall screen works the same way.
- Not available yet on these systems: MongoDB databases (DB Studio), Docker, the web application firewall and newer versions from other sources under Software versions (it offers the system's own packages). Everything else works as on Ubuntu and Debian.
Version 8 (Rocky Linux 8, AlmaLinux 8, CloudLinux 8)
- Resource limits need cgroups v2, and version 8 starts with cgroups v1. The installer does not change how the
server boots. Until you switch, the limits of packages and accounts are saved but not enforced, and the usage
charts stay empty. To switch, run
hf-agent cgroups-v2as root and restart the server when it suits you. Until that restart, Packages and Top accounts say the limits need a restart. On CloudLinux, the limits stay with LVE instead (see below). - The installer makes the newer versions of the system's packages the ones it installs: Nginx 1.24, MariaDB 10.11, Redis 6, PostgreSQL 16 and Ruby 3.3. The defaults on 8 are older: Nginx 1.14, MariaDB 10.3, Redis 5, PostgreSQL 10 and Ruby 2.5.
- Python 3.11 is installed and becomes
python3, because the system's own Python 3.6 is too old for HF Panel. The system's tools keep their own Python. - Apache is 2.4.37 and OpenSSL is 1.1.1 (with security fixes from the system). HF Panel's download and update signatures are checked with the system's Python, because OpenSSL 1.1.1 can't check them itself.
- Version 8 has systemd 239, so two hardening settings of newer systemd versions are skipped: hiding other processes from the accounts' sandboxed services, and stopping the accounts' apps from creating set-user-ID files. Account isolation works otherwise.
CloudLinux
CloudLinux 8, 9 and 10 install like the AlmaLinux of the same version, with the same packages. CloudLinux limits each account itself with LVE and gives each account its own view of the file system with CageFS. HF Panel does not add its own on top, so accounts are never limited twice:
- Resource limits stay off. The limits of packages and accounts are saved, but HF Panel doesn't enforce them, and Enforce limits under Packages is refused. Packages and Top accounts say Resource limits are managed by CloudLinux LVE on this server. Set the limits with CloudLinux's own tools.
- Account isolation: when CageFS is on, the private filesystem view and the jailed SSH shell are not offered. Check first says why.
- LVE's default limits are shown read-only in the isolation check and in
hf-agent smoke-test. - CloudLinux's own alt-php versions are listed by
hf-agent php-versionsand the smoke test, but HF Panel doesn't use or manage them. Websites use the PHP versions from Server Admin › System › PHP & Node.js.
What works on which system
| Ubuntu 22.04, 24.04, 26.04 | Debian 12, 13 | Rocky Linux, AlmaLinux, CentOS Stream 9, 10 | Rocky Linux, AlmaLinux 8 | CloudLinux 8, 9, 10 | |
|---|---|---|---|---|---|
| Processor | Intel/AMD and ARM | Intel/AMD and ARM | Intel/AMD only | Intel/AMD only | Intel/AMD only |
| Firewall | ufw | ufw | firewalld (the Firewall screen is the same) | firewalld | firewalld |
| SELinux | not used | not used | kept on (enforcing), or permissive or disabled | as on 9 and 10 | as on 9 and 10 |
| Websites, SSL, PHP versions, email, DNS, FTP and SFTP | yes | yes | yes | yes (PHP needs the extra PHP versions repository) | yes |
| MySQL/MariaDB and PostgreSQL databases | yes | yes | yes | yes | yes |
| Resource limits and usage charts | yes | yes | yes | after hf-agent cgroups-v2 and a restart |
managed by CloudLinux LVE |
| Account isolation (private filesystem view, jailed shell) | yes | yes | yes | yes, with fewer hardening settings | not with CageFS on |
| MongoDB databases | yes | yes | not yet | not yet | not yet |
| Docker apps | yes | yes | not yet | not yet | not yet |
| Web application firewall | yes | yes | not yet | not yet | not yet |
| Newer versions from other sources under Software versions | yes | yes | the system's own packages | the system's own packages | the system's own packages |
| OpenLiteSpeed as the web server behind Nginx (Web server) | yes | yes | yes | yes | yes |
| Backups, billing, uptime monitoring, status page, the API | yes | yes | yes | yes | yes |
| Security updates until | the release's end of life | the release's end of life | 2032 (9), 2035 (10); CentOS Stream ends sooner | May 2029 | as CloudLinux publishes |
Step by step for Rocky Linux, AlmaLinux and CloudLinux: Install on Rocky Linux or AlmaLinux.
Newer versions of Nginx, Apache, MariaDB, PostgreSQL, Redis and Node.js can be installed later under Server Admin › System › Software › Software versions, and extra PHP versions under Server Admin › System › PHP & Node.js.
Websites run behind Nginx on Apache by default. OpenLiteSpeed with LiteSpeed's lsphp can take Apache's place, from LiteSpeed's own package repository; the PHP versions it offers depend on the system. See Web server.
Hardware
| Minimum | Recommended | |
|---|---|---|
| Processor | 1 core, 64-bit Intel/AMD (amd64) or ARM (arm64; Ubuntu and Debian only) |
2 cores or more |
| Memory | 1 GB | 2 GB or more; 4 GB or more for many sites, spam filtering and apps |
Free disk on / |
5 GB | 20 GB or more, plus the space your websites, email and backups need |
The installer stops when the server has less than 1 GB of memory or less than 5 GB of free disk on /. Its summary
also warns when there is less than 2 GB of memory or 10 GB of free disk. On servers with less than 4 GB of memory,
HF Panel adds a swap file.
Virtualisation
A VPS must be a full virtual machine that runs systemd: KVM, VMware, Hyper-V, Xen, or a dedicated server. Containers (OpenVZ, LXC, Docker) are not supported, because the panel manages services, the firewall and disk quotas itself. The installer detects a container and stops.
Network
- A public IPv4 address on the server. IPv6 is used too when the server has it.
- A domain name you control for the server's addresses, for example
yourdomain.com, which givessrv.yourdomain.com,cp.yourdomain.comand the others. See DNS setup. - Access to your server provider's settings, to set the reverse DNS (PTR) of the IP. Without it, email from the server is likely to go to spam.
- Outgoing internet access during the installation, for packages, Let's Encrypt, the licence check and the HF Panel download.
- Outgoing port 25 for email. Many providers block it on new accounts; ask them to open it, or the server cannot deliver email to other mail servers.
Ports
The installer opens these in the server's firewall (ufw; firewalld on Rocky Linux, AlmaLinux, CentOS Stream and CloudLinux). If your provider also has a cloud firewall or security group, open the same ports there.
| Port | Used for |
|---|---|
| 22 (or your SSH port) | SSH and SFTP |
| 80, 443 | websites, Mail, Files, DB Studio, Let's Encrypt |
| 8443 | the panels: srv., cp. and rs.yourdomain.com:8443 (--port changes it) |
| 21, 40000–40100 | FTP with TLS |
| 25, 465, 587, 993, 995 | email (not with --no-mail) |
| 53 (TCP and UDP) | the DNS server (not with --no-dns) |
The full list, including ports that stay closed to the outside: Ports.
Access
- Root access: log in as root, or run
sudo -ifirst. - Run the command in a normal SSH session; it prints a setup link, and the questions are answered in your browser (port 8443 must be reachable). For an automated install, give every answer as an option: see Customise the installation.
Licence
A licence key (HFL-XXXXX-XXXXX-XXXXX-XXXXX) is tied to the server's public IPv4 address. You add it, or start
the free 30-day trial, on the browser installer's Licence step. See Licensing.
What the installer checks
| Check | Message when it fails |
|---|---|
| Run as root | Run as root (sudo -i). |
| A supported system | HF Panel needs Ubuntu 22.04, 24.04 or 26.04 LTS, Debian 12 or 13, Rocky Linux or AlmaLinux 8, 9 or 10, CentOS Stream 9 or 10, or CloudLinux 8, 9 or 10 … |
| A full virtual machine with systemd | HF Panel needs a VPS that runs systemd (a full virtual machine …) |
| 64-bit Intel/AMD or ARM | HF Panel runs on 64-bit Intel/AMD (amd64) or ARM (arm64) servers … |
| Memory | HF Panel needs at least 1 GB of memory … |
| Free disk | HF Panel needs at least 5 GB of free disk space … |
| No other control panel | Another control panel is installed on this server — use a fresh VPS … |