Installing from the archive
Install the gateway with one command or from a downloaded archive, install on an air-gapped host, answer the deploy.sh prompts, verify the install, and install without deploy.sh.
The gateway is published on GitHub Releases as the archive RST-AI-Copilot-for-QRadar-<version>.tar.gz, with a .sha256 file of the same name for verification. The archive carries every image and deployment file, and its deploy.sh does the installation: it loads the images, collects the configuration, writes .env and starts the containers. Starting with 1.0.1, install.sh combines download, verification, unpacking and deploy.sh into one command.
Archive contents
RST-AI-Copilot-for-QRadar-<version>/
├── RST-AI-Copilot-for-QRadar-images-<version>.tar # gateway, Caddy and PostgreSQL images
├── deploy.sh # interactive installer
├── docker-compose.prod.yml # built-in login
├── docker-compose.sso.yml # SSO
├── Caddyfile, Caddyfile.sso
├── .env.example # every setting, with notes
├── deploy/rst-update.sh # online update installer
├── scripts/backup.sh, scripts/restore.sh
└── docs/ # DEPLOYMENT.md, BACKUP.md, RELEASE-NOTES.mdBefore it starts the containers, deploy.sh checks that every image the compose file uses is present on the host. If any is missing, it lists the image names and asks whether to pull them. On an air-gapped host, answer no and the installation stops.
Install with one command
Available starting with 1.0.1.
Prerequisites
- Docker Engine 24 or later and Docker Compose v2 are installed.
- The host can reach
github.com. - You run the command from an interactive terminal, because
deploy.shreads input.
Steps
-
Run the installer:
curl -fsSL https://github.com/Reallysec/RST-AI-Copilot-for-QRadar/releases/latest/download/install.sh | sudo bashEvery edition uses the same archive: without a license it runs as Community, and activating a license under Settings > License unlocks that edition in place, with no reinstall.
-
Answer the
deploy.shprompts. See deploy.sh prompts below.
The script unpacks the archive into /opt/rst-ai-copilot-for-qradar and runs deploy.sh there. Hosts installed with 1.1.15 or earlier are upgraded in their existing directory /opt/rst-qradar-ai-copilot. When you run it again on the same host, .env and state/ in that directory are kept, and the license's host fingerprint does not change. The same command therefore upgrades an install.
| Option | Description |
|---|---|
--version <x.y.z> | Install a specific version; the latest by default |
--dir <path> | Installation directory; /opt/rst-ai-copilot-for-qradar by default. An existing /opt/rst-qradar-ai-copilot (installed with 1.1.15 or earlier) is kept |
--download-only | Download and verify the archive into the current directory, without installing |
Install on an air-gapped host
Steps
-
On a machine that can reach GitHub, download and verify the archive:
curl -fsSL https://github.com/Reallysec/RST-AI-Copilot-for-QRadar/releases/latest/download/install.sh | bash -s -- --download-only -
Copy
RST-AI-Copilot-for-QRadar-<version>.tar.gzand its.sha256file from the current directory to the air-gapped host. -
On the air-gapped host, follow Install the archive by hand.
Install the archive by hand
Steps
-
Download
RST-AI-Copilot-for-QRadar-<version>.tar.gzand its.sha256file from GitHub Releases. Every edition uses the same archive; the activated license decides which features are on. -
Verify and unpack it:
sha256sum -c RST-AI-Copilot-for-QRadar-<version>.tar.gz.sha256 tar xzf RST-AI-Copilot-for-QRadar-<version>.tar.gz cd RST-AI-Copilot-for-QRadar-<version> -
Run
sudo ./deploy.shand answer the prompts.
deploy.sh prompts
The script runs in seven steps: preflight, image load, check for an existing .env, authentication mode, configuration, write .env, start. The preflight generates state/machine-id and state/server_guid, the license's hardware fingerprint, or reuses them if they exist. If .env already exists, the script asks whether to keep it and start; keep it when upgrading.
| Prompt | Value |
|---|---|
| Authentication | 1 for built-in login, 2 for SSO. See SSO |
| LLM endpoint URL | https://ark.cn-beijing.volces.com/api/v3 by default |
| LLM API key | Not echoed |
| LLM model id | ark-code-latest on the Volcengine Ark coding plan, ep-xxx for a dedicated endpoint |
| Timezone offset | +08:00 by default. The model uses it to interpret "today" and "yesterday"; written to RST_TIMEZONE |
| QRadar Console URL | For example https://qradar.corp.local, without a path |
| Authorized-service SEC token | Not echoed |
| Whether the Console uses a trusted TLS certificate | No by default, which skips verification. Yes writes RST_QRADAR_VERIFY_CERTS=true |
| Caddy hostname or IP | Analysts open https://<hostname>/v2/; use a hostname |
| Admin password | At least 8 characters, entered twice. With SSO, the script asks for the OIDC issuer, client id and client secret instead |
The script generates RST_GATEWAY_SHARED_SECRET, RST_ADMIN_TOKEN, RST_USER_DB_PASSWORD and the admin password hash, and writes them to .env with mode 600. After starting, it waits up to 90 seconds for every container to become healthy, then prints the running version and the URL.
Verify the installation
Steps
-
Check health and readiness:
curl -k https://<hostname>/healthz # {"status":"ok"} curl -k https://<hostname>/readyz docker compose -f docker-compose.prod.yml ps -
Open
https://<hostname>/v2/and sign in asadminwith the password you set during installation.
A ready gateway returns {"status":"ready","qradar":"ok","qradar_version":"<Console version>","qradar_configured":true}. On a 503, qradar holds the reason: not_configured means no Console has been entered; any other value is the error from connecting to the Console. qradar_configured is false when QRADAR_URL or QRADAR_SEC_TOKEN is empty in .env, and the connection dialog opens after sign-in.
The default certificate is self-signed. For production, edit Caddyfile to use your own certificate.
Install without deploy.sh
Steps
-
Load the images and prepare
.env:docker load < RST-AI-Copilot-for-QRadar-images-<version>.tar cp .env.example .env -
In
.env, setLLM_API_KEY,LLM_MODEL,QRADAR_URL,QRADAR_SEC_TOKEN,CADDY_SITE_ADDRESS,RST_GATEWAY_SHARED_SECRET,RST_ADMIN_TOKEN,RST_USER_DB_PASSWORDandGATEWAY_IMAGE_TAG=<version>. -
Generate the admin password hash and write it to
RST_ADMIN_PASSWORD_HASHin.env, doubling every$as$$:docker run --rm rst-ai-copilot-for-qradar-gateway:<version> python -m backend.session_auth '<password>' -
Generate the host fingerprint files:
mkdir -p state openssl rand -hex 16 > state/machine-id cat /proc/sys/kernel/random/uuid > state/server_guid chmod 644 state/* -
Run
docker compose -f docker-compose.prod.yml up -d.
Both state/machine-id and state/server_guid must exist with mode 644, because the gateway runs as uid 10001. If either is missing, Docker mounts a directory in its place, and the gateway fails to start or activation fails with no hardware identifier available.
Next steps
- To use the paid engines, activate a license on the License page.
- Configure the log-source whitelist, masking mode and audit in Settings.
- Include
./state/, thegateway_statevolume and theuserdb_datavolume in backups. See Upgrade, rollback and backup.
Requirements and network
Host size, Docker version, QRadar version, the authorized-service token, the LLM endpoint, the hostname, and the inbound and outbound ports to open before installing.
Configuration reference
Settings in .env in the installation directory: required values, sign-in and accounts, QRadar connection and AQL, model and reasoning, output language, offense sync, scheduled reports, platform check-up thresholds, audit and retention, resources.