# Инструкция по установке

***

Прежде чем развертывать **X Recovery Manager (XRM)**, необходимо обратить внимание на его особенности. **XRM** представляет собой приложение, которое работает в среде контейнеризации **Docker**. Для успешной установки и работы убедитесь, что на вашей операционной системе (ОС) установлены **Docker** и **Docker Compose**.

{% hint style="info" %}
**Что такое Docker:**

Docker - это открытая платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковывать приложения и все их зависимости в изолированных средах, что обеспечивает единообразные и надежные развертывания приложений в различных средах.

**Что такое Docker Compose:**

Docker Compose - это инструмент, который позволяет определить и запускать многоконтейнерные приложения с помощью файла конфигурации YAML. Это упрощает развертывание и управление связанными между собой контейнерами.
{% endhint %}

Развертывание осуществляется через терминал. Откройте терминал (командную строку) на вашей системе. Для этого вы можете нажать сочетание клавиш `Ctrl + Alt + T` (для большинства дистрибутивов Linux) или просто найти и запустить приложение "Терминал" (Terminal).

Для запуска XRM на целевой системе должен быть предварительно установлен и настроен **Docker**. Если его нет, следуйте инструкциям по установке на официальном сайте Docker Compose для **Windows, Mac, Linux**: <https://docs.docker.com/engine/install/>

