Install WHD in a stand-alone deployment
Before you begin
For advanced configuration requirements and procedures for setting up Federal Information Processing Standard (FIPS) 140-2 compliant cryptography, see the WHD Administrator Guide.
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.
-
WHD_HTTPS_PORT=8443 -
WHD_HTTP_PORT=8080 -
WHD_BACKEND_PORT=8081 -
WHD_FRONTEND_PORT=3000 -
WHD_DB_PORT=20293 -
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.
| 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 port 8443 needs to be accessible from client machines. Ports 8081, 3000, and 20293 are bound to 127.0.0.1 and should not be exposed externally. HTTP listener (WHD_HTTP_PORT) not functional in WHD2026.2.1.
All ports are configurable in |
||
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
Follow the installation instructions for your version of Windows Server.
Instructions for installing on Windows Server 2016, 2019, or 2022
Unlike previous versions, WHD 2026.2.1 does not require setting the JAVA_TOOL_OPTIONS environment variable on Windows Server 2019 or 2022. 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:443Accept the self-signed certificate warning on first access. -
Complete the installation (see below).
Instructions for installing on Windows Server 2025
-
Before beginning the installation process, set JAVA_TOOL_OPTIONS on Windows Server 2025.
-
On the Windows taskbar, right-click the Windows icon and select System.
-
Under Related Settings, click Advanced system settings.
-
From the Advanced tab, click Environment Variables.
-
Under System Variables, click New.
-
Create a new environment variable.
-
In the Variable name field, enter:
JAVA_TOOL_OPTIONS
-
In the Variable value field, enter:
"-Dos.name=Windows Server 2019" -
Click OK > OK to save your changes.
-
-
-
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:443Accept 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>:443The 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>:443 -
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>:443Secure port 443 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>:443. 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 443 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.1 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