Skip to main content

Air-gapped deployment installation guide

Applies to: Air-gapped deployments

This guide walks you through installing the air-gapped components for SecureAuth Identity Platform (IdP) on a server that has no internet connectivity. The air-gapped installer deploys on-premises FIDO and Mobile Services along with the database they depend on, so that organizations operating in regulated or security-sensitive environments can run SecureAuth IdP without any outbound connection to SecureAuth cloud services.

After installation, your air-gapped deployment supports:

  • FIDO2 authentication – Configure FIDO2 in the new admin experience and let end users manage their FIDO keys from the post-authentication page.

  • TOTP multi-factor authentication – Enroll and verify second-factor sign-ins with time-based one-time passwords.

  • Latest IdP release – The installer ships with the most recent SecureAuth IdP release, so your deployment receives current security patches and product improvements without needing to pull updates from the internet.

For a broader description of the air-gapped deployment model, the architecture, and the planning steps, see the Air-gapped deployment overview.

Prerequisites

This guide applies to SecureAuth IdP release 24.5.0.1 or later.

Confirm the following before you start. The installer assumes a baseline IdP environment and a few Windows components are already in place; missing any of them stops the installer early or causes the deployed application to fail at startup.

System requirements

Component

Requirement

Operating system

Windows Server 2016 or later

Web server

Internet Information Services (IIS) installed and running

SecureAuth IdP

Version 24.5.0.1 or later, already installed and operational

Database

PostgreSQL (installed automatically by the air-gapped installer)

IIS module

Microsoft HttpPlatformHandler. Download it from iis.net. The application is hosted out-of-process behind IIS, so this module must be present before the installer deploys the site.

Installer

The air-gapped installer package (AirgapInstaller.exe), provided by SecureAuth Support

Pre-installation checklist

Before launching the installer, verify the following:

  • SecureAuth IdP version 24.5.0.1 (or later) is installed and operational on the target server.

  • IIS is installed and running.

  • The Microsoft HttpPlatformHandler IIS module is downloaded and installed.

  • The air-gapped installer package has been transferred to the target server, for example by USB drive or secure file transfer, to a local directory.

  • You have local administrator privileges on the target server.

Note

Starting with release 26.1.0, the air-gapped installer includes automated PostgreSQL installation and configuration, removing the need to set up the database by hand. PostgreSQL is installed with SecureAuth-approved defaults. If your organization manages its own PostgreSQL instance, you can use that instead. See Run the air-gapped installer.

Install the air-gapped components

Run the following sections in order. The installer performs database setup, extracts the application bundle, and deploys the site under IIS in a single run.

Open an administrator command prompt

The installer registers Windows services, writes to protected directories, and updates IIS. These actions require elevated privileges, so the installer must run from a Command Prompt that was started as Administrator.

  1. Click the Windows Start menu.

  2. Type cmd in the search bar.

  3. Right-click Command Prompt and select Run as administrator.

  4. Click Yes on the User Account Control (UAC) prompt if it appears.

Note

Important: Run the installer only from an elevated Command Prompt. Running without administrator privileges causes the installation to fail.

Run the air-gapped installer

The installer supports two PostgreSQL deployment options. Pick the one that matches how your organization wants to manage the database.

Option A: Automatic installation

Option B: Bring your own PostgreSQL (recommended)

The installer handles the full PostgreSQL installation and configuration: binary extraction, data directory initialization, service registration, and database creation. Use this option when you do not have a separate database team or existing PostgreSQL footprint.

Use the -ip flag:

AirgapInstaller.exe --action install -ip

Install and manage PostgreSQL independently, then provide its connection string to the installer. Use this option when your organization has database standards (backup, monitoring, patching, hardening) it wants to apply.

Use the -cs flag:

AirgapInstaller.exe --action install -cs "Host=<host>;Port=<port>;Database=<db>;Username=<user>;Password=<pass>"
air-gapped-install-003.png

Option B architecture diagram

Note

Important: When using Option B (-cs), confirm that your PostgreSQL instance is already running and reachable before you launch the installer. The connection string must include valid Host, Port, Database, Username, and Password values. The installer skips the PostgreSQL setup steps and connects directly to your existing database.

Command parameters

Parameter

Description

--action install

Specifies that the installer should perform a fresh installation.

-ip

Enables interactive PostgreSQL installation. The installer automatically installs and configures PostgreSQL, prompting you for passwords and host configuration.

-cs

Provides an existing PostgreSQL connection string. Use this flag when you have already installed and configured PostgreSQL. Format: "Host=<host>;Port=<port>;Database=<db>;Username=<user>;Password=<pass>".

The rest of this guide documents the Option A (-ip) workflow. If you are using Option B (-cs), the installer skips the PostgreSQL setup steps below and goes straight to extracting the application bundle and configuring IIS.

air-gapped-install-004.png

