Air-gapped / on-prem
Ongrid отгружается как один самодостаточный tarball ровно для того, чтобы он работал offline. Нет apt install, нет Go-module-fetch-at-build-time на target-хосте, нет Docker Hub pull в рантайме. Положите tarball, запустите install.sh, и у вас рабочий manager + edge-флот.
Trade-off'ы, которые вы получите, идя air-gapped, — вокруг LLM-provider, embedding-модели для RAG и текущих апгрейдов. Эта страница — чек-лист.
Шаг 1: Скачать release-tarball
С хоста с интернетом, возьмите последний release-asset:
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Или соберите tarball сами с make package. В любом случае артефакт — это единый .tar.xz плюс его .sha256.
Переместите оба файла на target-хост через любой air-gap канал, который вы используете (sneakernet USB, внутренний artefact-server, signed S3 bucket и т.д.).
Шаг 2: Tarball-установка
Tarball распаковывается в самодостаточную директорию:
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Запустите:
tar -xf ongrid-v0.7.167-linux-amd64.tar.xz
cd ongrid-v0.7.167-linux-amd64
sudo ./install.shinstall.sh загружает каждый images/*.tar в локальный docker, пишет разумный .env, поднимает стек с docker compose up -d и печатает URL нового manager'а. Хосту нужен Docker Engine + Compose v2 — см. Linux (сервер).
См. Air-gapped установку для полного step-by-step с checksums и first-boot.
Шаг 3: Mirror в приватный registry (опционально)
Если у вас приватный container-registry (Harbor / Artifactory / ECR / GCR), и вы предпочли бы docker pull, чем docker load, push'ните bundled-образы один раз:
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Затем напишите docker-compose.override.yml, который направляет каждый сервис на registry.internal/... вместо оригинального образа, и вы можете deploy'ить на N хостов без re-shipping tarball'а. Будущие апгрейды становятся «pull новый image tag, docker compose up -d».
Шаг 4: Edge-установка в air-gapped сети
Curl-pipe installer (https://<manager>/install.sh | bash) работает нормально внутри air-gapped сети, пока edge'и могут дотянуться до manager (порт 443 для static bundle + порт 40012 для туннеля). Installer скачивает бинарь агента и четыре plugin-бинаря с https://<manager>/edge/, который nginx manager'а сервит из bind-mounted директории ./bin/.
Если ваши edge'и не могут дотянуться до manager по HTTPS — например, edge'и в сегменте сети, который позволяет только порт 40012 — скопируйте бинари вручную:
# 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)Или, более robustly: поднимите крошечный внутренний HTTPS-mirror, который держит копию ./bin/linux-*/ и направьте форкнутый install.sh на него.
Шаг 5: LLM-provider
Ongrid не bundle'ит LLM. Agent kernel вызывает upstream provider — Anthropic, OpenAI, Zhipu, DeepSeek, Gemini, Kimi или любой OpenAI-совместимый relay — через исходящее интернет-соединение manager'а. В air-gapped сети у вас три варианта:
- Исходящий proxy. Поставьте
HTTPS_PROXY=http://your-proxy:3128в env-блоке manager'а. Все provider-вызовы flow через proxy. - Self-hosted OpenAI-совместимый relay. Запустите vLLM / TGI / Ollama / one-api внутри вашей сети, направьте
ONGRID_OPENAI_BASE_URLна него, поставьтеONGRID_OPENAI_API_KEYна то, что ожидает relay. Это самый частый паттерн для полностью-disconnected установок. - Custom provider в UI. Settings → Models → Custom (OpenAI-совместимый) даёт вам тот же wiring без рестарта.
Если вы хотите использовать Zhipu (GLM) против Tencent Cloud-hosted эндпоинта внутри Китая, поставьте ONGRID_ZHIPU_BASE_URL на регионального эндпоинт и ONGRID_ZHIPU_API_KEY на ваш ключ — proxy не нужен, GLM достижим внутри China-mainland сети.
Шаг 6: Offline RAG (embedding-модель)
Knowledge-base ingestion нуждается в embedding-модели. По умолчанию manager вызывает GLM embedding API (embedding-3), который требует интернет. Для полностью offline-развёртывания переключитесь на профиль local embedding:
ONGRID_EMBEDDING_PROVIDER=local
ONGRID_EMBEDDING_LOCAL_MODEL_PATH=/var/lib/ongrid/embeddings/bge-base-en-v1.5Release-tarball отгружает модель BAAI/bge-base-en-v1.5 под .cache/bge-base-en-v1.5/ (~400 MB). Install-скрипт копирует её в named volume при первой загрузке. Если вы пропустили make fetch-embedding-model, собирая tarball, модель отсутствует, и embedding упадёт — запустите тот шаг один раз и пере-package'те.
Дефолтный встроенный vault Ongrid (github.com/ongridio/vault) — публичный и содержит baseline runbooks, отгружаемые в embedded RAG seed. Синхронизация требует доступа к GitHub. В air-gapped сети вы можете:
- Вендорить vault в ваш собственный внутренний Git-server и обновить
ONGRID_VAULT_REPO_URL. - Или, пропустить vault-синхронизацию полностью — embedded seed (около 96 playbook'ов) живёт внутри бинаря и всегда доступен.
Шаг 7: Апгрейды
Два пути:
- Тот же tarball-механизм. Скачайте новый tarball на internet-connected хосте, sneakernet его, запустите
./upgrade.sh. Этоinstall.shминус bootstrap — image-загрузка +docker compose up -d. Edge-агенты подхватывают соответствующий agent + plugin бинари в следующий раз, когда подключаются (ADR-024 whole-bundle staging). - Pull приватного registry. Если вы зеркалировали образы (Шаг 3),
docker compose pull && docker compose up -dдостаточно. Edge'ям всё ещё нужны новые agent + plugin бинари, которые они fetch'ат из static-пути/edge/manager'а — это обновляется автоматически, когда вы свопаете tarball-shipped директориюbin/.
Что НЕ работает air-gapped
- Built-in vault auto-sync без mirror — vault-репозиторий живёт на GitHub.
- Hosted LLM'ы provider'а без исходящего proxy или relay — нет отгруженного локального LLM.
- Дефолтный профиль GLM embedding — переключитесь на
local(см. Шаг 6). - Public marketplace skill-установки (ADR-017) — направьте на приватный registry вместо этого.
Всё остальное, включая полный agent kernel, alert evaluator, телеметрический конвейер и chat UI, работает полностью offline.