Перейти к содержанию

Установка и настройка

Инструкция описывает процесс установки и настройки консоли управления ПроAPI Защита.

Шаг 1. Получение доступа и лицензионного ключа

  • Отправьте запрос на presale@webmonitorx.ru для получения trial лицензии и доступа к репозиторию продукта.

Шаг 2. Подключение Docker Registry

  • Выполните команду:

    docker login registry.webmonitorx.ru -u '__UserName__'
    

  • Введите логин и пароль, полученные на предыдущем шаге.

Шаг 3. Установка базы данных

Обратите внимание

Для корректной работы требуется включение режима replica set!

  • Пример запуска MongoDB в Docker-контейнере (может не подойти для production окружения):

    docker pull  mongo:8.0.5 
    docker run -it --rm \
      --name api-fw-mongo \
      -e MONGO_INITDB_ROOT_USERNAME=apifw \
      -e MONGO_INITDB_ROOT_PASSWORD=__SECURE_PASSWORD_HERE__\
      -e MONGO_INITDB_DATABASE=admin \
      -p 27017:27017 \
      -v ${PWD}/mongo_data:/data/db \
      mongo:8.0.5 \
      bash -c "
        openssl rand -base64 756 > /opt/mongodb-keyfile &&
        chmod 400 /opt/mongodb-keyfile &&
        chown 999:999 /opt/mongodb-keyfile &&
        exec docker-entrypoint.sh mongod --bind_ip_all --replSet rs0 --auth --keyFile /opt/mongodb-keyfile
      "
    

  • После успешного запуска контейнера включите режим replica set:

    docker run --rm \
      --name mongo-init \
      mongo:8.0.5 \
      /bin/sh -c "
        mongosh mongodb://apifw:__SECURE_PASSWORD_HERE__@api-fw-mongo:27017/?directConnection=true --eval '
            try {
              let status = rs.status();
            } catch (e) {
              if (e.codeName === \"NotYetInitialized\") {
                rs.initiate({
                  _id: \"rs0\",
                  members: [{ _id: 1, host:\"api-fw-mongo:27017\"}]
                });
              }
            }
          '
        "
    
  • Проверьте корректность настройки режима replica set:

    docker run --rm -it \
      --name mongosh \
      mongo:8.0.5 \
        /bin/sh -c "mongosh mongodb://apifw:__SECURE_PASSWORD_HERE__@api-fw-mongo:27017/?directConnection=true --eval 'rs.status();'"
    

Шаг 4. Миграции базы данных

Перед запуском Консоли управления или при переходе на новую версию ПО нужно подготовить структуру базы данных.

Обратите внимание

Версия контейнера с миграциями должна соответствовать используемой версии консоли управления.

Запуск контейнера для выполнения миграции:

docker pull registry.webmonitorx.ru/api-firewall/apifw-db-migrations:1.2.0
docker run -it \  
  --name api-fw-manager-migrations \   
  -e MONGO_URI="mongodb://apifw:__SECURE_PASSWORD_HERE__@api-fw-mongo:27017"  
  registry.webmonitorx.ru/api-firewall/apifw-db-migrations:1.2.0 \  
  up

Переменная окружения:

Переменная среды Описание
MONGO_URI Строка подключения к MongoDB

Шаг 5. Запуск бэкенд компонента Консоли управления ПроAPI Защита

  • Разверните Консоль управления ПроAPI Защита, используя docker-образ приложения на сервере в вашей сети.

Запуск контейнера с приложением:

docker pull registry.webmonitorx.ru/api-firewall/apifw-manager:1.2.0
docker run -d \  
  --name api-fw-manager \  
    -e MONGO_URI="mongodb://MONGO_LOGIN:MONGO_PASSWD@$MONGO_ADDR:PORT" \  
    -e URL_MANAGER=${URL_MANAGER} \  
    -e LICENSE_KEY=__LICENSE_KEY__ \  
    -p 8081:8081 \  
    -p 8082:8082 \  
    registry.webmonitorx.ru/api-firewall/apifw-manager:1.2.0

Минимальный набор переменных окружения для старта:

Переменная среды Описание
MONGO_URI Строка подключения к MongoDB
URL_MANAGER Адрес и порт, на который будут подключаться ноды по gRPC. Схему (http://, https://) указывать не нужно. Порт по-умолчанию 8081.
LICENSE_KEY Лицензионный ключ

Полный набор переменных окружения →

  • Бэкенд компонент Консоли управления использует следующие порты:

    • Порт 8081 (TCP) для GRPC-соединений с нодами
    • Порт 8082 (TCP) для взаимодействия с WEB UI по HTTP. Можно не публиковать этот порт, если фронтенд компонент будет запущен в той же docker сети.

    Обратите внимание

    Убедитесь в доступности хоста консоли управления для подключения из подсетей, где планируется запуск нод.

  • Вы можете запустить контейнер api-fw-manager и контейнер с WEB UI рядом, в одной docker сети: так не потребуется открывать порт 8082 наружу.

    Обратите внимание

    При первом запуске api-fw-manager в лог контейнера будет выведен сгенерированный случайным образом пароль администратора. Сохраните его для дальнейшего использования.

Шаг 6. Развертывание WEB UI

  • Свяжите Web UI с бэкендом Консоли управления ПроAPI Защита, установив значения переменных окружения API_BASE_URL и API_BACKEND_URL.

Запуск контейнера с WEB UI:

docker pull registry.webmonitorx.ru/api-firewall/apifw-manager-ui:1.2.0
docker run -d \  
  --name manager_ui \  
  -e API_BASE_URL=http://apifw.webmonitorx.dev/api/ \ 
  -e API_BACKEND_URL=http://api.apifw.webmonitorx.dev:8082/api/ \  
  -p 80:80 \
  -p 443:443 \
  registry.webmonitorx.ru/api-firewall/apifw-manager-ui:1.2.0

  • После успешного выполнения этих команд контейнер с Web UI будет запущен и доступен по указанным портам. Теперь можно открыть Web UI в браузере, перейдя по адресу http://<IP_адрес_сервера>.

Переменные окружения:

Переменная среды Описание
API_BASE_URL URL, который будет использоваться для формирования запросов к API. Должен соответствовать URL, на котором у вас развернут WEB UI, но с /api на конце
API_BACKEND_URL URL для проксирования запроса от WEB UI на backend. На этот URL встроенный в WEB UI NGINX будет делать proxy_pass

Фронтенд компонент состоит из React приложения и NGINX и по умолчанию работает по http. При необходимости вы можете примонтировать внутрь контейнера свою конфигурацию NGINX и SSL сертификаты.
Пример конфигурационного файла NGINX: compose-example. Используйте его как основу для создания своего собственного конфига.