On this page

Before You Begin

Make sure your server meets these requirements before starting:

âš ī¸

Do not run on a production server with existing websites. The installer will configure Apache, nginx, MariaDB, Postfix, and other services — potentially overwriting existing configs. Always use a fresh VPS.

Prepare Your Server

SSH into your server as root and run a quick update to make sure packages are current:

ssh root@YOUR-SERVER-IP
apt update && apt upgrade -y
â„šī¸

If apt upgrade prompts about kernel or service restarts, accept the defaults and continue. A reboot before installing hstPanel is a good idea.

Run the Installer

One command downloads and runs the full installer:

bash <(curl -sSL https://hstpanel.net/install.sh)

The installer will:

1

Detect your OS and version

Verifies Ubuntu 22.04 or 24.04. Exits with a clear error if the OS isn't supported.

2

Download the install package

Fetches hst-suite.tar.gz from the CDN (3 retry attempts with wget fallback).

3

Install all services

Installs nginx, Apache, PHP 8.3, MariaDB, Postfix, Dovecot, ClamAV, Fail2ban, Node.js 20, and PM2. Each package retries up to 3 times if it fails.

4

Configure services

Writes nginx vhosts, Apache config, PHP settings, MariaDB root password, Postfix relay config, Dovecot auth, and Fail2ban jails.

5

Deploy hstPanel

Extracts panel, billing, and API server files. Starts the API server with PM2 and saves the process list for auto-start on reboot.

6

Run post-install verification

Checks 30+ items — binaries, services, ports, PHP extensions, firewall rules. Attempts auto-fix on any failures and prints a pass/fail summary.

What Gets Installed

ComponentVersionPurpose
nginx1.24+Reverse proxy on ports 80 and 443. Forwards customer PHP to Apache on 8090.
Apache 22.4PHP execution engine — listens on port 8090 only (not exposed directly).
PHP8.3mysql, curl, gd, mbstring, xml, zip, intl, bcmath, soap, opcache, imagick, redis
MariaDB11.4MySQL-compatible database. Root password auto-generated and saved to /root/.my.cnf.
Postfix3.xOutbound SMTP on port 25 and submission port 587.
Dovecot2.xIMAP (993) and POP3S (995) for mail clients.
ClamAVlatestAntivirus scanner with freshclam auto-update daemon.
Fail2banlatestJails for SSH, nginx-http-auth, and Apache brute-force.
Node.js20 LTSRuntime for the hstPanel API server.
PM2latestProcess manager — keeps the API server running and restarts on reboot.
UFWbuilt-inFirewall rules for 22, 80, 443, 25, 587, 993, 995, 8443.

After Installation

Once the installer completes, you'll see a summary with your access details:

╔══════════════════════════════════════════════╗
║        hstPanel v3.0.0 — Install Complete     ║
╚══════════════════════════════════════════════╝

  Panel URL  :  https://YOUR-IP:8443
  WHM URL    :  https://YOUR-IP:8443/whm
  API Port   :  8090
  DB Root PW :  (saved to /root/.my.cnf)

  Verification: 28 passed / 2 failed

Open the panel URL in your browser. You'll get a self-signed certificate warning — click through to proceed (you can add a Let's Encrypt cert later through WHM).

Ports & Firewall

The installer opens these ports automatically via UFW:

PortProtocolService
22TCPSSH
80TCPHTTP (nginx — redirects to 443)
443TCPHTTPS (nginx)
8443TCPhstPanel UI (HTTPS)
25TCPSMTP (Postfix)
587TCPSMTP Submission (Postfix)
993TCPIMAPS (Dovecot)
995TCPPOP3S (Dovecot)
â„šī¸

Port 8090 (Apache) is not opened externally — nginx proxies customer PHP traffic to it internally. There's no need to expose 8090 through your host's external firewall/security group.

Re-running the Installer

The installer is safe to re-run. If components failed during the first run, run it again:

bash <(curl -sSL https://hstpanel.net/install.sh)

Each component checks whether it's already installed before attempting to reinstall. Services are restarted but not re-configured if already set up. This makes the installer fully idempotent.

💡

Check /var/log/hst-bootstrap.log for a full log of the bootstrap process, and /var/log/hst-install.log for the main installer output.