Documentation

Installation

Requirements

  • A freshly installed server (64-bit Intel/AMD or ARM, VPS or dedicated) with Ubuntu 22.04, 24.04 or 26.04 LTS, or Debian 12 or 13. Interim Ubuntu releases such as 26.10 aren't supported. The VPS must be a full virtual machine (KVM, VMware, Hyper-V, Xen), not a container.
  • At least 1 GB of memory (2 GB or more recommended) and 10 GB of free disk.
  • A public IPv4 address and root access.
  • A domain name you control, for the panel address (for example panel.yourdomain.com).

HostFog needs a server of its own. Don't install it on a server that already runs another control panel or websites.

System PHP Dovecot MariaDB
Ubuntu 22.04 LTS 8.1 (7.4–8.5 can be added from the panel) 2.3 10.6
Ubuntu 24.04 LTS 8.3 (7.4–8.5 can be added from the panel) 2.3 10.11
Ubuntu 26.04 LTS 8.5 2.4 11.8
Debian 12 8.2 (7.4–8.5 can be added from the panel) 2.3 10.11
Debian 13 8.4 (others when the extra PHP repository publishes them) 2.4 11.8

Newer versions of Nginx, Apache, MariaDB, PostgreSQL, Redis and Node.js can be installed later under Server Admin → Software versions. If a release doesn't package an optional part (for example the FTP server), the installer leaves it out, says so, and the rest works as normal.

1. Set up DNS

At your DNS provider, add A records pointing at the server's IP:

Name Used for
server.yourdomain.com Server Admin: the administrators' panel
panel.yourdomain.com Control Panel: your customers' panel (also the classic address on port 8443)
reseller.yourdomain.com Reseller Panel: your resellers' panel
webmail.yourdomain.com webmail
mx.yourdomain.com mail server: IMAP, SMTP and MX
ftp.yourdomain.com FTP
ns1.yourdomain.com, ns2.yourdomain.com your own nameservers (optional; also add them as glue records at your registrar)

Right after you enter the panel address, the installer shows the exact records to add (or update, if they already exist with another value) in your domain's DNS, plus the glue records and reverse DNS, and waits for Enter so you can make the changes first. It shows the list again at the end. It also saves a zone file you can import at most DNS providers: /etc/hostfog/dns-setup.zone. Show it again any time with hf-admin dns-setup (add --check to also see which records public DNS already has).

If you add them before installing, one SSL certificate covers them all. If DNS isn't ready, the install still works: names that don't point at the server yet are added to the certificate by themselves within 5 minutes of their DNS pointing there.

2. Set reverse DNS

At your server provider, set the reverse DNS (PTR) of the server IP to mx.yourdomain.com. Without it, Gmail and Outlook are likely to send your mail to spam.

3. Run the installer

Log in as root (sudo -i) and run:

cd /home && curl -o latest -L https://get.hostfog.io/latest && bash latest

The installer: - checks that the server is a supported Ubuntu version - asks for the panel address and your email - installs everything, showing one line per step with a timer - asks you to create the admin login - prints a summary with your links and a short to-do list

It takes about 10–15 minutes. Everything the commands print goes to /var/log/hostfog-install.log. If a step fails, the installer shows the last lines of that log; fix the problem and run the same command again.

Options

You can give the answers up front, which is useful for automated installs:

bash latest --hostname panel.yourdomain.com --email you@yourdomain.com
Option What it does
--hostname NAME panel address
--email ADDRESS admin email, also used for Let's Encrypt
--port 8443 panel port (default 8443)
--ns1 NAME --ns2 NAME nameserver names (default ns1./ns2. + your domain)
--mail-host NAME mail server name (default mx. + your domain)
--node 22 Node.js version for customer apps: 18, 20, 22 or 24
--quotas enforce hard disk quotas
--no-mail skip email (Postfix, Dovecot, SpamAssassin, webmail)
--no-dns skip the BIND DNS server
--no-portals one panel for everyone, instead of separate Server Admin, Control Panel and Reseller Panel

Firewall ports

The installer opens these ports in the server firewall (ufw). If your provider also has a cloud firewall, open them there too.

Port Service
22 (or your SSH port) SSH / SFTP
80, 443 websites, Let's Encrypt
8443 control panel
21, 40000–40100 FTP (TLS)
25, 587, 993, 995 email
53 DNS
7000 HostFog Tunnel (only once you switch it on under Tunnels)

fail2ban protects SSH, FTP, SMTP and IMAP/POP3 logins.

What you get

Service Address
Server Admin (administrators) https://server.yourdomain.com
Control Panel (customers) https://panel.yourdomain.com
Reseller Panel (resellers) https://reseller.yourdomain.com
Classic address (every login, always works) https://panel.yourdomain.com:8443
Webmail https://webmail.yourdomain.com
Email (IMAP 993, SMTP 587, MX) mx.yourdomain.com
FTP (21, TLS) / SFTP (22) ftp.yourdomain.com
phpMyAdmin https://panel.yourdomain.com:8443/phpmyadmin/

Separate panels

Administrators, customers and resellers each get their own panel, at their own address, with their own sign-in page, look and app icon. Only the people a panel is for can sign in there: a customer who tries the Server Admin address is told where to go instead. Log in as from the Server Admin (or Reseller Panel) opens the customer's own Control Panel, and Return to admin takes you back. The classic address on port 8443 keeps working for every login, so you can always get in, even before the new names' DNS is in place.

Servers installed before this release: point server. and reseller. at the server, then run sudo hf-admin portals on. Choose other names with --admin, --customer and --reseller; go back to one panel with hf-admin portals off.

Next: Getting started.