Skip to content

Air-Gapped / On-Prem

Ongrid liefert als ein eigenständiges Tarball aus, genau weil es offline funktioniert. Es gibt kein apt install, kein Go-Module-Fetch-zur-Build-Zeit auf dem Target-Host, kein Docker-Hub-Pull zur Laufzeit. Tarball ablegen, install.sh laufen, und Sie haben einen funktionierenden Manager + Edge-Flotte.

Die Tradeoffs, die Sie air-gapped treffen werden, sind um den LLM-Provider, das Embedding-Modell für RAG und laufende Upgrades. Diese Seite ist die Checkliste.

Schritt 1: Das Release-Tarball herunterladen

Von einem Host mit Internet, greifen Sie das neueste Release-Asset:

sh
gh release download v0.7.167 --repo ongridio/ongrid \
    --pattern 'ongrid-*-linux-amd64.tar.xz'
gh release download v0.7.167 --repo ongridio/ongrid \
    --pattern 'ongrid-*-linux-amd64.tar.xz.sha256'
sha256sum -c ongrid-v0.7.167-linux-amd64.tar.xz.sha256

Oder bauen Sie das Tarball selbst mit make package. So oder so ist das Artefakt ein einzelnes .tar.xz plus sein .sha256.

Verschieben Sie beide Dateien zum Target-Host über welchen Air-Gap-Kanal auch immer Sie verwenden (Sneakernet USB, interner Artefakt-Server, signierte S3-Bucket, etc.).

Schritt 2: Tarball-Installation

Das Tarball expandiert zu einem eigenständigen Verzeichnis:

text
ongrid-v0.7.167-linux-amd64/
  install.sh
  upgrade.sh
  docker-compose.yml
  images/
    ongrid.tar              # docker image, saved
    ongrid-web.tar
    frontier.tar
    mysql.tar               # bundled so no Docker Hub pull
    prometheus.tar
    loki.tar
    tempo.tar
    grafana.tar
    searxng.tar
  bin/
    linux-amd64/ongrid-edge
    linux-arm64/ongrid-edge
    darwin-amd64/ongrid-edge
    darwin-arm64/ongrid-edge
    linux-amd64/promtail
    linux-arm64/promtail
    linux-amd64/otelcol-contrib
    linux-arm64/otelcol-contrib
    linux-amd64/node_exporter
    linux-arm64/node_exporter
    linux-amd64/process_exporter
    linux-arm64/process_exporter
  edge/
    apply-pending-upgrade.sh
  .cache/
    bge-base-en-v1.5/       # optional offline RAG embedding model

Ausführen:

sh
tar -xf ongrid-v0.7.167-linux-amd64.tar.xz
cd ongrid-v0.7.167-linux-amd64
sudo ./install.sh

install.sh lädt jedes images/*.tar in das lokale Docker, schreibt ein vernünftiges .env, bringt den Stack mit docker compose up -d hoch und druckt die URL des neuen Managers. Der Host braucht Docker Engine + Compose v2 — siehe Linux (Server).

Siehe Air-Gapped-Installation für die vollständige Schritt-für-Schritt mit Checksummen und Erst-Boot.

Schritt 3: In eine private Registry spiegeln (optional)

Wenn Sie eine private Container-Registry haben (Harbor / Artifactory / ECR / GCR), und Sie lieber docker pull als docker load machen, pushen Sie die gebündelten Images einmal:

sh
for img in images/*.tar; do
  name=$(docker load -i "$img" | awk -F': ' '/Loaded image/ {print $2}')
  registry_tag="registry.internal/${name}"
  docker tag "$name" "$registry_tag"
  docker push "$registry_tag"
done

Dann schreiben Sie eine docker-compose.override.yml, die jeden Service auf registry.internal/... statt das Original-Image ausrichtet, und Sie können auf N Hosts deployen, ohne das Tarball neu zu shippen. Zukünftige Upgrades werden zu „neuen Image-Tag pullen, docker compose up -d".

Schritt 4: Edge-Installation in einem Air-Gapped-Netzwerk

Der curl-pipe-Installer (https://<manager>/install.sh | bash) funktioniert innerhalb eines Air-Gapped-Netzwerks gut, solange die Edges den Manager erreichen können (Port 443 für das statische Bundle + Port 40012 für den Tunnel). Der Installer lädt das Agent-Binary und die vier Plugin-Binaries von https://<manager>/edge/ herunter, was der nginx des Managers aus dem bind-gemounteten ./bin/-Verzeichnis bedient.

Wenn Ihre Edges den Manager nicht über HTTPS erreichen können — zum Beispiel sind Edges in einem Netzwerksegment, das nur Port 40012 erlaubt — kopieren Sie die Binaries von Hand:

sh
# on each edge host
sudo install -m 0755 ongrid-edge /usr/local/bin/ongrid-edge
sudo mkdir -p /usr/local/lib/ongrid-edge
sudo install -m 0755 promtail otelcol-contrib node_exporter process_exporter \
    /usr/local/lib/ongrid-edge/
# then write /etc/ongrid-edge/ongrid-edge.env and the systemd unit
# (see deploy/install/edge/install.sh for the exact unit content)

Oder, robuster: stellen Sie einen winzigen internen HTTPS-Mirror auf, der eine Kopie von ./bin/linux-*/ hält und richten Sie einen geforkten install.sh darauf aus.

