# Install NGINX Instance Manager using a script (disconnected)
Type of document: How-to guide
Product: NGINX Instance Manager
> Use the install-nim-bundle.sh script to install or upgrade F5 NGINX Instance Manager in a disconnected (offline) environment.
---
**Note:** Some commands, file paths, and configuration references still use `nms` due to the ongoing transition from NGINX Management Suite (NMS) to NGINX Instance Manager (NIM). These will be updated in future releases.
## Overview
Use the `install-nim-bundle.sh` script to install and upgrade F5 NGINX Instance Manager in disconnected environments.
The script installs:
- The latest version of NGINX Open Source
- The latest version of NGINX Instance Manager
- ClickHouse, unless you choose to skip it
NGINX Plus is not supported in disconnected mode. To install earlier versions of NGINX or NGINX Instance Manager, use the [manual installation process](nim/disconnected/offline-install-guide-manual.md) instead.
---
## Before you begin
You’ll need internet access for the steps in this section.
### Prepare for installation
Before running `install-nim-bundle.sh`, address the following:
#### Handle an existing NGINX Instance Manager installation
The script supports only new installations. If NGINX Instance Manager is already installed, take one of the following actions:
- **Upgrade manually**
The script can't perform upgrades. To update an existing installation, follow the [upgrade steps](#upgrade-nim) in this guide.
- **Uninstall first**
To start fresh, use the [uninstall steps](#uninstall-nim) to remove the primary components, then manually check for and remove leftover files such as repository configurations or custom settings.
#### Verify SSL certificates and private keys
Make sure the required `.crt` and `.key` files are available, preferably in the default **/etc/ssl/nginx** directory. Missing certificates or keys will prevent the script from completing the installation.
#### Use manual installation if the script fails
If the script fails or you need more control, use the [manual installation steps](nim/disconnected/offline-install-guide-manual.md) instead.
### Download the SSL certificate and private key from MyF5
Download the SSL certificate and private key required for NGINX Instance Manager:
1. Log in to [MyF5](https://my.f5.com/manage/s/).
1. Go to **My Products & Plans > Subscriptions** to see your active subscriptions.
1. Find your NGINX products or services subscription, and select the **Subscription ID** for details.
1. Download the **SSL Certificate** and **Private Key** files.
### Download the installation script
[icon: download] [Download the install-nim-bundle.sh script.](/scripts/install-nim-bundle.sh)
## Package NGINX Instance Manager for offline installation
Run the script in `offline` mode to download NGINX Instance Manager, NGINX Open Source, ClickHouse (unless skipped), and all required dependencies into a tarball.
### Installation script options
| Category | Option or Flag |
|----------|----------------|
| **Installation mode and platform** | `-m offline`: Required to package the installation files into a tarball for disconnected environments.
`-d `: Target Linux distribution (for example, `ubuntu22.04`, `rhel8`)
To see the list of supported distributions, run:
```shell
install-nim-bundle.sh -l
``` |
| **SSL certificate and key** | `-k `: Path to the downloaded private key file, the script will rename it to `nginx-repo.key` and copy to `/etc/ssl/nginx`. |
| **NGINX installation** | `-n`: Include the latest version of NGINX Open Source in the tarball.
This option is optional in `offline` mode—if not specified, the script installs the latest version of NGINX Open Source by default.
NGINX Plus is **not supported** when using the script in offline mode.
To install NGINX Plus offline, see the [manual installation guide](nginx/admin-guide/installing-nginx/installing-nginx-plus.md#offline_install). |
| **ClickHouse installation** | `-v `: Install a specific version of ClickHouse. If not set, version `` is installed by default. |
### Example: packaging command
```shell
sudo bash install-nim-bundle.sh \
-c \
-k \
-m offline \
-d \
-v
```
---
## Install NGINX Instance Manager
After you’ve packaged the installation files on a connected system, copy the tarball, script, and SSL files to your disconnected system. Then, run the script again to install NGINX Instance Manager using the tarball.
## OS dependencies for offline installation
The installation script packages NGINX Open Source, NGINX Instance Manager, and ClickHouse. In offline mode, these packages are bundled but their OS-level dependencies are not. Make sure those dependencies are installed before running the script. The following packages are required for each supported distribution type:
### Debian/Ubuntu
- NGINX: libc6, libcrypt1, libpcre2-8-0, libssl3, zlib1g, lsb-base
- NGINX Instance Manager: openssl, rsyslog, systemd, tar, lsb-release, gawk
- ClickHouse: libcap2-bin
### Red Hat-based operating systems
- NGINX: bash, glibc, libxcrypt, openssl-libs, pcre2, zlib, procps-ng, shadow-utils, systemd
- NGINX Instance Manager: glibc, openssl, rsyslog, systemd, tar, which, zlib, yum-utils
- ClickHouse: none
To find the latest dependencies for a specific package version:
- Ubuntu/Debian: `apt-cache depends =`
- Red Hat: `yum deplist `
### Required flags for installing in offline mode
- `-m offline`: Required to run the script in offline mode. When used with `-i`, the script installs NGINX Instance Manager and its dependencies from the specified tarball.
- `-i `: Path to the tarball created during the packaging step.
- `-c `: Path to the downloaded SSL certificate file, the script will rename it to `nginx-repo.crt` and copy to `/etc/ssl/nginx`.
- `-k `: Path to the downloaded private key file, the script will rename it to `nginx-repo.key` and copy to `/etc/ssl/nginx`.
- `-d `: Target Linux distribution (must match what was used during packaging).
### Install from the tarball
1. Copy the following files to the target system:
- `install-nim-bundle.sh` script
- SSL certificate file
- Private key file
- Tarball file with the required packages
2. Run the installation script:
```shell
sudo bash install-nim-bundle.sh \
-m offline
-i
-c
-k \
-d
```
3. **Save the admin password**. After installation completes, the script takes a few minutes to generate a password. At the end of the process, you'll see:
```shell
Regenerated Admin password:
```
Save that password. You'll need it when you sign in to NGINX Instance Manager.
4. After installation, open a browser, go to `https://`, and log in.
---
## Set the operation mode to disconnected {#set-mode-disconnected}
1. Open the `/etc/nms/nms.conf` file and add the following in the `integrations:license` section:
``` yaml
integrations:
license:
mode_of_operation: disconnected
```
2. Restart NGINX Instance Manager:
```shell
sudo systemctl restart nms
```
---
## Optional post-installation steps
### Configure ClickHouse
If you installed ClickHouse and set a password (the default is an empty string), you must add it to the `clickhouse.password` setting in the `/etc/nms/nms.conf` file after installing NGINX Instance Manager. If the password is missing or incorrect, NGINX Instance Manager will not start.
You can also configure additional ClickHouse settings in the same section:
- `clickhouse.username` – the username used to connect to ClickHouse
- `clickhouse.address` – the address of the ClickHouse server (default is `tcp://localhost:9000`)
- `clickhouse.tls_mode` – set to `true` to enable TLS
- TLS certificate settings, such as:
- `clickhouse.tls.cert_path`
- `clickhouse.tls.key_path`
- `clickhouse.tls.ca_path`
- `clickhouse.tls.skip_verify`
For more details, see [Configure ClickHouse](nim/system-configuration/configure-clickhouse.md).
### Disable metrics collection
If you’re not collecting metrics — because you didn’t install ClickHouse or don’t plan to use it — you must disable metrics collection in the `/etc/nms/nms.conf` and `/etc/nms/nms-sm-conf.yaml` files. This setup requires NGINX Agent version .
For instructions, see [Disable metrics collection](nim/system-configuration/configure-clickhouse.md#disable-metrics-collection).
### Install and configure Vault {#install-vault}
NGINX Instance Manager can use [Vault](https://www.vaultproject.io/) as a datastore for secrets.
To install and enable Vault, follow these steps:
- Follow Vault's instructions to [install Vault 1.8.8 or later](https://developer.hashicorp.com/vault/install) for your operating system.
- Ensure you're running Vault in a [production-hardened environment](https://learn.hashicorp.com/tutorials/vault/production-hardening).
- After installing NGINX Instance Manager, follow the steps to [configure Vault for storing secrets](/nim/system-configuration/configure-vault.md).
### Configure SELinux
SELinux helps secure your deployment by enforcing mandatory access control policies.
If you use SELinux, follow the steps in the [Configure SELinux](/nim/system-configuration/configure-selinux.md) guide to restore SELinux contexts (`restorecon`) for the files and directories related to NGINX Instance Manager.
---
## Upgrade NGINX Instance Manager {#upgrade-nim}
To upgrade NGINX Instance Manager to a newer version:
1. Log in to the [MyF5 Customer Portal](https://account.f5.com/myf5) and download the latest package files.
2. Upgrade the package:
- **For RHEL and RPM-based systems**:
```shell
sudo rpm -Uvh --nosignature /home/user/nms-instance-manager_.x86_64.rpm
sudo systemctl restart nms
sudo systemctl restart nginx
```
- **For Debian, Ubuntu, Deb-based systems**:
```shell
sudo apt-get -y install -f /home/user/nms-instance-manager__amd64.deb
sudo systemctl restart nms
sudo systemctl restart nginx
```
**Note:** NGINX Instance Manager components started this way run by default as the non-root `nms` user inside the `nms` group, both of which are created during installation.
3. (Optional) If you use SELinux, follow the [Configure SELinux](/nim/system-configuration/configure-selinux.md) guide to restore SELinux contexts using restorecon for files and directories related to NGINX Instance Manager.
---
## Uninstall NGINX Instance Manager {#uninstall-nim}
Follow the steps below to uninstall NGINX Instance Manager and ClickHouse.
- **For CentOS, RHEL, and RPM-based distributions:**
```shell
sudo yum remove -y nms-*
sudo systemctl stop clickhouse-server
sudo yum remove -y clickhouse-server
```
- **For Debian, Ubuntu, and Deb-based distributions:**
```shell
sudo apt-get remove -y nms-*
sudo systemctl stop clickhouse-server
sudo apt-get remove -y clickhouse-server
```
If you want to remove the package and its configuration files, use `apt-get purge -y ` instead of `apt-get remove -y`.
---
## Update the CVE list {#cve-check}
To manually update the CVE list in an air-gapped environment, run the following command to overwrite `cve.xml` and restart the Data Plane Manager service:
```shell
sudo chmod 777 /usr/share/nms/cve.xml && \
sudo curl -s http://hg.nginx.org/nginx.org/raw-file/tip/xml/en/security_advisories.xml > /usr/share/nms/cve.xml && \
sudo chmod 644 /usr/share/nms/cve.xml && \
sudo systemctl restart nms-dpm
```
---
## Next steps
- [Add NGINX Open Source and NGINX Plus instances to NGINX Instance Manager](nim/nginx-instances/add-instance.md)