> For the complete documentation index, see [llms.txt](https://docs.openiam.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openiam.com/installation/obtain-the-software.md).

# Obtain the software

Get the package and its components onto the host, online or in an air-gapped environment.

## What this covers, and how long it takes

<table><thead><tr><th width="123.60000610351562"></th><th></th></tr></thead><tbody><tr><td><strong>You get</strong></td><td>The OpenIAM package and its components in place on the host</td></tr><tr><td><strong>Time</strong></td><td>10–20 minutes with internet access; longer offline, since you stage the files first</td></tr><tr><td><strong>Hosts</strong></td><td>Each host you are installing on</td></tr><tr><td><strong>Downtime</strong></td><td>None</td></tr><tr><td><strong>Reversible</strong></td><td>Yes — these are files on disk</td></tr></tbody></table>

## Before you start

* The host meets [*What you need*](/installation/what-you-need.md).
* Your OpenIAM version number and entitlement channel, both shown on your OpenIAM download entitlement.

## Set these first

Fill this in once. The download URLs and the checks below use it.

{% code overflow="wrap" %}

```bash
export OPENIAM_VERSION=<your release, for example 2026.10.1>
export OPENIAM_CHANNEL=release
export OPENIAM_TYPE=enterprise
export EL_VERSION=$(grep -o 'el[0-9]*' /etc/os-release | head -1)   # on the target host
export TARGET_HOST=<the host you are installing on>
```

{% endcode %}

## Three-node deployments

A three-node build needs one more artefact: **the OpenIAM cluster installation tooling**, a Git repository that installs and configures all three hosts from one of them. Your OpenIAM account team provides the repository URL and the credentials for it with your other artefacts.

It is versioned alongside the platform — **use the exact revision your OpenIAM account team issues for the release you are installing.** You need it on the first node only.

[*Install*](/installation/rpm/rpm-ha/install.md) covers what to do with it.

## The package

Your OpenIAM account team supplies the package for your entitlement channel and version, either as a download link or on media. It is also at a predictable address, built from the values you set above:

{% code overflow="wrap" %}

```http
https://download.openiam.com/$OPENIAM_CHANNEL/$OPENIAM_TYPE/$OPENIAM_VERSION/rpm/openiam-$OPENIAM_VERSION.noarch.x86_64.rpm
```

{% endcode %}

For example, for OpenIAM 2026.10.1:

{% code overflow="wrap" %}

```
https://download.openiam.com/release/enterprise/2026.10.1/rpm/openiam-2026.10.1.noarch.x86_64.rpm
```

{% endcode %}

Place it in a working directory on the host — `/root` or `/tmp` is fine.

Do not install it yet: [*Install*](/installation/rpm/rpm-single-node/install.md) covers when, and what installing it does to the host.

## Components

The installation also uses four component files:

<table><thead><tr><th width="269.20001220703125">File</th><th>Contents</th></tr></thead><tbody><tr><td><code>openiamrepo.tar.gz</code></td><td>Dependency repository — matched to your Enterprise Linux major version</td></tr><tr><td><code>backend.tar.gz</code></td><td>Platform services</td></tr><tr><td><code>frontend.tar.gz</code></td><td>User interfaces</td></tr><tr><td><code>ldap-connector-rabbitmq.jar</code></td><td>LDAP connector, installed by default</td></tr></tbody></table>

**With internet access, the installer retrieves these for you** during `openiam-cli init`. Nothing further is needed on this page — go to the install page.

## Installing a single node in an air-gapped environment

OpenIAM supports installation on a single host with no outbound internet access. Stage the four component files in advance and the installer uses them in place.

On a three-node build, only the first node needs to reach `download.openiam.com` — it retrieves the OpenIAM components once and distributes them to the other two. All three hosts still need their OS vendor's package repositories, because the build installs packages on each of them.

### 1. Download the components on a connected machine

{% code overflow="wrap" %}

```http
https://download.openiam.com/$OPENIAM_CHANNEL/$OPENIAM_TYPE/$OPENIAM_VERSION/dependencies/$EL_VERSION/openiamrepo.tar.gz
https://download.openiam.com/$OPENIAM_CHANNEL/$OPENIAM_TYPE/$OPENIAM_VERSION/binaries/backend.tar.gz
https://download.openiam.com/$OPENIAM_CHANNEL/$OPENIAM_TYPE/$OPENIAM_VERSION/binaries/frontend.tar.gz
https://download.openiam.com/$OPENIAM_CHANNEL/$OPENIAM_TYPE/$OPENIAM_VERSION/connectors/ldap-connector-rabbitmq.jar
```

{% endcode %}

Where `<channel>` is `release`, `<type>` is `enterprise`, `<version>` is your OpenIAM version, and `<el-version>` is the platform identifier from `grep PLATFORM_ID /etc/os-release` — `el9` or `el10`.

For example, for OpenIAM 2026.10.1 on Enterprise Linux 9:

{% code overflow="wrap" %}

```
https://download.openiam.com/release/enterprise/2026.10.1/dependencies/el9/openiamrepo.tar.gz
https://download.openiam.com/release/enterprise/2026.10.1/binaries/backend.tar.gz
https://download.openiam.com/release/enterprise/2026.10.1/binaries/frontend.tar.gz
https://download.openiam.com/release/enterprise/2026.10.1/connectors/ldap-connector-rabbitmq.jar
```

{% endcode %}

**Match the dependency repository to the host's Enterprise Linux version.** It is the one component that differs between EL9 and EL10.

Your OpenIAM account team can supply the components on media for environments where even a staging machine has no outbound access.

**Transfer to the target host** with your usual method, for example:

{% code overflow="wrap" %}

```bash
ssh "root@$TARGET_HOST" mkdir -p /root/openiam-staging
scp openiamrepo.tar.gz backend.tar.gz frontend.tar.gz ldap-connector-rabbitmq.jar \
    "root@$TARGET_HOST:/root/openiam-staging/"
```

{% endcode %}

Move them into `/usr/local/openiam` once the package has created that directory — [*Install*](/installation/rpm/rpm-single-node/install.md) marks the point.

### 2. Place them on the host

All four go in the OpenIAM home directory, `/usr/local/openiam` by default. That directory is created when the package is installed, so this step follows package installation — the install page marks the point.

{% code overflow="wrap" %}

```bash
ls -1 /usr/local/openiam/openiamrepo.tar.gz \
      /usr/local/openiam/backend.tar.gz \
      /usr/local/openiam/frontend.tar.gz \
      /usr/local/openiam/ldap-connector-rabbitmq.jar
```

{% endcode %}

All four must be listed before you continue.

### 3. Configure the installation for offline use

In `/usr/local/openiam/env.conf`:

{% code overflow="wrap" %}

```
export INTERNET_AVAILABLE=false
```

{% endcode %}

The installation also prompts for this; answering *no* sets the same value.

**During an offline installation the installer manages your package repositories.** It temporarily sets aside the repository definitions in `/etc/yum.repos.d/`, installs from the OpenIAM local repository, and restores them when the run completes. If a run is interrupted before it finishes, restore them with:

{% code overflow="wrap" %}

```bash
cd /etc/yum.repos.d/ && for f in *.disabled; do mv "$f" "${f%.disabled}"; done
```

{% endcode %}

Check that directory is clean before starting a fresh run.

## Verify it

On an offline host, confirm all four components are staged:

{% code overflow="wrap" %}

```bash
ls -1 /usr/local/openiam/*.tar.gz /usr/local/openiam/*.jar
```

{% endcode %}

Expected: three archives and one `.jar`. On a connected host this is empty and the installer retrieves them during initialisation.

## If it goes wrong

| What you see                                     | What it means                                                                               | What to do                                                                                    |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| A message asking you to download a file manually | The component could not be retrieved — commonly a channel, version or connectivity mismatch | Stop, place the named file at the path given in the message, and start the installation again |
| `Can't route to openiam website`                 | No outbound path to `download.openiam.com`                                                  | Use the air-gapped procedure above                                                            |
| Package errors during installation               | Usually the dependency repository does not match the host's Enterprise Linux version        | Confirm it matches `PLATFORM_ID`, replace it, and restart the procedure                       |

## What this procedure does not cover

Installing anything. This page gets the software onto the host and confirms it is the right software; the installation itself is on each shape's *Install* page. Licensing terms and entitlement are matters for your OpenIAM agreement.

## Related

* [*What you need*](/installation/what-you-need.md)
* [*Install*](/installation/rpm/rpm-single-node/install.md)

*Applies to OpenIAM 2026.10.1.*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.openiam.com/installation/obtain-the-software.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
