Install WHD in a stand-alone deployment
These instructions apply only to WHD2026.2 stand-alone installation on a dedicated server. For instruction related to other versions, see Web Help Desk Previous Version Documentation.
For advanced configuration requirements and procedures for setting up Federal Information Processing Standard (FIPS) 140-2 compliant cryptography, see the WHD Administrator Guide.
Security notice: SolarWinds strongly recommends that you install Web Help Desk on a server that is protected from unauthorized access by the public. If your use of Web Help Desk does not need to be public or internet-facing, install it on a server that is neither public, nor internet-facing. To learn about best practices for configuring your Web Help Desk installation securely, see Best practices to secure SolarWinds Products.
Phase 1: Prepare for the installation
Before you install WHD, do the following:
-
Locate the external database credentials (if applicable).
If you plan to use SQL Server, MySQL, or an external PostgreSQL server for your primary database, locate the following:
- IP address or host name and port of the database server
- Database name
- Database user name and password
If you plan to use the bundled embedded PostgreSQL database (recommended for standalone deployments), skip this step. The installer initializes the embedded database automatically. -
Check your administrator account credentials.
- Use an account with local administrative rights.
- Verify that the account is not subject to any local or group policy restrictions.
-
Verify network ports are available.
The following ports must be free on the server:
Port Service Notes 8443 HTTPS (Caddy) Primary browser access 8080 HTTP redirect (Caddy) Redirects to HTTPS 8081 Backend API Internal only (Spring Boot) 3000 Frontend UI Internal only (Next.js) 20293 PostgreSQL Internal only (bundled database) Only ports 8443 and 8080 need to be accessible from client machines. Ports 8081, 3000, and 20293 are bound to 127.0.0.1 and should not be exposed externally. -
Verify system requirements.
All runtimes are fully bundled.
JDK 21, Node.js 22, Caddy 2.11, and PostgreSQL 13 are all included. No external Java, Node.js, or web server installation is required.
No JAVA_TOOL_OPTIONS environment variable is needed. The bundled JDK is self-contained and does not conflict with other Java installations.
Phase 2: Install WHD
Install WHD on a server running one of the following operating systems:
- Microsoft Windows Server 2016 / 2019 / 2022 / 2025
- macOS 13 (Ventura) or later
- Red Hat Enterprise Linux 9+ / CentOS Stream 9+
Install WHD on a server running Microsoft Windows Server
This procedure describes how to install WHD on a server running Microsoft Windows Server 2016, 2019, 2022, or 2025.
Unlike previous versions, WHD 2026.2 does not require setting the JAVA_TOOL_OPTIONS environment variable on Windows Server 2019 or later. The bundled JDK 21 is fully compatible with all supported Windows Server versions.
-
Download the installer from the Customer Portal.
The download is a single installer file:
WebHelpDesk-<version>-x64.exe-
Quit all other programs.
-
Log in to the WHD server as an administrator.
-
Log in to the Customer Portal (https://customerportal.solarwinds.com).
-
Click Downloads > Download Product.
-
Click the Products drop-down menu and select Web Help Desk (WHD).
-
Click the Licenses drop-down menu and select your license tier.
-
Download Server for Windows 64-bit.
-
-
Run the installation file.
Default install path:C:\Program Files\WebHelpDesk-
Right-click WebHelpDesk-<version>-x64.exe and select Run as Administrator.
-
Complete the on-screen instructions.
-
When the installation is complete, click Done.
The installer automatically:
- Installs all application files, bundled runtimes, and configuration.
- Registers four Windows services (WHD-PostgreSQL, WHD-Backend, WHD-Frontend, WHD-Caddy).
- Initializes the embedded PostgreSQL database.
- Generates a self-signed TLS certificate.
- Starts all services.
-
-
Access the Setup Wizard.
The installer opens the default browser to:
https://localhost:8443Accept the self-signed certificate warning on first access. -
Complete the installation (see below).
Install WHD on a server running macOS
This procedure describes how to install WHD on a server running macOS 13 (Ventura) or later. Apple Silicon Macs are supported via Rosetta 2.
-
Download the installer from the Customer Portal.
The download is a single installer package:WebHelpDesk-<version>-macos.pkg-
Log in to the WHD server as an administrator.
-
Quit all other programs.
-
Log in to the Customer Portal (https://customerportal.solarwinds.com).
-
Click Downloads > Download Product.
-
Click the Products drop-down menu and select Web Help Desk (WHD).
-
Click the Licenses drop-down menu and select your license tier.
-
Download Server for macOS.
-
-
Run the installation file. Two options are available:
Install log: Monitor progress at /tmp/whd-install.logOption A: GUI Installer
-
Double-click WebHelpDesk-<version>-macos.pkg.
-
Follow the wizard: Welcome > License > Install.
-
Enter your admin password when prompted.
-
Wait for the postinstall script to complete (~60 seconds).
Option B: Command-Line Installer
sudo installer -pkg WebHelpDesk-<version>-macos.pkg -target /The installer automatically:
- Creates the whd system user and group.
- Installs all files to /opt/webhelpdesk.
- Initializes the embedded PostgreSQL database on port 20293.
- Generates a self-signed TLS certificate.
- Installs and starts four LaunchDaemon services.
-
-
Access the Setup Wizard.
Open a browser and navigate to:
https://<server-ip-or-hostname>:8443The installer sets WHD_DOMAIN to the detected IP address. Accept the self-signed certificate warning on first access. -
Complete the installation (see below).
Install WHD on a server running Red Hat Enterprise Linux 64-bit
This procedure describes how to install WHD on a server running RHEL 9+, CentOS Stream 9+, or Fedora 41+. The server must use systemd.
-
Download the installation file from the Customer Portal.
- Quit all other programs.
- Log in to the WHD server as an administrator.
- Log in to the Customer Portal (https://customerportal.solarwinds.com).
- Click Downloads > Download Product.
- Click the Products drop-down menu and select Web Help Desk (WHD).
- Click the Licenses drop-down menu and select your license tier.
- Download Server for RedHat Linux 64-bit.
-
Extract and install the RPM.
-
Extract the gzip file:
gunzip WebHelpDesk-<version>-linux.rpm.gz -
Install the RPM:
sudo rpm -ivh WebHelpDesk-<version>-linux.rpm
This extracts all application files to /opt/webhelpdesk.
-
- Run the installer script.
cd /opt/webhelpdesksudo bash install.shThe installer runs non-interactively and automatically. It:
- Creates the whd system user and group.
- Initializes the embedded PostgreSQL database on port 20293.
- Generates a self-signed TLS certificate.
- Installs four systemd service units.
- Enables and starts all services.
A typical fresh install takes 30–60 seconds.
-
Access the Setup Wizard.
-
Verify that your Linux server is configured with a supported web browser.
-
If your Linux server has a web browser, open it and navigate to:
https://<server_IP_address>:8443 -
If your Linux server does not have a web browser, you can access the wizard from a remote workstation:
-
On the WHD server, edit the configuration file:
sudo vi /opt/webhelpdesk/conf/whd.env -
Update WHD_WIZARD_PRIVILEGED_NETWORKS to include your workstation IP or subnet. For example:
WHD_WIZARD_PRIVILEGED_NETWORKS=127.0.0.1,10.0.0.0/8,192.168.0.0/16By default, 127.0.0.1, 10.0.0.0/8, and the server's own IP addresses are always allowed. If your workstation is on a subnet not covered by the default value (for example 192.168.x.x or 172.16.x.x), add it here. You can specify individual IPs or CIDR ranges, separated by commas. -
Save and close the file.
-
Restart the backend service:
sudo systemctl restart whd-backend -
On your workstation, open a browser and navigate to:
https://<server_IP_address>:8443Secure port 8443 is the default HTTPS port. Accept the self-signed certificate warning on first access.
-
-
-
-
Complete the installation (see below).
Phase 3: Complete the installation
When all services are running, the Setup Wizard is available at https://<server>:8443. Complete the wizard to configure your WHDdeployment.
Step 1: Select a database
Choose one of the following:
-
Use Embedded PostgreSQL database (recommended)
The installer has already initialized the embedded database. Select this option for standalone deployments.
-
Use Custom SQL database (advanced)
Select this option to use an external PostgreSQL, MySQL, or Microsoft SQL Server database.
-
Embedded PostgreSQL database setup
If using the bundled PostgreSQL (recommended):
-
Select Use Embedded PostgreSQL database.
-
Enter a Database Name (cannot be postgres, template0, template1, or whd).
-
Enter a Username (cannot be postgres or whd — these are reserved for internal use).
-
Enter a Password that meets the following complexity requirements: at least 12 characters, at least one uppercase letter, one lowercase letter, one digit, and one special character.
-
Enter Admin Username and Admin Password (used to provision the database and user on the embedded PostgreSQL instance).
-
Click Test to verify the connection.
-
Click Next.
The embedded PostgreSQL instance listens on 127.0.0.1:20293. The installer creates a whd superuser during initial database setup. The credentials you enter in the wizard are for a separate application-level database user. -
-
Custom SQL database setup
-
Select Use Custom SQL database (advanced).
-
(Optional) To create a database account, click Create database and user account if necessary, enter the admin credentials, and click Create.
-
Select the Database Type: PostgreSQL 13+, MySQL 8.0, or Microsoft SQL Server 2017+.
-
Enter the Host, Port, Database Name, Username, and Password.
-
Click Test to verify the connection.
-
Click Next.
-
Step 2: Set up email accounts (optional)
-
Configure the incoming email account and outgoing SMTP server.
Each incoming mail account is associated with a specific request type and an outgoing mail account (SMTP server) used to deliver notifications.
If you are not ready to set up email accounts, click Skip this step. You can configure email later from Setup > Email in the WHD web console. -
Expand Advanced to configure incoming mail ports and TLS settings.
-
Click Test to verify the email connection.
-
Click Next to continue.
Step 3: Create the admin account
-
Complete the fields to create the default administrator account:
Field Description First Name Administrator's first name Last Name Administrator's last name Username Login username for the admin account Password Admin password (meets complexity requirements) Confirm Password Re-enter the password E-mail Administrator's email address The default admin account is a local super user account used to log in to WHD for the first time and configure the application.
-
Click Next to continue.
Step 4: Configure request types (optional)
The wizard allows you to add or edit preconfigured request types (Hardware, Network, Email/Outlook, etc.).
SolarWinds recommends clicking Finish to bypass this step and plan your request types after WHD is fully configured. See the WHD Getting Started Guidefor information about creating request types.
Step 5: Finish
-
Click Finish.
The Configuration Wizard applies your settings and configures the application. This process may take several minutes to complete.
-
Click Login as admin to continue setup.
The wizard opens the WHD Administrator Console on port 8443 using HTTPS.
-
In the Log In box, enter your administrator email and password, and click Log In.
-
Review the End User License Agreement. If you agree, accept the terms and click Continue.
WHD is now installed and running on your server.
The setup wizard creates a dedicated application-level database user with the credentials you provided. No additional password change is required.
Post-install configuration information
Configuration file
All runtime configuration is managed through a single environment file:
| Platform | Configuration file path |
|---|---|
| Windows | C:\Program Files\WebHelpDesk\conf\whd.env |
| macOS | /opt/webhelpdesk/conf/whd.env |
| Linux | /opt/webhelpdesk/conf/whd.env |
After editing whd.env, restart the affected service(s).
Key configuration variables
| Variable | Default | Description |
|---|---|---|
| WHD_DOMAIN | detected IP | Server hostname or FQDN for TLS certificate |
| WHD_PUBLIC_IP | detected IP | Optional direct IPv4 access target |
| WHD_HTTPS_PORT | 8443 | HTTPS listen port |
| WHD_HTTP_PORT | 8080 | HTTP redirect port |
| WHD_BACKEND_PORT | 8081 | Spring Boot API port |
| WHD_FRONTEND_PORT | 3000 | Next.js server port |
| WHD_DB_HOST | 127.0.0.1 | PostgreSQL host |
| WHD_DB_PORT | 20293 | PostgreSQL port (embedded) |
| WHD_DB_NAME | (set by wizard) | Database name |
| WHD_DB_USER | (set by wizard) | Database user |
| WHD_DB_PASSWORD | (set by wizard) | Database password (encrypted in .whd.properties) |
| WHD_WIZARD_PRIVILEGED_NETWORKS | 127.0.0.1,10.0.0.0/8 | Allowed IPs/CIDR subnets for setup wizard. Localhost and server own IPs always allowed. |
| WHD_FIPS_ENABLED | false | Enable FIPS 140-2 mode (Windows Server only) |
Change the database password
The setup wizard requires you to create a database user with a strong password during initial configuration. The credentials are stored encrypted in conf/.whd.properties.
If you need to change the database password after installation:
Linux
# 1. Update the password in PostgreSQL
sudo -u whd LD_LIBRARY_PATH=/opt/webhelpdesk/bin/pgsql/lib \
/opt/webhelpdesk/bin/pgsql/bin/psql -U whd -h 127.0.0.1 -p 20293 \
-c "ALTER USER your_db_user PASSWORD 'your-new-password';"
# 2. Update the encrypted password in .whd.properties
# (Delete conf/.whd.properties and re-run the setup wizard,
# or update the whd.db.password value with the new password.)
# 3. Restart the backend
sudo systemctl restart whd-backend
macOS
# 1. Update the password in PostgreSQL
sudo -u whd /opt/webhelpdesk/bin/pgsql/bin/psql \
-h 127.0.0.1 -p 20293 -U whd \
-c "ALTER USER your_db_user PASSWORD 'your-new-password';"
# 2. Update the encrypted password in .whd.properties
# 3. Restart the backend
sudo launchctl stop com.solarwinds.whd.backend
sudo launchctl start com.solarwinds.whd.backend
Windows (PowerShell as Administrator)
# 1. Update the password in PostgreSQL
& "C:\Program Files\WebHelpDesk\bin\pgsql\bin\psql.exe" `
-h 127.0.0.1 -p 20293 -U whd `
-c "ALTER USER your_db_user PASSWORD 'your-new-password';"
# 2. Update the encrypted password in .whd.properties
# 3. Restart the backend
net stop WHD-Backend
net start WHD-Backend
Replace the self-signed TLS certificate
Replace cert.pem and key.pem in the conf directory with your CA-signed certificate and private key, then restart Caddy.
Linux / macOS
sudo cp your-cert.pem /opt/webhelpdesk/conf/cert.pem sudo cp your-key.pem /opt/webhelpdesk/conf/key.pem sudo chown whd:whd /opt/webhelpdesk/conf/cert.pem /opt/webhelpdesk/conf/key.pem sudo chmod 640 /opt/webhelpdesk/conf/cert.pem /opt/webhelpdesk/conf/key.pem sudo systemctl restart whd-caddy # Linux sudo launchctl stop com.solarwinds.whd.caddy # macOS
Windows
net stop WHD-Caddy :: Replace conf\cert.pem and conf\key.pem with your files net start WHD-Caddy
JVM memory configuration
The backend JVM starts with -Xms256m -Xmx1024m by default. To adjust for larger deployments:
| Platform | How to change |
|---|---|
| Linux | Edit ExecStart in /etc/systemd/system/whd-backend.service, then sudo systemctl daemon-reload && sudo systemctl restart whd-backend |
| MacOS | Edit ProgramArguments in /Library/LaunchDaemons/com.solarwinds.whd.backend.plist, then restart the service |
| Windows | Edit <arguments> in service\win\whd-backend.xml, then restart the WHD-Backend service |
Sizing guideline
| Concurrent techs | Recommended-Xmx |
|---|---|
| Up to 20 | 1024m (default) |
| 20–50 | 2048m |
| 50–100 | 3072m |
| 100+ | 4096m |
Service management
WHD 2026.2 runs as four independent services. All platforms use the same dependency order:
| Order | Service | Description |
|---|---|---|
| 1 | PostgreSQL | Database (must start first) |
| 2 | Backend | Spring Boot API server (depends on PostgreSQL) |
| 3 | Frontend | Next.js UI server |
| 4 | Caddy | HTTPS reverse proxy (depends on Backend and Frontend) |
WindowsWHD
Using batch scripts (from the install directory)
whd_start.bat :: Start all services whd_stop.bat :: Stop all services whd_restart.bat :: Restart all services whd_diagnose.bat :: Runtime diagnosis whd_open.bat :: Open browser to WHD
Using Windows service commands
:: Start (dependency order) net start WHD-PostgreSQL net start WHD-Backend net start WHD-Frontend net start WHD-Caddy :: Stop (reverse order) net stop WHD-Caddy net stop WHD-Frontend net stop WHD-Backend net stop WHD-PostgreSQL
Check service status
Get-Service -Name 'WHD-*' | Select-Object Name, Status, DisplayName
macOS
Using bundled scripts
sudo /opt/webhelpdesk/scripts/start.sh # Start all services sudo /opt/webhelpdesk/scripts/stop.sh # Stop all services sudo /opt/webhelpdesk/scripts/restart.sh # Restart all services
Using launchctl
# List all WHD services sudo launchctl list | grep com.solarwinds.whd # Stop a service (launchd auto-restarts due to KeepAlive) sudo launchctl stop com.solarwinds.whd.backend # Fully unload (stop + prevent auto-restart) sudo launchctl unload /Library/LaunchDaemons/com.solarwinds.whd.backend.plist # Re-load and start sudo launchctl load -w /Library/LaunchDaemons/com.solarwinds.whd.backend.plist
Linux
Using bundled scripts
sudo /opt/webhelpdesk/scripts/start.sh # Start all services sudo /opt/webhelpdesk/scripts/stop.sh # Stop all services sudo /opt/webhelpdesk/scripts/restart.sh # Restart all services
Using systemctl
# Individual services sudo systemctl start whd-backend sudo systemctl stop whd-backend sudo systemctl restart whd-backend sudo systemctl status whd-backend # Check all WHD services systemctl status whd-pgsql whd-backend whd-frontend whd-caddy # View logs journalctl -u whd-backend -f