Install
Install HF Panel with one command, then finish everything in your browser — check, domain, licence, admin login and the live install.
Install HF Panel with one command. Check the System requirements and add your DNS records first.
Before you begin
Important:
- Use a freshly installed server running a supported system: Ubuntu, Debian, or Rocky Linux or AlmaLinux 8, 9 or 10, CentOS Stream 9 or 10, or CloudLinux 8, 9 or 10 (the same command works on all of them). Do not install on a server that already hosts websites, email or another control panel.
- You don't need a licence key to install. The command prints a setup link within a minute: the rest happens in your browser, including the free 30-day trial or your key.
- You need root access.
- Open ports 22, 80, 443 and 8443 (and the mail, FTP and DNS ports you need) in your provider's cloud firewall, if it has one. See Ports.
Have ready:
- your domain, for example
yourdomain.com(optional: without one the panel opens on the server's IP) - an email address for SSL notices, alerts and the "server is ready" email
Run the installer
Log in to the server over SSH as root (or run sudo -i), then run:
curl -fsSL https://cdn.hostfog.com/latest | bash
To install from a script instead, see Without the browser.
What happens during the installation
1. Download and checks
The latest script checks that it runs as root, on a supported system, with no other control panel installed. It
installs curl, unzip and openssl if they are missing, then downloads HF Panel into /home/hostfog-install.
The download is checked before anything runs: its checksum must match, and the checksum file must be signed with the HF Panel release key. If either check fails, nothing is installed.
Note: if HF Panel is already installed on the server, the script updates it instead. See Updating.
2. The setup link
The script checks the server (system, memory, disk), draws the HF Panel logo and starts a small setup page on port 8443. It then prints one link, with a QR code of it for your phone:
https://203.0.113.10:8443/setup?code=7Q4K-M2XD
Open it in your browser. Nothing else is installed yet. You can close the SSH window: the setup page keeps running.
Note: the page uses a temporary certificate, so your browser warns you once. That's expected; the real one comes at the end. The link works once, for 24 hours. Lost it? Log in over SSH (the login message reminds you) and run
hf-agent setup-codefor a new one.
3. In the browser
| Step | What you do |
|---|---|
| Check | the page checks the system, memory, disk, public IP and ports 80, 443, 25 and 8443. If another control panel or existing websites are found, it stops and says what to do |
| Setup | your domain (optional; the page checks live that srv. and cp. point to this server), your email, and what to install: websites and MariaDB always, Email and DNS (on by default, they need a domain), PostgreSQL and Docker (off by default) |
| Licence | Start free trial with your email (every feature for 30 days, no card), or paste your key and click Use this key. No licence yet? See plans |
| Admin | your admin login: a username, your email and a password (a meter shows its strength), with the licence it will run with. Click Install now |
| Installing | the install runs with a live percentage and a list that ticks off as it goes; Show details shows the log. You can close the page and come back later, or reload it |
| Done | the panel's addresses, whether the real SSL certificate is in place, your licence, and Open Server Admin. The same details are emailed to you |
What your plan leaves out is not installed (see What gets installed depends on your plan).
4. Installation
The browser runs the same installer as the command line, about 23 steps. Steps your plan or your choices leave out are not run:
| Step | What it does |
|---|---|
| Packages | updates the system and installs the server software |
| HostFog files | the panel's program files, users and folders |
| PHP | PHP for websites, with the common extensions |
| wp-cli, Node.js | tools for WordPress and for customers' Node.js apps (Node.js only when your plan includes Apps) |
| Web servers | Nginx in front, Apache behind it so .htaccess files work |
| Panel certificate | a Let's Encrypt certificate for every server name that already points here (a temporary one until then) |
| Panel on port 8443 | the panel's web server setup (the setup page carries on through it) |
| Files | the File Manager app |
| Service names | the mail names (mail., smtp., imap.) and ftp. |
| Separate panels | Server Admin, Control Panel and the names your plan includes: Reseller Panel, Files, DB Studio and the API (not without a domain, or with --no-portals) |
| MariaDB, MongoDB databases | the database servers for customers (MongoDB only when your plan includes DB Studio) |
| Postfix, Dovecot, DKIM and spam filtering (when your plan includes Email and it is ticked) | |
| DNS server | BIND, authoritative only (when your plan includes DNS and it is ticked) |
| FTP, SFTP | FTP with TLS, and SFTP kept to each account's home |
| Firewall, fail2ban | opens the needed ports and blocks repeated failed logins |
| Extra software | PostgreSQL and Docker, when ticked |
| Scheduled jobs | statistics every 5 minutes, the nightly jobs, log rotation |
| Disk quotas | only with --quotas |
| Production settings | automatic restarts, security updates, swap on small servers, mail app auto-setup |
| Panel database | creates the panel's database and your admin login |
| Websites | writes the web server settings of every website |
It usually takes 10–15 minutes, depending on the server and its network.
Note: everything the commands print goes to
/var/log/hostfog-install.log. If a step fails, the page shows why and the last lines of that log; fix the problem and click Try again (the install carries on where it stopped). See Troubleshoot the installation.
5. Done
When the page shows HF Panel is ready, the setup page removes itself and the panel takes over the port. Click Open Server Admin and sign in with the admin login you made. Getting started on the Overview lists what to do next.
The "server is ready" email lists your addresses and DNS records. The admin mailbox admin@yourdomain.com and its
password are kept in /root/hostfog-mailboxes.txt, which only root can read.
Without the browser
Give the answers on the command line, for example in a script:
curl -fsSL https://cdn.hostfog.com/latest | bash -s -- --yes --domain yourdomain.com --email you@yourdomain.com --trial
Use --licence KEY instead of --trial for a key. Everything installs in the terminal, which ends with a summary and
a setup link: open it to create your admin login. See
Customise the installation.
What gets installed depends on your plan
HF Panel is sold as plans. Each licence includes a set of features, and the installer sets up only the server software those features need. A licence made before plans existed includes everything.
| Not in your plan | What the installer leaves out |
|---|---|
Postfix, Dovecot, DKIM, spam filtering and Mail, as with --no-mail |
|
| DNS | the DNS server (BIND), as with --no-dns |
| Reseller Panel | the rs.yourdomain.com address |
| Files | the fm.yourdomain.com address |
| DB Studio | the dbs.yourdomain.com address, PostgreSQL and MongoDB databases |
| API | the api.yourdomain.com address (and pay. and hook.) |
| Billing | the pay.yourdomain.com and hook.yourdomain.com addresses |
| Apps | Node.js, Ruby, Perl modules, PEAR and Composer for customers' apps |
| Docker | nothing at install time: it is set up from Server Admin when first used, and only when your plan includes it |
Everything else (websites, SSL, MySQL databases, FTP and SFTP, the File Manager inside the Control Panel, security, local backups) is always installed. The other features, such as Billing or White label, are parts of the panel and need no extra software.
Options can only take more away: --no-mail leaves email out even when your plan includes it.
Note: when your plan changes later, the server follows by itself once a day, or straight away with
hf-agent licence sync. What your plan gained is set up; what it lost is switched off. Your data is never deleted. See Server commands.
When it finishes
Sign in to Server Admin at:
https://srv.yourdomain.com:8443
with the admin login you made. Without a domain the panel is at https://<server IP>:8443. The
panels open with the port :8443 only; the same names without the port go to your website. Then follow After installation.
With --no-portals, there is one panel for everyone at https://cp.yourdomain.com:8443, with Files at
/files/, DB Studio at /studio/ and the API at /api/v1 on the same address.