Skip to content

Air-Gapped & Disconnected Installation Procedure

For secure facilities without internet access, follow this procedure to pre-package and import container images and model weights.

flowchart LR
    subgraph Connected["1. Online Staging Host"]
        Pull["docker pull & save"]
        Weights["Download Models"]
        Tar["Create Tarballs"]
    end

    subgraph Transfer["2. Secure Transport"]
        Media["Approved Optical Media / Hard Drive"]
    end

    subgraph Airgap["3. Air-Gapped Server"]
        Load["docker load -i"]
        Models["Extract to /opt/vda/models"]
        Compose["docker compose up -d"]
    end

    Pull & Weights --> Tar
    Tar --> Media
    Media --> Load & Models
    Load & Models --> Compose

Phase 1: On an Internet-Connected Machine

  1. Pull and Save All Container Images:

    # Pull all platform images
    docker pull whiteklay/vda-client:latest
    docker pull whiteklay/vda-server:latest
    docker pull whiteklay/vda-metadata:latest
    docker pull postgres:15-alpine
    docker pull quay.io/keycloak/keycloak:24.0.5
    docker pull surrealdb/surrealdb:v2.1.4
    docker pull qdrant/qdrant:v1.11.0
    docker pull temporalio/auto-setup:1.24.2
    docker pull temporalio/ui:2.30.0
    docker pull ollama/ollama:latest
    
    # Export all images into a single tar archive
    docker save -o vda-images.tar \
      whiteklay/vda-client:latest \
      whiteklay/vda-server:latest \
      whiteklay/vda-metadata:latest \
      postgres:15-alpine \
      quay.io/keycloak/keycloak:24.0.5 \
      surrealdb/surrealdb:v2.1.4 \
      qdrant/qdrant:v1.11.0 \
      temporalio/auto-setup:1.24.2 \
      temporalio/ui:2.30.0 \
      ollama/ollama:latest
    

  2. Pre-Download Ollama Model Blobs:

    # Run temporary ollama container to pull model
    docker run -d --name temp-ollama -v $(pwd)/ollama-data:/root/.ollama ollama/ollama:latest
    docker exec -it temp-ollama ollama pull qwen2.5:7b
    docker stop temp-ollama && docker rm temp-ollama
    
    # Package model weights
    tar -czvf vda-ollama-models.tar.gz ollama-data/
    

Phase 2: Transfer to the Air-Gapped Host

Transfer vda-images.tar, vda-ollama-models.tar.gz, docker-compose.yml, and .env via approved physical transfer media according to your organization's security policy.

Phase 3: Load and Launch on the Air-Gapped Host

  1. Load Container Images:
    docker load -i vda-images.tar
    
  2. Unpack Model Weights:
    # Create directory and extract pre-downloaded Ollama models
    mkdir -p ./ollama_data
    tar -xzvf vda-ollama-models.tar.gz -C ./ollama_data/ --strip-components=1
    
  3. Launch Platform in Offline Mode:
    docker compose --env-file .env up -d