Documentation forWeb Help Desk

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  1. Download the installer from the Customer Portal.

    The download is a single installer file: WebHelpDesk-<version>-x64.exe

    1. Quit all other programs.

    2. Log in to the WHD server as an administrator.

    3. Log in to the Customer Portal (https://customerportal.solarwinds.com).

    4. Click Downloads > Download Product.

    5. Click the Products drop-down menu and select Web Help Desk (WHD).

    6. Click the Licenses drop-down menu and select your license tier.

    7. Download Server for Windows 64-bit.

  2. Run the installation file.

    Default install path: C:\Program Files\WebHelpDesk
    1. Right-click WebHelpDesk-<version>-x64.exe and select Run as Administrator.

    2. Complete the on-screen instructions.

    3. 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.
  3. Access the Setup Wizard.

    The installer opens the default browser to: https://localhost:8443

    Accept the self-signed certificate warning on first access.
  4. 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.

  1. Download the installer from the Customer Portal.

    The download is a single installer package: WebHelpDesk-<version>-macos.pkg
    1. Log in to the WHD server as an administrator.

    2. Quit all other programs.

    3. Log in to the Customer Portal (https://customerportal.solarwinds.com).

    4. Click Downloads > Download Product.

    5. Click the Products drop-down menu and select Web Help Desk (WHD).

    6. Click the Licenses drop-down menu and select your license tier.

    7. Download Server for macOS.

  2. Run the installation file. Two options are available:

    Install log: Monitor progress at /tmp/whd-install.log

    Option A: GUI Installer

    1. Double-click WebHelpDesk-<version>-macos.pkg.

    2. Follow the wizard: Welcome > License > Install.

    3. Enter your admin password when prompted.

    4. 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.
  3. Access the Setup Wizard.

    Open a browser and navigate to: https://<server-ip-or-hostname>:8443

    The installer sets WHD_DOMAIN to the detected IP address. Accept the self-signed certificate warning on first access.
  4. 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.

  1. Download the installation file from the Customer Portal.

    1. Quit all other programs.
    2. Log in to the WHD server as an administrator.
    3. Log in to the Customer Portal (https://customerportal.solarwinds.com).
    4. Click Downloads > Download Product.
    5. Click the Products drop-down menu and select Web Help Desk (WHD).
    6. Click the Licenses drop-down menu and select your license tier.
    7. Download Server for RedHat Linux 64-bit.
  2. Extract and install the RPM.

    1. Extract the gzip file: gunzip WebHelpDesk-<version>-linux.rpm.gz

    2. Install the RPM: sudo rpm -ivh WebHelpDesk-<version>-linux.rpm

    This extracts all application files to /opt/webhelpdesk.

  3. Run the installer script.

    cd /opt/webhelpdesk
    sudo bash install.sh

    The 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.

  4. Access the Setup Wizard.

    1. 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:

        1. On the WHD server, edit the configuration file:

          sudo vi /opt/webhelpdesk/conf/whd.env

        2. 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/16

          By 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.

        3. Save and close the file.

        4. Restart the backend service:

          sudo systemctl restart whd-backend

        5. On your workstation, open a browser and navigate to:

          https://<server_IP_address>:8443

          Secure port 8443 is the default HTTPS port. Accept the self-signed certificate warning on first access.

  5. 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):

    1. Select Use Embedded PostgreSQL database.

    2. Enter a Database Name (cannot be postgres, template0, template1, or whd).

    3. Enter a Username (cannot be postgres or whd — these are reserved for internal use).

    4. 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.

    5. Enter Admin Username and Admin Password (used to provision the database and user on the embedded PostgreSQL instance).

    6. Click Test to verify the connection.

    7. 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

    1. Select Use Custom SQL database (advanced).

    2. (Optional) To create a database account, click Create database and user account if necessary, enter the admin credentials, and click Create.

    3. Select the Database Type: PostgreSQL 13+, MySQL 8.0, or Microsoft SQL Server 2017+.

    4. Enter the Host, Port, Database Name, Username, and Password.

    5. Click Test to verify the connection.

    6. Click Next.

Step 2: Set up email accounts (optional)

  1. 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.
  2. Expand Advanced to configure incoming mail ports and TLS settings.

  3. Click Test to verify the email connection.

  4. Click Next to continue.

Step 3: Create the admin account

  1. 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.

  2. 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

  1. Click Finish.

    The Configuration Wizard applies your settings and configures the application. This process may take several minutes to complete.

  2. Click Login as admin to continue setup.

    The wizard opens the WHD Administrator Console on port 8443 using HTTPS.

  3. In the Log In box, enter your administrator email and password, and click Log In.

  4. 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