Skip to content

Offline Installation

This guide explains how to install and maintain SafeCall in a pseudo-air-gapped environment using an offline bundle created during the build.

Overview

The server build now generates an offline tarball:

  • releases/<brand>-offline-<version>.tar.gz

When extracted, it contains:

  • installer.sh
  • <brand>-x64
  • <brand>-arm64
  • test-vm.sh
  • offline-manifest.json

Use the extracted directory as the value for --offline-dir.

Build The Offline Bundle

On a connected build machine:

bash
bun build:server -- --skip-upload

Then transfer releases/<brand>-offline-<version>.tar.gz to the target environment.

Prepare The Target Machine

Extract the bundle to a local directory:

bash
mkdir -p /opt/safecall-offline
tar -xzf safecall-offline-<version>.tar.gz -C /opt/safecall-offline

This directory (for example /opt/safecall-offline) is your offline artifact source.

Install From Offline Bundle

Phase 1 only

bash
sudo bash /opt/safecall-offline/installer.sh \
  --offline-dir /opt/safecall-offline \
  --dir /opt/safecall

Phase 1 + setup defaults

bash
sudo bash /opt/safecall-offline/installer.sh \
  --offline-dir /opt/safecall-offline \
  --setup \
  --dir /opt/safecall

Offline Update Workflows

From the install directory (/opt/safecall by default):

bash
cd /opt/safecall
sudo ./util.sh system doctor --offline-dir /opt/safecall-offline
sudo ./util.sh system update --offline-dir /opt/safecall-offline
sudo ./util.sh system repair --offline-dir /opt/safecall-offline

These commands compare and install against local bundle artifacts instead of the online update server.

Offline VM Validation

The generated VM script also supports offline mode:

bash
sudo bash /opt/safecall-offline/test-vm.sh \
  --offline-dir /opt/safecall-offline \
  --suite=offline

Troubleshooting

Missing artifact file

If a command reports missing files in --offline-dir, verify the directory contains all required artifacts listed in offline-manifest.json.

Wrong architecture binary

The installer automatically selects x64 vs arm64. Ensure both binaries are present in the extracted directory.

Stale bundle

If system doctor --offline-dir reports an update mismatch vs expected version, rebuild and re-transfer a newer offline bundle.

Looking for online install docs?

For internet-connected installation and setup guidance, see Installation.