PanelDOCSv1.0.0

Customise the installation

Every installer option, unattended installs without questions, and how to change the same things after installing.

Without options, curl -fsSL https://cdn.hostfog.com/latest | bash prints a setup link and you choose everything in the browser (see Install). Give options instead to install in the terminal: answer its questions in advance, choose the panel port, or leave parts out. Options go after bash -s -- (or after bash latest when you downloaded the file first with curl -o latest -L https://cdn.hostfog.com/latest); --domain, --hostname, --email or --yes install in the terminal.

Options

Option What it does Default
--licence KEY your licence key, activated during the install (--license works too) added in the panel's setup
--trial start the free 30-day trial for this server and the --email address during the install added in the panel's setup
--domain DOMAIN your domain, for example yourdomain.com (the Control Panel becomes cp.yourdomain.com) asked
--yes ask nothing: give --domain (or --hostname) and --email too questions asked
--hostname NAME the server's own name, for example cp.yourdomain.com. The domain after the first dot is used for every other address asked as Domain, then cp. + your domain
--email ADDRESS the administrator's email: SSL notices, alerts, the "server is ready" email asked
--company "NAME" the company name in email footers and sender names your domain's first part, with a capital
--port PORT the panels' port 8443
--ns1 NAME, --ns2 NAME your nameservers' names ns1. and ns2. + your domain
--mail-host NAME the mail server's name: the MX, the name it greets other servers with, and the reverse DNS mail. + your domain
--node VERSION the Node.js version for customers' apps: a major version, 18 or newer (for example 22) 24
--quotas hard disk quotas per account on the / filesystem off
--no-mail no email: no Postfix, Dovecot, spam filtering or Mail email on
--no-dns no DNS server (BIND): your domains' DNS stays at another provider DNS on
--no-domain no domain yet: one panel on the server's IP, no email or DNS server (with --yes) a domain
--postgresql, --docker also install PostgreSQL or Docker (the browser's ticks) not installed
--no-portals one panel for everyone at https://cp.yourdomain.com:8443, instead of separate Server Admin, Control Panel and Reseller Panel separate panels

What gets installed depends on your plan

Your licence's plan decides which parts are installed: without Email the installer works as with --no-mail, without DNS as with --no-dns, and without Reseller Panel, Files, DB Studio or API it leaves out that part's own address (rs., fm., dbs., api.; without API or Billing also pay. and hook.). Without DB Studio there are no PostgreSQL and MongoDB databases, and without Apps no Node.js, Ruby, Perl modules, PEAR or Composer. The full list is in Install.

The options above can only take more away. A part you leave out with an option (--no-mail, --no-dns, --no-portals) stays out when your plan changes later; hf-agent licence sync never adds it back.

Note: the company name is asked only when the domain or email is asked too. In an install without questions it is --company, or the suggestion.

Install without any questions

Give the domain and the email, and add --yes; the installer then asks nothing. Add --licence KEY or --trial to activate the licence during the install:

bash
curl -fsSL https://cdn.hostfog.com/latest | bash -s -- --yes --domain yourdomain.com \
  --email you@yourdomain.com --company "Your Hosting Ltd" --licence HFL-XXXXX-XXXXX-XXXXX-XXXXX

The install ends with a setup link where you create the first admin login in the browser. From a script, create it on the server instead:

bash
hf-agent create-admin

Examples

A web-only server, with email and DNS handled elsewhere:

bash
bash latest --no-mail --no-dns

A different panel port and Node.js 22:

bash
bash latest --port 2083 --node 22

Your own mail server and nameserver names:

bash
bash latest --mail-host mx1.yourdomain.com --ns1 dns1.yourdomain.com --ns2 dns2.yourdomain.com

Note: when you change the port with --port, open that port instead of 8443 in your provider's firewall, and use it in the panel addresses, for example https://srv.yourdomain.com:2083.

Change things after installing

What How
Follow a plan change now (set up what it gained, switch off what it lost) hf-agent licence sync (runs once a day by itself)
Separate panels on or off, or other names for them hf-agent portals on / hf-agent portals off (--admin, --customer and --reseller choose the names)
Files, DB Studio, the API, the billing pages, the payment webhooks or the status page on their own address hf-agent files-portal on|off, hf-agent db-portal on|off, hf-agent api-portal on|off, hf-agent pay-portal on|off, hf-agent hook-portal on|off, hf-agent status-page on|off
The mail server's name hf-agent mail-name mail2.yourdomain.com
Newer Nginx, Apache, MariaDB, PostgreSQL, Redis, Node.js Server Admin › System › Software › Software versions
PHP versions Server Admin › System › PHP & Node.js
The company name, logo and colours Server Admin › System › White label
Every other server command Server commands