Offline installation

Install Kaapana on a server without public-internet access. There are two installation paths, both driven by the kaapanactl.sh script in the server-installation directory of the repository — pick the one that matches the target.

  • Single-Registry — the target can reach an OCI registry. The installer is pulled from the registry; platform images and charts are pulled at deploy time.

  • Air-gap — the target reaches nothing; everything is moved as tarballs.

Single-Registry

1. Build host — build and publish

kaapana-build \
  --default-registry registry.example.com \
  --username <USER> --registry-password <PASS> \
  --create-offline-installation \
  --publish-offline-installer \
  --skip-platform-images-tarball

This pushes the bootstrap payload as <registry>/offline-installer:<version> — the snaps, microk8s_base_images.tar (MicroK8s system images), the gpu-operator Helm chart (gpu-operator.tgz), kaapanactl.sh, and any --offline-extra-file SRC[:DST] entries. The platform Helm chart and the platform container images are not bundled — the target pulls those from the registry at deploy. --skip-platform-images-tarball avoids the multi-GB platform-images this path doesn’t need since we can pull them directly from the registry at deploy.

2. Target host — pull the installer

Bootstrap needs only utils/pull_offline_installer.py and its registry client (install the kaapana-containers pip package, or copy lib/kaapana_containers/kaapana_containers/registries/registry.py next to it as registry.py):

python3 utils/pull_offline_installer.py \
  --registry-url https://registry.example.com \
  --username <USER> --password <PASS> \
  --tag <version> --target-dir ./microk8s-offline-installer

Use http://host:5000 for a plain-HTTP registry, --ca-cert <bundle> for a private CA, or --insecure to skip verification.

3. Install and deploy (online deploy)

cd microk8s-offline-installer
sudo ./kaapanactl.sh install --offline -os Ubuntu

Then perform a regular platform deploy.

Air-gap

1. Build host — build with local tarballs

kaapana-build \
  --default-registry registry.example.com \
  --username <USER> --registry-password <PASS> \
  --create-offline-installation

Do not pass --skip-platform-images-tarball or --publish-offline-installer — air-gap needs the local platform-images tarball. This produces, under the build dir:

  • microk8s-offline-installer/ — the bootstrap kit (snaps, microk8s_base_images.tar, gpu-operator.tgz, kaapanactl.sh)

  • <platform>-<version>.tgz — the platform Helm chart

  • <platform>-<version>-images.tar — the platform images

2. Target host — copy the artifacts

Copy all three of the above onto the target by media (USB, scp, …).

3. Install and deploy (offline deploy)

cd microk8s-offline-installer
sudo ./kaapanactl.sh install --offline -os Ubuntu
sudo ./kaapanactl.sh deploy --offline \
  --chart-path <platform>-<version>.tgz \
  --import-images-tar <platform>-<version>-images.tar

The chart and platform images come from the copied tarballs; no registry is used.