Running the air-gapped installer command

Interactive PostgreSQL setup

The first time you run the installer with -ip, it loads its configuration and steps you through PostgreSQL setup interactively. This section describes what to expect and what each prompt controls, so that you can answer them with the right values for your environment.

Step 1: Configuration loading and password setup

The installer validates its configuration file and prompts you to set passwords for two accounts:

  • The PostgreSQL superuser account (postgres), used for administering the database.

  • The application database user (sa_admin), used by SecureAuth IdP to connect to the database.

For each account, enter a custom password or press Enter to auto-generate one. Auto-generated passwords are shown on screen, so capture them before continuing.

air-gapped-install-005.png

Configuration loading and password prompts

Step 2: PostgreSQL host configuration

The installer presents a host/IP selection menu that determines which clients can connect to the new PostgreSQL instance. Available options:

  • localhost (127.0.0.1) – Allows connections only from this server.

  • Network adapter IP – Allows remote connections from other servers through the selected network adapter.

  • Machine hostname – Allows remote connections from other servers and relies on DNS resolution.

  • Enter custom host/IP address – Specify a custom hostname or IP address.

After you select an option, the installer displays a PostgreSQL network configuration summary showing the host, port, database name, connection type, and final connection string. Review the summary before continuing, because changing the host later requires you to restart the installer.

air-gapped-install-006.png

Host configuration menu and network configuration summary

Note

Important: If you select localhost, remote servers will not be able to connect to this PostgreSQL instance. If you need to connect from other servers, restart the installer and select a network IP or hostname.

Step 3: PostgreSQL installation and initialization

Using the values from steps 1 and 2, the installer extracts the PostgreSQL binaries, initializes the data directory, applies SecureAuth-validated postgresql.conf and pg_hba.conf configurations, and registers PostgreSQL as a Windows service. No input is required during this step; the goal is a fully configured database service ready to accept connections.

air-gapped-install-007.png

PostgreSQL binary extraction, data directory initialization, and service configuration

Step 4: Database creation and connection verification

The installer starts the PostgreSQL service, creates the secureauth_idp database and the sa_admin user, validates the connection, and then begins extracting the SecureAuth application bundle. A failure here usually points to a host or password mismatch from earlier steps.

air-gapped-install-008.png

PostgreSQL service started, database created, connection verified, and bundle extraction

Step 5: Application configuration and completion

In the final phase, the installer configures IIS application pools, sets environment variables, deploys the web configuration files, and applies application settings. When the installer finishes, control returns to the command prompt and the SecureAuth site is hosted under IIS using the database created in the previous steps.

air-gapped-install-009.png

Final application configuration and deployment completion

Restart IIS

IIS caches site bindings and application pool configuration. Restarting it after the installer completes ensures the new application pool, environment variables, and configuration files are picked up before users connect.

iisreset

Wait for the confirmation message indicating that IIS has been restarted before continuing to verification.

Verify the installation

After the installer completes and IIS restarts, run the following checks to confirm the deployment is healthy. These checks cover the web tier, the database tier, and the two authentication features the air-gapped solution adds.

  • Verify IIS is running – Open IIS Manager and confirm that the SecureAuth application pool and site are started.

  • Verify PostgreSQL connectivity – Confirm that the PostgreSQL service is running and that the application can connect using the connection string from installation.

  • Access the admin console – Open a browser on the server and go to the SecureAuth admin interface to confirm that the application loads.

  • Test FIDO2 configuration – Go to the FIDO settings in the admin experience and verify they are accessible and configurable.

  • Test TOTP MFA enrollment – Enroll a test user with TOTP MFA to verify that the enrollment workflow is functioning.

Troubleshooting

If the installer fails or the deployed application does not start, use the matrix below to localize the problem before contacting SecureAuth Support.

Issue

Resolution

Installer fails with a permission error

Confirm that the Command Prompt is running as administrator. Right-click Command Prompt and select Run as administrator.

Database connection fails

Verify the connection string values (host, port, database name, username, password). Confirm that the PostgreSQL service is running and reachable from the server.

IIS does not restart

Run iisreset from an elevated Command Prompt. If the issue persists, check the Windows Event Viewer for IIS-related errors.

HttpPlatformHandler not found

Download and install the HttpPlatformHandler module from iis.net before running the installer.

Application does not load after install

Verify that the IIS application pool identity has read and write access to the application directory. Check the application event logs for startup errors.

Quick reference

For experienced administrators, the full installation reduces to the three commands below for each option.

Option A: automatic PostgreSQL

D:\> cd <installer-directory>
AirgapInstaller.exe --action install -ip
iisreset

Option B: existing PostgreSQL

D:\> cd <installer-directory>
AirgapInstaller.exe --action install -cs "Host=<host>;Port=<port>;Database=<db>;Username=<user>;Password=<pass>"
iisreset