Информация об установке Docker [на российские ОС](https://kb.x-rm.ru/dokumentaciya/dokumentaciya/xrm-versiya-1.1/ustanovka-docker-na-rossiiskie-os) Astra Linux, ОС АЛЬТ, ROSA Linux, РЕД ОС

[Пошаговое развертывание X Recovery Manager на примере РЕД ОС: 7.3.2 (RED OS MUROM)](https://kb.x-rm.ru/dokumentaciya/dokumentaciya/xrm-versiya-1.1/ustanovka-xrm-na-red-os)

***

### Пошаговое развертывание **X Recovery Manager на примере ОС Ubuntu 22.04 (jammy)**

#### **Шаг 1.** Установка Docker:

**1.1.** Обновить индексы пакетов apt.

```bash
sudo apt update
```

**1.2.** Установить пакеты необходимые для работы пакетного менеджера apt по протоколу HTTPS.

```bash
sudo apt install curl software-properties-common ca-certificates apt-transport-https -y
```

Флаг -y означает, что на все вопросы терминала ответом будет *«*&#x414;&#x430;*»*

**1.3.** Добавить GPG-ключ репозитория Docker.

```bash
curl -f -s -S -L https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

Во время импорта терминал может вывести предупреждение, после чего сообщит об успешном выполнении команды.

**1.4.** Добавить репозиторий Docker (для версии Ubuntu 22.04 - *«*&#x4A;amm&#x79;*»*. Для других версий ОС нужно использовать их кодовые имена).

```bash
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable"
```

Во время выполнения терминал попросит подтвердить выполнение операции. Нажимаем Enter.

**1.5.** Обновить индексы пакетов apt.

```bash
sudo apt update
```

**1.6.** Проверить репозиторий. Убедиться, что инсталляция будет осуществлена из нужного нам репозитория

```bash
apt-cache policy docker-ce
```

Вывод:

```bash
docker-ce:
  Installed: (none)
  Candidate: 5:24.0.5-1~ubuntu.22.04~jammy
  Version table:
     5:24.0.5-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:24.0.4-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:24.0.3-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:24.0.2-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:24.0.1-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:24.0.0-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:23.0.6-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 *** 5:23.0.5-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
        100 /var/lib/dpkg/status
     5:23.0.4-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:23.0.3-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:23.0.2-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:23.0.1-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:23.0.0-1~ubuntu.22.04~jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.24~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.23~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.22~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.21~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.20~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.19~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.18~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.17~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.16~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.15~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.14~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
     5:20.10.13~3-0~ubuntu-jammy 500
        500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
```

В зависимости от выхода новых версий докера вывод может иметь другой вид. Главное убедиться, что установка будет осуществляться из репозитория докера.

**1.7.** После манипуляций с репозиториями перейдем непосредственно к установке Docker.

```bash
sudo apt install docker-ce -y
```

После выполнения команды начнется установка докера.

**1.8.** Убедиться в успешности установки, проверив статус в системе.

```bash
sudo systemctl status docker
```

Вывод:

```bash
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-06-01 09:52:31 UTC; 2 months 14 days ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 817 (dockerd)
      Tasks: 68
     Memory: 240.2M
        CPU: 6h 54min 24.126s
     CGroup: /system.slice/docker.service
             ├─    817 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
```

В терминале должна появиться информация о том, что Docker активен: статус active (running).

#### **Шаг 2.** Установка Docker Compose:

**2.1.** Загрузить Docker Compose версии 2.17.3 из официального репозитория Github.

```bash
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
```

**2.2.** Установить правильные разрешения.

```bash
chmod +x ~/.docker/cli-plugins/docker-compose
```

{% hint style="success" %}
**Рекомендуемые версии Docker и Docker Compose**

Для стабильной работы **XRM** на **ОС Ubuntu 22.04** рекомендуем использовать версии **Docker** версия 23.0.5 и выше. **Docker Compose** версия 2.17.3 и выше.

Для проверки установленной версии Docker Compose.

```bash
docker compose version
```

Для проверки установленной версии Docker.

```bash
docker -v
```

{% endhint %}

#### **Шаг 3. Установка XRM:**

После того, как **Docker** и **Docker Compose** установлены, приступаем к развертыванию **X Recovery Manager** **версии 1.1.** с использованием контейнеров **Docker**.&#x20;

**3.1.** Создать директорию **xrm\_v1.1** для X Recovery Manager в каталоге `/home`

```bash
sudo mkdir /home/xrm_v1.1
```

Убедиться, что она была успешно создана.

```bash
ls -l /home
```

Вы должны увидеть список файлов и папок в каталоге `/home`, включая только что созданную папку `xrm_v1.1`

**3.2.** Перейти в нее.

```bash
cd /home/xrm_v1.1
```

**3.3.** Загрузить файл архив **XRM** `xrm-docker_v1_1.tar.gz`

```bash
sudo wget https://files.x-rm.ru/releases/v1.1/xrm-docker_v1_1.tar.gz
```

**3.4.** Распаковать содержимое архива`xrm-docker_v1_1.tar.gz` в директорию home`/xrm_v1.1`

```bash
sudo tar -zxvf xrm-docker_v1_1.tar.gz
```

**3.5.** Выполнить развертывание сервисов веб-приложения XRM.

```bash
sudo docker compose up -d
```

#### Установка завершена.

После развертывания XRM в системе, вы можете проверить состояния контейнеров. Убедиться, что сервисы успешно запущены и работают.

```bash
sudo docker ps -a
```

Вывод:

```
CONTAINER ID   IMAGE                                   COMMAND                  CREATED       STATUS                   PORTS                                                 NAMES
6a69ab0da195   stackstorm/st2actionrunner:latest       "/st2client-startup.…"   2 hours ago   Up 2 hours (healthy)                                                           xrm-client
51b23390adcc   xrmtech/st2web_xrm:v1.1                 "/bin/bash -c 'if [ …"   2 hours ago   Up 2 hours (healthy)     0.0.0.0:80->80/tcp, 443/tcp                           xrm-web
7531ca360b5b   stackstorm/st2rulesengine:latest        "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-rulesengine
d69a31ccd3fc   stackstorm/st2workflowengine:latest     "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-workflowengine
8f643d3460a3   stackstorm/st2timersengine:latest       "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-timersengine
513bee24258d   stackstorm/st2garbagecollector:latest   "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-garbagecollector
9fca2e2cdb99   stackstorm/st2auth:latest               "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours               9100/tcp                                              xrm-auth
20c316ee4cdb   stackstorm/st2notifier:latest           "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-notifier
7650800d213e   stackstorm/st2sensorcontainer:latest    "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-sensorcontainer
088d10cc3838   stackstorm/st2actionrunner:latest       "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-actionrunner
dd07787b8bd9   stackstorm/st2scheduler:latest          "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours                                                                     xrm-scheduler
ed23b2bd94cd   stackstorm/st2stream:latest             "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours               9102/tcp                                              xrm-stream
8095b93a7784   stackstorm/st2api:latest                "/opt/stackstorm/st2…"   2 hours ago   Up 2 hours               9101/tcp                                              xrm-api
591a23ad9d46   mongo:4.4                               "docker-entrypoint.s…"   2 hours ago   Up 2 hours               27017/tcp                                             xrm-mongo
06591342cabf   redis:6.2                               "docker-entrypoint.s…"   2 hours ago   Up 2 hours               6379/tcp                                              xrm-redis
c7f40970628e   rabbitmq:3.8                            "docker-entrypoint.s…"   2 hours ago   Up 2 hours               4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   xrm-rabbitmq
e30823f98541   xrmtech/xrm-controller:v1.1             "./xrm-controller"       2 hours ago   Up 2 hours               0.0.0.0:8080->8080/tcp, :::8080->8080/tcp             xrm-controller
```

В результате вы увидите список контейнеров в формате таблицы, который будет содержать информацию о каждом контейнере, включая его имя, ID, статус, порты, используемые ресурсы и другие сведения.
