Информация по установке экземпляра ПО

1. Общая информация
MapLab - цифровая платформа, предназначенная для автоматизации предпроектного этапа планирования застройки территории (далее - Система).

2. Список репозиториев
https://github.com/MapLab-ru/api-gateway - основной модуль, осуществляющий оркерстрацию запросов к Системе;
https://github.com/MapLab-ru/users_db - сервис, объединящий БД для хранения пользователей и проектов, а также HTTP обертку над ним, для управления моделями данных и осуществления внешнего доступа;
https://github.com/MapLab-ru/development_planner - сервис планирования застройки территории на основе geojson;
https://github.com/MapLab-ru/nspd-proxy - http сервер, выступает в качестве промежуточного слоя для проксирования запросов к https://nspd.gov.ru/ и получения информации о земельном участке;
https://github.com/MapLab-ru/maplab-app - web-приложение Системы.

3. Системные требования
Для установки требуется ОС Linux, версия ядра 6.x.x.
Минимальные требования к аппаратному обеспечению - 32 ГБ RAM, 50 Гб HDD, CPU 2.5 Ггц. Рекомендуется 128 ГБ RAM, объем диска может потребовать увеличение в зависимости от количества пользовательских проектов и префабов моделей для генерации, CPU Intel Xeon - >=4 Ггц.
Для запуска необходимо установить git (версии 28.x.x или выше), docker-engen (версии 28.x.x или выше) и docker-compose (версии 2.38.x или выше).
Рекомендуется также установка: curl, vim/nano, make. Для обеспечения работы системы на доменном имене понадобится установка NGINX или иной системы проксирования пакетов к Системе из сети Интернет.

4. Предупреждение
Данная инструкция описывает установку Системы для целей разработки или тестирования. При установке в продуктивной среде необходимо предпринять меры по защите и предотвращению доступа к базам данных и другой инфраструктуре проекта. Рекомендуется не назначать внешние адреса для контейнеров (0.0.0.0), а запускать их исключительно с доступом из локальной сети (127.0.0.1/localhost). Для контейнеров, которым необходим доступ в сеть интернет или любую другую внешнюю сеть, производить проксирование пакетов.

5. Установка системы
5.1. Получение доступа к репозиториям. Для получения доступа к исходному коду каждого сервиса необходимо предоставить GitHub аккаунт, который будет добавлен в организацию.
5.2. Выполнить git clone для всех компонентов системы (оставить все репозитории в ветке main!)
5.3. Для каждого сервиса создать файл - cp .env.example
5.4. Произвести настройку сетевых адресов контейнеров в docker-compose.yml файлах и настроек безопасности каждого сервиса в .env файлах
5.5. Произвести сборку npm приложения в репозитории maplab-app, настроить в его .env файле адреса других сервисов

6. Зависимости
6.1. При размещении на домене, отличном от map-lab.ru и его поддоменах, необходимо произвести настройку параметров allow hosts и cors в сервисах api-gateway и users_db.
6.2. Для успешного взаимодействия между сервисами необходимо выполнить OAuth2.0 авторизацию сервиса api-gateway в сервисе users_db. Для этого необходимо зайти по адресу users_db_url/admin, ввести креды админа, указанные в .env, далее перейти на вкладку Django OAuth Toolkit -> Applications, добавить новое приложение, обязательно выбрав параметры Client type: Confidential и Authorization grant type: Client credentials. Получить “Client id” и “Client secret” и добавить их в соответствующие поля .env файла сервиса api-gateway.

7. Запуск системы
В случае правильной настройки системы и запуска билда приложения maplab-app, по ip адресу используемой Linux машины или по доменному имени (если используется) будет доступно web-приложение.