Air-gapped

Info

Requires RabbitMQ version 4.2 or later, along with a compatible Erlang version.

Info

To install Redis in an air-gapped environment, download the required packages on a preparation machine and then transfer them to the air-gapped server. The preparation machine should have internet access and run the same operating system version as the target server.

Prerequisites

Before installing the RabbitMQ service, ensure the following requirements are met.

Requirement

Description

Operating System

Debian 12+, Ubuntu 22.04+, Rocky Linux 9+, or RHEL 9+.

Privileges

root or sudo privileges on both the preparation machine and the air-gapped server.

Hardware

4 vCPU and 8 GB RAM.

Disk space

At least 100 GB of available storage.

Network access

Required ports are open:

  • 5672 — AMQP client connections (default).

  • 15672 — Management UI (optional).

A minimum network bandwidth of 1 Gbps is required.

A bandwidth of 5 Gbps or higher is strongly recommended for production deployments.

Debian, Ubuntu

Prepare packages

  1. On the preparation machine, create file prepare_rabbitmq.sh with content:

#!/usr/bin/env bash
#
# Build an offline RabbitMQ (+ Erlang) install bundle for an air-gapped
# Ubuntu/Debian host.
#
# Dependency resolution: apt resolves the FULL closure as if nothing were
# installed (Dir::State::status -> an empty file), so every Erlang module AND
# its base-library dependencies are fetched regardless of what's on this build
# host - the apt equivalent of dnf's --alldeps. The real system is never
# touched (download-only + throwaway status file).

set -euo pipefail

# ---- configuration ---------------------------------------------------------
# Pin the UPSTREAM RabbitMQ version 4.2.5.
# The Debian revision ("-1") is detected automatically from the repo. apt then
# resolves a *compatible* Erlang version for you - don't pin Erlang by hand.
RABBITMQ_UPSTREAM="${RABBITMQ_UPSTREAM:-4.2.5}"
  1. Run commands.

chmod +x prepare_rabbitmq.sh
./prepare_rabbitmq.sh
  1. Copy the rabbitmq-offline folder to a USB drive or secure transfer medium.

  2. Move it to the air-gapped server.

Install RabbitMQ

  1. On the target server, insert the USB drive or secure transfer medium.

  2. Copy rabbitmq-offline folder to /opt/rabbitmq-offline. E.g:

sudo cp -r rabbitmq-offline /opt/rabbitmq-offline
  1. Run the commands below.

# Verify integrity:
cd /opt/rabbitmq-offline && sha256sum -c SHA256SUMS

# Register it as a local apt repo:
echo "deb [trusted=yes] file:/opt/rabbitmq-offline ./" \
| sudo tee /etc/apt/sources.list.d/rabbitmq-offline.list

# Update using ONLY this source:
sudo apt-get -o Dir::Etc::sourcelist="sources.list.d/rabbitmq-offline.list" \
-o Dir::Etc::sourceparts="/dev/null" update

# Install
sudo apt-get install -y rabbitmq-server
sudo systemctl enable --now rabbitmq-server
  1. Set up user.

sudo rabbitmqctl add_user <username> <password>
sudo rabbitmqctl set_permissions -p / <username> "." "." "."
sudo rabbitmqctl set_user_tags <username> administrator

Rocky, RHEL

Prepare packages

  1. On the preparation machine, create file prepare_rabbitmq.sh with content:

#!/usr/bin/env bash
#
# Offline RabbitMQ bundle via GitHub releases - use this when the
# yum1/yum2.rabbitmq.com mirrors are unreachable from your build host but
# github.com AND the Rocky repos ARE reachable.
#
# How dependency resolution works here: the two RabbitMQ/Erlang RPMs come from
# GitHub (not a repo), so we stage them into a temporary local repo, then let
# dnf resolve their FULL dependency closure against that staging repo + the
# Rocky repos. That pulls ncurses-libs, openssl-libs, socat, logrotate, etc.
#
# RabbitMQ 4.2.x runs on Erlang 26.2.x or 27.x - verify at
# https://www.rabbitmq.com/docs/which-erlang
# and pick an available release from
# https://github.com/rabbitmq/erlang-rpm/releases

set -euo pipefail

# ---- configuration (check the GitHub releases pages for exact asset names) --
  1. Run commands.

chmod +x prepare_rabbitmq.sh
./prepare_rabbitmq.sh
  1. Copy the rabbitmq-offline folder to a USB drive or secure transfer medium.

  2. Move it to the air-gapped server.

Install RabbitMQ

  1. On the target server, insert the USB drive or secure transfer medium.

  2. Copy rabbitmq-offline folder to /opt/rabbitmq-offline. E.g:

sudo cp -r rabbitmq-offline /opt/rabbitmq-offline
  1. Run the commands below.

# Verify integrity:
cd /opt/rabbitmq-offline && sha256sum -c SHA256SUMS

sudo dnf install -y \
--disablerepo='*' \
--repofrompath=rmqoffline,/opt/rabbitmq-offline \
--setopt=rmqoffline.gpgcheck=0 \
rabbitmq-server
sudo systemctl enable --now rabbitmq-server
  1. Set up user.

sudo rabbitmqctl add_user <username> <password>
sudo rabbitmqctl set_permissions -p / <username> "." "." "."
sudo rabbitmqctl set_user_tags <username> administrator