PanelDOCSv1.0.0

Install on Rocky Linux or AlmaLinux

Install HF Panel on Rocky Linux or AlmaLinux 8, 9 or 10, CentOS Stream 9 or 10, or CloudLinux 8, 9 or 10 with SELinux kept on, and know what is different from Ubuntu and Debian.

HF Panel runs on Rocky Linux and AlmaLinux 8, 9 and 10, CentOS Stream 9 and 10, and CloudLinux 8, 9 and 10 as well as on Ubuntu and Debian. The command and the panels are the same; underneath, the installer uses dnf, firewalld and SELinux. This tutorial installs it on one of these systems and shows what to check afterwards. Allow 30 minutes.

You need:

  • a freshly installed 64-bit Intel/AMD (x86_64) server with at least 1 GB of memory and 5 GB of free disk, running Rocky Linux or AlmaLinux 8, 9 or 10, CentOS Stream 9 or 10, or CloudLinux 8, 9 or 10 (ARM is supported on Ubuntu and Debian only)
  • root access over SSH
  • a domain for the server, for example yourdomain.com, and a licence key or an email address for the 30-day trial

Firewall screen

1. Check the system

bash
cat /etc/os-release
getenforce

The first command shows the release. The second shows the SELinux mode: Enforcing is the normal state and is kept. Permissive and Disabled work too; the installer never changes the mode and never runs setenforce 0.

Important: install on a clean server. Do not install on a server that already runs another control panel, websites or a mail server.

Note: Rocky Linux 8 and AlmaLinux 8 get security updates until May 2029. For a new server, 9 or 10 is the better choice; HF Panel supports 8 for servers that must stay on it.

2. Open the ports at your provider

If your provider has a cloud firewall or security group, open TCP 22, 80, 443, 8443, plus 21 and 40000–40100 (FTP), 25, 465, 587, 993, 995 (email) and 53 TCP and UDP (DNS). The installer opens the same ports in the server's own firewall, which is firewalld here instead of ufw. See Ports.

3. Point your domain at the server

Add A records for yourdomain.com and mail.yourdomain.com at the server's IPv4 address, and CNAME records to yourdomain.com for srv., cp., rs., fm., dbs., cld., dep., api., smtp., imap. and ftp.. The installer lists what is still missing. See DNS setup.

4. Run the installer

Log in as root, or run sudo -i, then:

bash
cd /home && curl -o latest -L https://cdn.hostfog.com/latest && bash latest

Answer the licence, domain, email and company questions as on any other system: see Install. On these systems the installer also:

  • adds EPEL and the CRB repository (PowerTools on 8)
  • adds the extra PHP versions repository, installing its release package only after its signature checks out. When that repository can't be reached, websites get the system's own PHP 8.3 on 9 and 10 and no other versions are offered; on 8 the installer stops, because the system's own PHP there stops at 8.2
  • on 8, installs the newer Nginx 1.24, MariaDB 10.11, Redis 6, PostgreSQL 16 and Ruby 3.3, and makes Python 3.11 the server's python3
  • sets SELinux labels, switches and ports for HF Panel's paths, the account folders, the panel and API ports and the web servers, and loads a small policy module
  • shows the system family and the SELinux mode in its summary

5. Sign in and check

  1. Open https://srv.yourdomain.com:8443 and sign in with the admin login you made.
  2. Open Server Admin › Server › Server health and fix anything yellow or red.
  3. Open Server Admin › Security › Firewall. The rules are listed as on Ubuntu, and adding or removing one changes firewalld's rules for you.
  4. Open Server Admin › System › PHP & Node.js to see the PHP versions you can add.

6. Version 8: switch on resource limits

Resource limits and the usage charts need cgroups v2. Version 8 starts with cgroups v1, and the installer leaves the boot settings alone, so it ends with a warning and Packages says the limits are not enforced. To switch, as root:

bash
hf-agent cgroups-v2
reboot

The first command adds systemd.unified_cgroup_hierarchy=1 to every installed kernel's boot arguments; nothing changes until the restart. Until then, Packages and Top accounts say the limits need a restart. After it, the limits are enforced and hf-agent smoke-test shows cgroups v2 under System. To switch on limits for the accounts, click Enforce limits under Server Admin › Accounts › Packages.

7. CloudLinux

CloudLinux installs like the AlmaLinux of the same version. Its own account limits (LVE) and per-account file system view (CageFS) stay in charge:

  • HF Panel's resource limits stay off, so accounts are not limited twice. Packages and Top accounts say the limits are managed by CloudLinux LVE, and Enforce limits is refused. Set the limits with CloudLinux's tools.
  • With CageFS on, Account isolation doesn't offer the private filesystem view or the jailed SSH shell.
  • hf-agent smoke-test shows LVE's default limits and CloudLinux's alt-php versions. HF Panel lists the alt-php versions but doesn't use them: websites get the PHP versions from Server Admin › System › PHP & Node.js.

8. What is not there yet

These are not available on Rocky Linux, AlmaLinux, CentOS Stream and CloudLinux yet; their screens say so:

Feature On these systems
MongoDB databases (and MongoDB in DB Studio) not available
Docker apps not available
Web application firewall not available
Newer versions from other sources under Software versions the system's own packages are offered

MySQL/MariaDB and PostgreSQL databases, email, DNS, FTP, backups and everything else work as on Ubuntu and Debian. Customers' websites see the same layout: Apache's files are under /etc/apache2 and PHP's under /etc/php/<version>, and the files the installer replaced are kept as *.hostfog-orig.

Troubleshooting

Problem What to check
"HF Panel needs Ubuntu 22.04 …" at the start the release is not one of the versions above (CentOS Stream 8 is not supported), or the CPU is not x86_64
The installer stops at "Packages" on 8, naming PHP 8.3 the extra PHP versions repository (rpms.remirepo.net) could not be reached or verified; check the server can reach it, then run the install command again
Limits not enforced on 8 run hf-agent cgroups-v2 and restart the server (step 6)
A website or app can't connect to its database or to another port ausearch -m avc -ts recent shows what SELinux refused. Update HF Panel under Server Admin › Server › Updates › HF Panel updates (or run the install command again): it sets the labels and switches again. Don't turn SELinux off
A custom panel or API port doesn't answer update HF Panel again, so the port gets its SELinux label
Ports closed from outside firewall-cmd --list-all and your provider's cloud firewall
Other PHP versions missing the extra PHP repository could not be reached or verified; try again later

See also Troubleshoot the installation.