Skip to main content

Portable / non-root

Choose spot-agent-sap-portable, spot-suite-portable, or spot-suite-external-portable, each in a separate $SPOT_HOME.

For example, extract the embedded suite into a fresh $SPOT_HOME:

umask 077
mkdir -p "$HOME/spot"
tar -xzf spot-suite-portable_X.Y.Z_linux_amd64.tar.gz -C "$HOME/spot" --strip-components=1
cd "$HOME/spot"
cp config/spot.env.example config/spot.env

Use spot-suite-external-portable_X.Y.Z_linux_amd64.tar.gz for the external suite. For connector-only, use spot-agent-sap-portable_X.Y.Z_linux_amd64.tar.gz and extract it to $HOME/spot-agent-sap-portable if you want to reuse the included units without changes. Never mix variants or extract over another variant. The Connector-only guide contains the complete checksum, configuration, license, systemd --user, upgrade, and uninstall procedure.

Activate or install the license

Before the first run-agent.sh, start the included validator and activate the online key or install the offline file:

export SPOT_HOME="$HOME/spot"
"$SPOT_HOME/scripts/run-license.sh" >"$SPOT_HOME/log/license.out" 2>"$SPOT_HOME/log/license.err" &
"$SPOT_HOME/bin/spot-agent-sap" license-activate
# or: "$SPOT_HOME/bin/spot-agent-sap" license-install /protected/path/license
"$SPOT_HOME/bin/spot-agent-sap" license-check

For connector-only, set SPOT_HOME to the directory where you extracted spot-agent-sap-portable. Never pass the key as a positional argument. See Licenses and renewal for renewal export without a web interface.

Encrypt the SAP password

The portable wrapper derives and exports its own SPOT_HOME, so you can generate the passwd value before the first startup:

"$HOME/spot-agent-sap-portable/bin/spot-agent-sap" encrypt

Copy the single enc:v1:... line into the SAP connection. The first execution creates $HOME/spot-agent-sap-portable/config/spot-sap-secret.key with mode 0600 if it does not exist. Keep that file in the backup: do not regenerate it during an upgrade or replace it with one from another installation. See Connector-only for --stdin, --password-file, permissions, and automation examples.

Start only the processes included in the selected variant:

# Embedded suite
SPOT_HOME="$HOME/spot" scripts/run-elasticsearch.sh
SPOT_HOME="$HOME/spot" scripts/run-server.sh
SPOT_HOME="$HOME/spot" scripts/run-agent.sh

# External suite
SPOT_HOME="$HOME/spot" scripts/run-server.sh
SPOT_HOME="$HOME/spot" scripts/run-agent.sh

# Connector-only (in its own SPOT_HOME)
SPOT_HOME="$HOME/spot-agent-sap-portable" \
"$HOME/spot-agent-sap-portable/scripts/run-agent.sh"

External contains no Elasticsearch directory or script and may finish setup in limited mode. Connector-only contains neither a local backend nor Elasticsearch.

All configuration, state, logs, and temporary files remain below $SPOT_HOME; there must be no required writes to /opt, /etc, or /var. Use a dedicated user and a user supervisor. The same user owns code and process, so choose RPM/DEB when real ownership separation is required.

For upgrades, verify the checksum, extract into a new directory, copy only documented mutable state, and retain the old generation until health and ingestion pass. Never extract over the active tree.

Verification by variant

Embedded suite

curl -fsS http://127.0.0.1:9200
curl -fsS http://127.0.0.1:8080/api/health

External suite

SPOT_HOME="${SPOT_HOME:-$HOME/spot}"
curl -fsS http://127.0.0.1:8080/api/health
curl -fsS http://127.0.0.1:8080/api/setup/status | \
jq -e '.elastic_configuration_state == "pending" and .operational_ready == false'

If Elasticsearch was deferred, the public setup status must report pending and operational_ready=false. A real data API called with a valid Bearer token returns HTTP 503 with code elastic_not_configured. After configuration, verify health and ingestion against the external cluster; do not probe local :9200.

Connector-only

SPOT_HOME="${SPOT_HOME:-$HOME/spot-agent-sap-portable}"
test -x "$SPOT_HOME/bin/spot-agent-sap"
pgrep -af "$SPOT_HOME/bin/spot-agent-sap"
tail -n 100 "$SPOT_HOME/log/spot-agent-sap.log"
test ! -e "$SPOT_HOME/scripts/run-elasticsearch.sh"

No local backend or run-elasticsearch.sh is expected. Use $HOME/spot-agent-sap-portable as the default when installing the included systemd --user units. See Connector-only for persistent startup and safe runtime-configuration regeneration after a change.