Офлайн установка
Эта инструкция для администратора, который ставит Portal в сети без доступа в интернет. Дистрибутив и LICENSE.key уже получены от поставщика.
Читайте сверху вниз. На каждом шаге — команда и проверка.
Ключ можно активировать и в браузере (Админка → Настройки → Продукт и лицензия), если сайт уже открывается. Ниже — вариант через portal-cli.
0. Что вы получите в итоге
Заголовок раздела «0. Что вы получите в итоге»- Portal установлен из архива без скачивания из интернета.
- Образы загружены через
docker load(Docker/K8s) или бинарники поставлены нативно. - Лицензия активирована офлайн-ключом.
- Онлайн-кнопки Проверить обновления / Обновить в air-gap не работают — обновления только вручную.
1. Что должно быть на площадке
Заголовок раздела «1. Что должно быть на площадке»Перед началом проверьте:
| Что | Зачем |
|---|---|
Архив дистрибутива (portal-*-full.tar.gz или bundle канала) | Установка |
Файл LICENSE.key | Активация |
Документация docs-install/ из комплекта | Справка без интернета |
Файл .sha256 (если передан) | Проверка целостности |
Зависимости ОС (Docker Engine, Kubernetes, PostgreSQL, Redis, S3) ставятся из локальных зеркал/ISO — см. §7.
2. Проверьте целостность архива
Заголовок раздела «2. Проверьте целостность архива»Если поставщик передал .sha256:
sha256sum -c portal-1.0.0-full.tar.gz.sha256Ожидается: OK. Если FAILED — не ставьте, запросите архив заново.
3. Перенесите и распакуйте
Заголовок раздела «3. Перенесите и распакуйте»Шаг 3.1. Перенос
Заголовок раздела «Шаг 3.1. Перенос»Перенесите файлы на сервер установки (USB, внутренний файловый сервер и т.п.).
Шаг 3.2. Распаковка полного комплекта (если есть)
Заголовок раздела «Шаг 3.2. Распаковка полного комплекта (если есть)»tar xzf portal-1.0.0-full.tar.gzcd portal-1.0.0-fullls -laЛибо сразу распакуйте только нужный bundle (docker, k8s, native) — см. разделы ниже.
4. Docker (рекомендуется для air-gap)
Заголовок раздела «4. Docker (рекомендуется для air-gap)»Шаг 4.1. Распаковка и загрузка образов
Заголовок раздела «Шаг 4.1. Распаковка и загрузка образов»tar xzf portal-1.0.0-docker-bundle.tar.gzcd portal-1.0.0-docker-bundle
docker load -i images/portal-images.tardocker images | grep portalДолжны появиться образы вроде portal/api, portal/frontend, portal/office и др.
Шаг 4.2. Конфиг
Заголовок раздела «Шаг 4.2. Конфиг»cp portal.config.example.yaml portal.config.yamlnano portal.config.yamlЗаполните домен, секреты, часовой пояс. Сохраните.
Шаг 4.3. Установка и лицензия
Заголовок раздела «Шаг 4.3. Установка и лицензия»chmod +x portal-cli/portal-cliPORTAL_SKIP_WIZARD=1 ./portal-cli/portal-cli install --mode docker --yes./portal-cli/portal-cli license activate --file /path/to/LICENSE.keyШаг 4.4. Проверка
Заголовок раздела «Шаг 4.4. Проверка»./portal-cli/portal-cli status --mode dockercurl -sS http://127.0.0.1/healthcurl -sS http://127.0.0.1/api/v1/system/versionДальше — вход в браузере и при необходимости донастройка.
5. Kubernetes
Заголовок раздела «5. Kubernetes»Шаг 5.1. Распаковка и образы
Заголовок раздела «Шаг 5.1. Распаковка и образы»tar xzf portal-1.0.0-k8s-bundle.tar.gzcd portal-1.0.0-k8s-bundle
docker load -i images/portal-images.tarИмпорт в registry кластера (Harbor/Nexus), пример:
docker tag portal/api:1.0.0 registry.corp.local/portal/api:1.0.0docker push registry.corp.local/portal/api:1.0.0# повторите для остальных образов portal/*В values.yaml укажите:
imageRegistry: registry.corp.localШаг 5.2. Установка и лицензия
Заголовок раздела «Шаг 5.2. Установка и лицензия»PORTAL_SKIP_WIZARD=1 ./portal-cli/portal-cli install --mode k8s --yes./portal-cli/portal-cli license activate --file /path/to/LICENSE.keyШаг 5.3. Проверка
Заголовок раздела «Шаг 5.3. Проверка»kubectl get pods -n portal./portal-cli/portal-cli status --mode k8sPods должны быть Running.
6. Native Linux
Заголовок раздела «6. Native Linux»Шаг 6.1. Зависимости заранее
Заголовок раздела «Шаг 6.1. Зависимости заранее»PostgreSQL 16, Redis/Valkey, S3 — уже установлены из локальных репозиториев (без интернета). См. Внешние сервисы и Native Linux.
Шаг 6.2. Установка
Заголовок раздела «Шаг 6.2. Установка»tar xzf portal-1.0.0-native-linux-amd64.tar.gzcd portal-1.0.0-native-linux-amd64
# Настройте portal.config.yaml (БД, кэш, S3, timezone)PORTAL_SKIP_WIZARD=1 ./portal-cli/portal-cli install --mode native --yes./portal-cli/portal-cli license activate --file /path/to/LICENSE.keyШаг 6.3. Проверка
Заголовок раздела «Шаг 6.3. Проверка»./portal-cli/portal-cli status --mode nativesystemctl status portal-api portal-worker --no-pagercurl -sS http://127.0.0.1/health7. Зависимости без интернета
Заголовок раздела «7. Зависимости без интернета»| Компонент | Откуда взять |
|---|---|
| Docker Engine | ISO/RPM локального mirror |
| Kubernetes | Ваш дистрибутив (RKE2, k8s offline bundle) |
| PostgreSQL 16 | RPM/DEB с локального mirror |
| Valkey/Redis | RPM/DEB |
| S3-хранилище | Локальный кластер хранения |
Подробнее: Внешние сервисы.
8. Обновления offline
Заголовок раздела «8. Обновления offline»Кнопки Проверить обновления и Обновить в админке в air-gap не работают (нужен korport.ru).
Шаг 8.1. Получите новый дистрибутив
Заголовок раздела «Шаг 8.1. Получите новый дистрибутив»Сравните номер в файле RELEASE внутри нового bundle с текущим на сервере.
# текущий (Docker)docker compose exec backend cat /app/RELEASE
# текущий (Native)cat /opt/portal/RELEASEШаг 8.2. Backup
Заголовок раздела «Шаг 8.2. Backup»Сделайте резервное копирование.
Шаг 8.3. Upgrade
Заголовок раздела «Шаг 8.3. Upgrade»# Docker: в новом bundledocker load -i images/portal-images.tar./portal-cli/portal-cli upgrade --mode docker
# K8s./portal-cli/portal-cli upgrade --mode k8s
# Native./portal-cli/portal-cli upgrade --mode nativeПри необходимости активируйте новый LICENSE.key.
Полная инструкция: Обновление Portal → раздел про ручное обновление.
9. Ограничения air-gap
Заголовок раздела «9. Ограничения air-gap»- Онлайн-проверка лицензии на внешнем сервере недоступна — используйте офлайн
LICENSE.key. - Docker/K8s: Portal Office уже в
images/portal-images.tar(portal/office). - Native: скачайте Office на машине с доступом к korport.ru/portal-office, перенесите архив в контур (см. Portal Office); иначе отключите редактор (
office.enabled: false). - Модули с каталога korport.ru (например корпоративный чат) штатно без интернета не ставятся — решение через поставщика. См. Корпоративный чат.