Schritt 5: LLM-Provider

Ongrid bündelt kein LLM. Der Agent-Kernel ruft einen Upstream-Provider auf — Anthropic, OpenAI, Zhipu, DeepSeek, Gemini, Kimi oder jedes OpenAI-kompatible Relay — über die ausgehende Internet-Verbindung des Managers. In einem Air-Gapped-Netzwerk haben Sie drei Optionen:

  1. Ausgehender Proxy. Setzen Sie HTTPS_PROXY=http://your-proxy:3128 im env-Block des Managers. Alle Provider-Aufrufe fließen durch den Proxy.
  2. Selbstgehostetes OpenAI-kompatibles Relay. Laufen Sie vLLM / TGI / Ollama / one-api innerhalb Ihres Netzwerks, richten Sie ONGRID_OPENAI_BASE_URL darauf aus, setzen Sie ONGRID_OPENAI_API_KEY auf was auch immer das Relay erwartet. Das ist das häufigste Muster für vollständig-getrennte Installationen.
  3. Custom-Provider in der UI. Settings → Models → Custom (OpenAI-kompatibel) gibt Ihnen die gleiche Verdrahtung ohne Restart.

Wenn Sie Zhipu (GLM) gegen einen Tencent-Cloud-gehosteten Endpunkt innerhalb Chinas verwenden wollen, setzen Sie ONGRID_ZHIPU_BASE_URL auf den regionalen Endpunkt und ONGRID_ZHIPU_API_KEY auf Ihren Key — kein Proxy nötig, GLM ist innerhalb des China-Festland-Netzwerks erreichbar.

Schritt 6: Offline-RAG (das Embedding-Modell)

Wissensbasis-Ingestion braucht ein Embedding-Modell. Standardmäßig ruft der Manager die GLM-Embedding-API (embedding-3) auf, was Internet braucht. Für eine vollständig offline Bereitstellung wechseln Sie zum Lokal-Embedding-Profil:

sh
ONGRID_EMBEDDING_PROVIDER=local
ONGRID_EMBEDDING_LOCAL_MODEL_PATH=/var/lib/ongrid/embeddings/bge-base-en-v1.5

Das Release-Tarball liefert das BAAI/bge-base-en-v1.5-Modell unter .cache/bge-base-en-v1.5/ (~400 MB) aus. Das Install-Skript kopiert es beim ersten Boot in das benannte Volume. Wenn Sie make fetch-embedding-model beim Bauen des Tarballs übersprungen haben, ist das Modell abwesend und Embedding wird fehlschlagen — laufen Sie diesen Schritt einmal und neu-packen Sie.

Der Default-Ongrid-eingebaute-Vault (github.com/ongridio/vault) ist öffentlich und enthält Baseline-Runbooks, die im eingebetteten RAG-Seed ausgeliefert werden. Sie zu synchronisieren erfordert das Erreichen von GitHub. In einem Air-Gapped-Netzwerk können Sie:

  • Den Vault in Ihren eigenen internen Git-Server vendoren und ONGRID_VAULT_REPO_URL aktualisieren.
  • Oder, Vault-Sync vollständig überspringen — der eingebettete Seed (etwa 96 Playbooks) lebt innerhalb des Binarys und ist immer verfügbar.

Schritt 7: Upgrades

Zwei Pfade:

  1. Gleicher Tarball-Mechanismus. Laden Sie das neue Tarball auf einem internet-verbundenen Host herunter, sneakernet es rüber, führen Sie ./upgrade.sh aus. Das ist install.sh minus dem Bootstrap — Image-Laden + docker compose up -d. Die Edge-Agenten holen das passende Agent- + Plugin-Binary beim nächsten Reconnect (ADR-024 Whole-Bundle-Staging).
  2. Private-Registry-Pull. Wenn Sie die Images gespiegelt haben (Schritt 3), ist docker compose pull && docker compose up -d genug. Edges brauchen weiterhin das neue Agent- + Plugin-Binary, das sie aus dem statischen /edge/-Pfad des Managers fetchen — das aktualisiert automatisch, wenn Sie das Tarball-gelieferte bin/-Verzeichnis tauschen.

Was air-gapped NICHT funktioniert

  • Built-in-Vault-Auto-Sync ohne einen Mirror — das Vault-Repo lebt auf GitHub.
  • Provider's gehostete LLMs ohne einen ausgehenden Proxy oder Relay — es gibt kein ausgeliefertes lokales LLM.
  • Das Default-GLM-Embedding-Profil — wechseln Sie zu local (siehe Schritt 6).
  • Öffentliche Marketplace-Skill-Installs (ADR-017) — richten Sie auf eine private Registry stattdessen aus.

Alles andere, einschließlich des vollständigen Agent-Kernels, des Alarm-Evaluators, der Telemetrie-Pipeline und der Chat-UI, läuft vollständig offline.