﻿# Установить ELMA Cortex в закрытом контуре

> [HTML Version](cortex-air-gapped.html)

Перед установкой **ELMA Cortex** в закрытом контуре с использованием Docker Swarm убедитесь, что у вас установлен приватный реестр образов. Подробнее читайте в [статье про установку Harbor для ELMA Cortex](cortex-harbor.md).

Дальнейший процесс установки **ELMA Cortex** состоит из следующих шагов:

1. [Копирование установочных файлов в изолированную среду](#copy-installer-files).

2. [Загрузка образов в приватный Docker‑реестр](#push-images-to-registry).

3. [Настройка использования приватного реестра](#configure-private-registry).

4. [Установка ELMA Cortex](#install).

## Предварительные условия для установки в закрытом контуре

Убедитесь, что:

- на машине с доступом к интернету соблюдаются требования:

	- ОС Linux (Ubuntu 18.04+, CentOS 7+ или аналогичные);

	- минимум 20 ГБ свободного места на диске;

	- установлен curl или wget;

	- заданы права Root или sudo;

	- вы [загрузили установочные файлы](cortex-download-installer.md) и [настроили переменные окружения](cortex-environment-variables.md);

- на изолированной машине (Air-gapped):

	- инициализирован Docker Swarm;

	- есть доступ к вашему приватному Docker‑реестру.

## Шаг 1. Перенос файлов в изолированную среду

Скопируйте на ваш изолированный сервер папку `elma-cortex-X.Y.Z`, где `X.Y.Z` — номер версии **ELMA Cortex**. Вы можете использовать любой метод передачи файлов, например, USB-накопитель или протокол SCP, если доступно защищенное соединение.

Пример использования SCP:

````
scp -r elma-cortex-X.Y.Z user@air-gapped-server:~/

## ````
Шаг 2. Загрузка образов в приватный реестр

На изолированном сервере загрузите Docker‑образы в ваш приватный реестр. Способ загрузки зависит от настроек реестра и типа используемого сертификата.

**Важно**: если используется нестандартный порт, в параметре `--uri` указывайте его при записи адреса.

### Загрузка образов с доверенным сертификатом

Если ваш реестр работает с сертификатом от публичного удостоверяющего центра, или [сертификат добавлен в список доверенных](#trust-certificate), на сервере, используйте стандартные команды:

````
cd ~/elma-cortex-X.Y.Z  
./cortex-offline-swarm.sh --push \\  
  --uri your-registry.example.com/elma-cortex \\  
  --creds admin:your-password

### ````
Добавление корневого сертификата CA в список доверенных

Вы можете добавить корневой сертификат вашего удостоверяющего центра (CA) в список доверенных, указав путь к его папке. Это обеспечивает безопасное TLS-соединение с проверкой подлинности сервера:

````
mkdir -p ~/certs  
cp ca.crt ~/certs/  
  
./cortex-offline-swarm.sh --push \\  
  --uri your-registry.example.com/elma-cortex \\  
  --creds admin:your-password \\  
  --cert-dir /path/to/certs

### ````
Отключение проверки для самоподписанного сертификата

Чтобы быстро загрузить образы с самоподписанным сертификатом, вы можете отключить проверку TLS:

````
./cortex-offline-swarm.sh --push \\  
  --uri your-registry.example.com/elma-cortex \\  
  --creds admin:your-password \\  
  --tls-verify false

````
Обратите внимание, этот способ не обеспечивает безопасное соединение.

## Шаг 3. Настройка использования приватного реестра

1. Перейдите в папку с файлами для Docker Swarm:

````
cd swarm-files

2. ````
Укажите адрес вашего приватного реестра в файле `.env`. Если используется нестандартный порт, укажите его через двоеточие:

````
IMAGE\_REPOSITORY=your-registry.example.com:5000/elma-cortex

## ````
Шаг 4. Установка ELMA Cortex

1. Если вы используете приватный реестр, требующий аутентификации, выполните вход в Docker:

````
docker login your-registry.example.com

2. ````
Запустите скрипт установки:

````
chmod +x install.sh  
./install.sh

````
Установка **ELMA Cortex** завершена. Теперь вы можете перейти к [настройке интеграции с ELMA365](cortex-integration-solution.md).

Если при установке возникли ошибки, ознакомьтесь с рекомендациями в [разделе об устранении неполадок](#troubleshooting). Кроме того, при проблемах в работе сервера вы можете [провести диагностику](cortex-troubleshooting.md).

## Обновление ELMA Cortex

При выпуске новой версии **ELMA Cortex** сохраните текущую конфигурацию и выполните обновление. Подробнее читайте в статье [«Обновить ELMA Cortex в закрытом контуре»](update-cortex-air-gapped.md).

## Удаление ELMA Cortex

Чтобы удалить **ELMA Cortex** в закрытом контуре, используйте шаги из [статьи об удалении при использовании Docker Swarm](delete-cortex-docker-swarm.md).

## Устранение неполадок при установке ELMA Cortex

Рассмотрим, какие ошибки могут возникать при установке **ELMA Cortex** в закрытом контуре.

### Ошибка “Permission denied” при запуске скриптов

Убедитесь, что скрипты являются исполняемыми:

````
chmod +x cortex-offline-swarm.sh install.sh manage-certs.sh

### ````
Ошибка загрузки (push) образов

1. Проверьте учётные данные реестра:

````
docker login your-registry.example.com

2. ````
Проверьте настройки TLS. Для самоподписанных сертификатов используйте параметр `--tls-verify false`.

3. Убедитесь в наличии свободного места на сервере реестра.

### Сервисы не запускаются

1. Проверьте, что все образы загружены:

````
docker images | grep your-registry.example.com

2. ````
Проверьте, что в файле переменных окружения `.env` для параметра `IMAGE\_REPOSITORY` указан правильный путь к репозиторию образов.

3. Проверьте, что у Docker есть права на скачивание из вашего реестра:

````
docker pull your-registry.example.com/elma-cortex/elma-assistant/llm-service/gamma-apps:X.Y.Z 

## ````
Справочник команд для установки в закрытом контуре

При установке **ELMA Cortex** используется скрипт `cortex-offline-swarm.sh`. Для нестандартных сценариев установки ознакомьтесь со всеми доступными для него командами.

Использование скрипта: 

````
./cortex-offline-swarm.sh <command> <flags>

| | | |
|------|------|------|
| ````<br>**Команда** | **Применение ** | **Параметры** |
| `\--pull` | Скачать файлы Docker Swarm и Docker‑образы<br> | `\--dir <PATH>` — папка, в которую скачиваются файлы. По умолчанию:` elma-cortex-X.Y.Z`, где `X.Y.Z` — номер версии **ELMA Cortex** |
| `\--push` | Загрузить образы в приватный реестр | - `--uri <URI>` — URI реестра. Обязательный параметр;<br>- `--dir <PATH>` — папка с образами;<br>- `--creds <USER:PASS>` — учётные данные реестра;<br>- `--cert-dir <PATH>` — путь к TLS сертификатам;<br>- `--tls-verify <BOOL>` — проверять TLS. Значение по умолчанию — `true`. |
