NexWHM Server Installation Guide
Overview
The NexWHM server package is installed on a **fresh supported Ubuntu VPS**. The public website at https://nexwhm.com provides the bootstrap installer and release files; the VPS runs the actual NexHM (server administration panel), NexPanel (customer hosting panel), NexAgent/NexCTL components, and hosting services.
The current stable release is **Nex Hosting Suite 1.0.0**.
Before you start
Use a fresh VPS. The installer is a system-level installer and should not be run on a server that already has HestiaCP, cPanel, Plesk, another hosting control panel, or conflicting Nginx/Apache/MySQL/DNS/mail configuration.
Current supported operating systems:
- Ubuntu 24.04 LTS
- Ubuntu 26.04 LTS
- x86_64/amd64 is the expected server architecture for the current release.
You need:
- Root access or `sudo` access
- A public IPv4 address
- A server hostname, for example `server1.example.com`
- A hostname for NexHM, for example `whm.example.com`
- A hostname for NexPanel, for example `panel.example.com`
- DNS nameservers, for example `ns1.example.com` and optionally `ns2.example.com`
- Enough disk, RAM, and CPU for the hosting workload
Recommended DNS layout
Before or immediately after installation, plan these DNS records:
```text
server1.example.com -> VPS_PUBLIC_IP
whm.example.com -> VPS_PUBLIC_IP
panel.example.com -> VPS_PUBLIC_IP
ns1.example.com -> VPS_PUBLIC_IP
ns2.example.com -> VPS_PUBLIC_IP
If `ns1` and `ns2` are inside the same domain, create the required registrar glue/child nameservers at your domain registrar. A second nameserver on a different network is recommended for production DNS redundancy.
## Install from nexwhm.com
SSH into the fresh VPS as root or an account with sudo privileges.
Download the official bootstrap installer:
```bash
wget https://nexwhm.com/downloads/install.sh
Make it executable:
```bash
chmod 700 install.sh
Run it as root:
```bash
sudo ./install.sh
You can also run it directly with Bash after downloading:
```bash
sudo bash install.sh
The bootstrap installer downloads the versioned Nex Hosting Suite archive from the central NexWHM server and verifies its SHA-256 checksum before executing the bundled installer.
## Installer questions
The current installer asks for the following values. Have them ready before starting.
### 1. NexHM hostname
Example:
```text
whm.example.com
This becomes the hostname used to access the server administration panel.
2. NexPanel hostname
Example:
```text
panel.example.com
This becomes the hostname used for the customer hosting panel.
### 3. Server hostname
Example:
```text
server1.example.com
Use the VPS's real fully qualified hostname.
4. Public IPv4 address
Example:
```text
203.0.113.10
Use the public IPv4 assigned to the VPS.
### 5. Primary DNS nameserver
Example:
```text
ns1.example.com
6. Secondary DNS nameserver
Example:
```text
ns2.example.com
This is optional during installation.
### 7. NexHM administrator username
Example:
```text
admin
The default suggestion is admin.
8. Administrator password
The current installer requires at least **10 characters**. Use a unique, high-entropy password.
9. Administrator email
Use an address that the server administrator can access.
10. Nex Hosting database password
The current installer requires at least **16 characters**. Use a unique password that is not reused elsewhere.
What the installer installs
The current Nex Hosting Suite installer installs/configures the following major components:
- NexHM
- NexPanel
- NexAgent/NexCTL provisioning components
- Nginx
- PHP CLI/FPM
- MySQL Server
- BIND9 DNS
- Postfix
- Dovecot IMAP/POP3
- Certbot
- rsync
- unzip/curl and required PHP extensions
It creates the main application under:
```text
/opt/nexhosting
System configuration is stored under:
```text
/etc/nexhosting
The web roots are exposed through:
```text
/var/www/nexhosting/panel
/var/www/nexhosting/hm
The command-line provisioning utility is installed as:
```text
/usr/local/sbin/nexctl
Database
The installer creates:
```text
Database: nexhosting
User: nexhosting
Host: 127.0.0.1
Port: 3306
The database password is supplied during installation and stored in the protected system configuration at:
```text
/etc/nexhosting/config.php
Do not make this file web-accessible or share its contents publicly.
After installation
The installer displays the configured NexHM and NexPanel URLs. They will initially be HTTP endpoints because the current installer creates the Nginx virtual hosts before TLS is issued.
Example:
```text
NexHM: http://whm.example.com
NexPanel: http://panel.example.com
Confirm that the DNS records point to the VPS and that both hostnames resolve correctly.
## Enable HTTPS
After DNS has propagated and both hostnames resolve to the server, issue certificates using Certbot/Nginx. For example:
```bash
sudo certbot --nginx -d whm.example.com
sudo certbot --nginx -d panel.example.com
Follow Certbot's prompts and verify the resulting HTTPS URLs:
```text
https://whm.example.com
https://panel.example.com
Do not expose an administrative panel over the public Internet without properly configured HTTPS.
## Firewall
The firewall should be configured according to the services you actually enable. At minimum, SSH and web traffic must remain reachable during setup. Typical web hosting ports include:
```text
22 SSH
80 HTTP
443 HTTPS
53 DNS (TCP/UDP)
25 SMTP (if mail service is enabled)
465 SMTPS (if enabled)
587 Submission (if enabled)
993 IMAPS (if enabled)
995 POP3S (if enabled)
Do not blindly open every port. Restrict administrative services where practical.
Verify the installation
Check the main service status:
```bash
systemctl status nginx
systemctl status mysql
systemctl status bind9
systemctl status postfix
systemctl status dovecot
Check the Nex Hosting command:
```bash
sudo nexctl --help
Check the installed configuration:
```bash
sudo cat /etc/nexhosting/INSTALL_INFO
Check Nginx syntax:
```bash
sudo nginx -t
First login
Open the NexHM hostname in a browser:
```text
https://whm.example.com
Sign in with the administrator username and password selected during installation.
Then open:
```text
https://panel.example.com
Use the appropriate hosting-panel account created by NexHM.
Updating NexWHM
The central NexWHM portal is the release authority. The server updater checks the license/installation, retrieves the current release, verifies the published SHA-256 checksum, and then runs the controlled update hook supplied by the release.
Download the updater:
```bash
wget https://nexwhm.com/downloads/nexwhm-update.sh
chmod 700 nexwhm-update.sh
Then run it with the installation credentials supplied by your NexWHM licensing system:
```bash
sudo NEXWHM_LICENSE_KEY='YOUR-LICENSE' \
NEXWHM_INSTALLATION_ID='YOUR-INSTALLATION-ID' \
NEXWHM_CURRENT_VERSION='1.0.0' \
bash ./nexwhm-update.sh
The updater is for existing installations; it is not a replacement for the first-time installer.
Troubleshooting
Installer says the OS is unsupported
Check:
```bash
cat /etc/os-release
The current release accepts Ubuntu 24.04 and Ubuntu 26.04.
### DNS hostname does not open
Check the DNS records:
```bash
dig +short whm.example.com
dig +short panel.example.com
Both should return the VPS public IPv4 address.
Nginx configuration error
Run:
```bash
sudo nginx -t
Then inspect:
```bash
sudo journalctl -u nginx --no-pager -n 100
PHP errors
Check the PHP-FPM services and Nginx error log:
```bash
systemctl --type=service | grep php
sudo journalctl -u nginx --no-pager -n 100
### Database problems
Check MySQL:
```bash
systemctl status mysql
Do not post /etc/nexhosting/config.php publicly because it contains the database password.
Important production notes
The current 1.0.0 server package is the initial Nex Hosting Suite release. Before using it for a large production hosting fleet, test the complete workflow on a disposable VPS: account creation, website provisioning, PHP-FPM isolation, DNS changes, SSL issuance, database creation, mail delivery, backups, suspension/termination, and recovery.
Never install it over an existing hosting control panel. If you need to migrate from HestiaCP, cPanel, or another panel, perform a planned migration to a clean NexWHM server instead of running the installer on the existing panel server.
Quick installation reference
For an administrator who already has the prerequisites prepared:
```bash
wget https://nexwhm.com/downloads/install.sh
chmod 700 install.sh
sudo ./install.sh
Then answer the installer questions, configure DNS, issue HTTPS certificates, and verify NexHM/NexPanel access.
