Перейти к содержимому

Офлайн установка

Эта инструкция для администратора, который ставит Portal в сети без доступа в интернет. Дистрибутив и LICENSE.key уже получены от поставщика.

Читайте сверху вниз. На каждом шаге — команда и проверка.
Ключ можно активировать и в браузере (Админка → Настройки → Продукт и лицензия), если сайт уже открывается. Ниже — вариант через portal-cli.


  1. Portal установлен из архива без скачивания из интернета.
  2. Образы загружены через docker load (Docker/K8s) или бинарники поставлены нативно.
  3. Лицензия активирована офлайн-ключом.
  4. Онлайн-кнопки Проверить обновления / Обновить в air-gap не работают — обновления только вручную.

Перед началом проверьте:

ЧтоЗачем
Архив дистрибутива (portal-*-full.tar.gz или bundle канала)Установка
Файл LICENSE.keyАктивация
Документация docs-install/ из комплектаСправка без интернета
Файл .sha256 (если передан)Проверка целостности

Зависимости ОС (Docker Engine, Kubernetes, PostgreSQL, Redis, S3) ставятся из локальных зеркал/ISO — см. §7.


Если поставщик передал .sha256:

Окно терминала
sha256sum -c portal-1.0.0-full.tar.gz.sha256

Ожидается: OK. Если FAILED — не ставьте, запросите архив заново.


Перенесите файлы на сервер установки (USB, внутренний файловый сервер и т.п.).

Шаг 3.2. Распаковка полного комплекта (если есть)

Заголовок раздела «Шаг 3.2. Распаковка полного комплекта (если есть)»
Окно терминала
tar xzf portal-1.0.0-full.tar.gz
cd portal-1.0.0-full
ls -la

Либо сразу распакуйте только нужный bundle (docker, k8s, native) — см. разделы ниже.


Окно терминала
tar xzf portal-1.0.0-docker-bundle.tar.gz
cd portal-1.0.0-docker-bundle
docker load -i images/portal-images.tar
docker images | grep portal

Должны появиться образы вроде portal/api, portal/frontend, portal/office и др.

Окно терминала
cp portal.config.example.yaml portal.config.yaml
nano portal.config.yaml

Заполните домен, секреты, часовой пояс. Сохраните.

Окно терминала
chmod +x portal-cli/portal-cli
PORTAL_SKIP_WIZARD=1 ./portal-cli/portal-cli install --mode docker --yes
./portal-cli/portal-cli license activate --file /path/to/LICENSE.key
Окно терминала
./portal-cli/portal-cli status --mode docker
curl -sS http://127.0.0.1/health
curl -sS http://127.0.0.1/api/v1/system/version

Дальше — вход в браузере и при необходимости донастройка.


Окно терминала
tar xzf portal-1.0.0-k8s-bundle.tar.gz
cd 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.0
docker push registry.corp.local/portal/api:1.0.0
# повторите для остальных образов portal/*

В values.yaml укажите:

imageRegistry: registry.corp.local
Окно терминала
PORTAL_SKIP_WIZARD=1 ./portal-cli/portal-cli install --mode k8s --yes
./portal-cli/portal-cli license activate --file /path/to/LICENSE.key
Окно терминала
kubectl get pods -n portal
./portal-cli/portal-cli status --mode k8s

Pods должны быть Running.


PostgreSQL 16, Redis/Valkey, S3 — уже установлены из локальных репозиториев (без интернета). См. Внешние сервисы и Native Linux.

Окно терминала
tar xzf portal-1.0.0-native-linux-amd64.tar.gz
cd 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
Окно терминала
./portal-cli/portal-cli status --mode native
systemctl status portal-api portal-worker --no-pager
curl -sS http://127.0.0.1/health

КомпонентОткуда взять
Docker EngineISO/RPM локального mirror
KubernetesВаш дистрибутив (RKE2, k8s offline bundle)
PostgreSQL 16RPM/DEB с локального mirror
Valkey/RedisRPM/DEB
S3-хранилищеЛокальный кластер хранения

Подробнее: Внешние сервисы.


Кнопки Проверить обновления и Обновить в админке в air-gap не работают (нужен korport.ru).

Сравните номер в файле RELEASE внутри нового bundle с текущим на сервере.

Окно терминала
# текущий (Docker)
docker compose exec backend cat /app/RELEASE
# текущий (Native)
cat /opt/portal/RELEASE

Сделайте резервное копирование.

Окно терминала
# Docker: в новом bundle
docker 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 → раздел про ручное обновление.


  1. Онлайн-проверка лицензии на внешнем сервере недоступна — используйте офлайн LICENSE.key.
  2. Docker/K8s: Portal Office уже в images/portal-images.tar (portal/office).
  3. Native: скачайте Office на машине с доступом к korport.ru/portal-office, перенесите архив в контур (см. Portal Office); иначе отключите редактор (office.enabled: false).
  4. Модули с каталога korport.ru (например корпоративный чат) штатно без интернета не ставятся — решение через поставщика. См. Корпоративный чат.