Общество с ограниченной ответственностью «Тэктис»
(ООО «Тэктис»)
РУКОВОДСТВО ПО УСТАНОВКЕ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
«ИНДОРА» — цифровая платформа производственной безопасности
Аннотация

Настоящий документ является «Руководством по установке программного обеспечения ИНДОРА» (далее — Руководство) и предназначен для технических специалистов, выполняющих развёртывание системы на серверах заказчика. Документ содержит полное описание подготовительных мероприятий, требований к инфраструктуре, последовательности шагов установки и первичной настройки, проверки работоспособности, а также порядка обновления и удаления программного обеспечения.
Руководство разработано в соответствии с требованиями ГОСТ 19.504-79 «Руководство программиста», ГОСТ 34.601-90 «Стадии создания», РД 50-34.698-90 в части документов рабочей и эксплуатационной документации.

1. Общие сведения о документе

1.1. Область применения
Настоящее Руководство применяется при первичной установке программного обеспечения «ИНДОРА» (далее — ПО ИНДОРА, Система) на инфраструктуру заказчика в режимах on-premise, контейнерного развёртывания (Docker Compose) и в кластере оркестрации (Kubernetes). Документ охватывает все варианты поставки, поддерживаемые правообладателем — ООО «Тэктис».
ПО ИНДОРА представляет собой комплексную информационную систему охраны труда и производственной безопасности, объединяющую модули нарядов-допусков, оценки и управления рисками, электронного аудита и инспекций, изоляции источников энергии (LOTO), управления компетенциями, инцидентами и расследованиями, управления изменениями (MOC) и связанными процессами. Класс системы — ИСОБР 2.0 (Информационная система обеспечения безопасности и рисков, второе поколение).

1.2. Целевая аудитория
Документ адресован системным администраторам, инженерам DevOps, специалистам отделов сопровождения корпоративных информационных систем, привлекаемым подрядным организациям и сотрудникам внедрения со стороны ООО «Тэктис».
От специалиста, выполняющего установку, требуется:
  • уверенное владение операционными системами семейства Linux (Astra Linux SE, РЕД ОС, Альт Сервер, RHEL, Ubuntu) и/или Microsoft Windows Server;
  • навыки администрирования СУБД PostgreSQL версии 13 и выше или Microsoft SQL Server 2019 и выше;
  • опыт настройки веб-серверов Nginx или Apache HTTP Server в качестве обратного прокси;
  • базовые знания контейнерных технологий (Docker, Docker Compose) и оркестрации (Kubernetes 1.27+);
  • понимание принципов сетевой безопасности, TLS, организации DMZ-сегментов и работы межсетевых экранов;
  • опыт работы с командной строкой и стандартными утилитами администрирования (systemd, cron, journalctl, iptables, firewalld, ufw).

1.3. Связь с другими документами комплекта
Настоящий документ входит в состав эксплуатационной документации ПО ИНДОРА и должен использоваться совместно со следующими документами:
  • Описание функциональных характеристик ПО ИНДОРА — общее описание системы, состав модулей и предметная область;
  • Руководство администратора ПО ИНДОРА — порядок повседневного администрирования, управления учётными записями, мониторинга, резервного копирования и обеспечения информационной безопасности;
  • Руководство пользователя ПО ИНДОРА — описание пользовательских сценариев работы с модулями системы;
  • Описание процессов жизненного цикла ПО ИНДОРА — порядок поддержки, выпуска обновлений и снятия с эксплуатации.

1.4. Условные обозначения
В тексте документа используются следующие условные обозначения:
  • команды, имена файлов, параметры конфигурации и фрагменты кода набраны моноширинным шрифтом на сером фоне;
  • изменяемые параметры, требующие подстановки конкретных значений, выделены в угловых скобках, например <PASSWORD>;
  • примеры команд с признаком sudo подразумевают выполнение от имени пользователя с расширенными правами;
  • предостережения о потенциально опасных операциях выделены в тексте словом «Внимание».

2. Назначение и состав программного обеспечения

2.1. Назначение ПО ИНДОРА
ПО ИНДОРА предназначено для комплексной автоматизации процессов охраны труда, промышленной и экологической безопасности на предприятиях нефтегазовой, химической, металлургической, горнодобывающей, энергетической отраслей, в строительстве, на транспорте, в логистике и розничной торговле. Система обеспечивает прозрачность производственных операций, снижение уровня производственного травматизма, выполнение требований законодательства Российской Федерации в области охраны труда и промышленной безопасности.

2.2. Функциональные модули, развёртываемые в ходе установки

 Модуль

 Назначение

 Наряды-допуски

 Электронное оформление, согласование и закрытие нарядов-допусков на опасные работы

 Управление рисками

 Идентификация опасностей, оценка рисков, контроль барьеров безопасности

 Электронный аудит

 Проведение поведенческих аудитов и инспекций по чек-листам

 LOTO

 Изоляция источников энергии, блокировки и маркировка (Lock-Out / Tag-Out)

 Компетенции (CMS)

 Управление обучением, аттестацией, допусками персонала

 Инциденты

 Регистрация и расследование происшествий и near-miss событий

 MOC

 Управление изменениями (Management of Change) с оценкой влияния на безопасность

 Журналы безопасности

 Электронные журналы инструктажей, нарядов, происшествий, СИЗ

 Интеграционная шина

 REST API, вебхуки, готовые коннекторы к 1С, SAP, АСУ ТП

 Аналитика и отчёты

 KPI-панели, отчётность по травматизму (Н-1, формы Росстата)


2.3. Варианты поставки
ПО ИНДОРА поставляется в трёх вариантах развёртывания, выбираемых заказчиком на этапе подписания договора:
  • Локальная установка (on-premise) с использованием системных пакетов целевой операционной системы;
  • Контейнерное развёртывание с использованием Docker Compose — подходит для одиночного сервера и сред разработки/тестирования;
  • Развёртывание в кластере Kubernetes — для производственных сред с высокими требованиями к доступности, масштабированию и автоматизированному управлению.
Поставка включает дистрибутив (RPM/DEB-пакеты или контейнерные образы), инсталляционные скрипты, конфигурационные шаблоны, миграционные SQL-скрипты, ключ активации лицензии, комплект эксплуатационной документации.

3. Краткое описание архитектуры

ПО ИНДОРА построено по трёхзвенной (трёхуровневой) клиент-серверной архитектуре с веб-интерфейсом, обеспечивающей разделение представления, бизнес-логики и хранения данных. Полное описание архитектуры приведено в «Руководстве администратора ПО ИНДОРА». В рамках процедур установки специалист должен понимать состав основных компонентов и их роли.

3.1. Уровни архитектуры

 Уровень

 Компоненты

 Роль

 Презентационный

 Веб-интерфейс (SPA на TypeScript), мобильное приложение, обратный прокси (Nginx/Apache)

 Отображение данных и взаимодействие с пользователем

 Прикладной

 Сервер приложений (C++/Perl), микросервисы интеграций, очередь задач (Redis/RabbitMQ)

 Бизнес-логика, валидация, расчёты, интеграции

 Хранения данных

 СУБД PostgreSQL 13+ или MS SQL Server 2019+, файловое хранилище (локальное / NFS / S3-совместимое)

 Хранение бизнес-данных и вложений


3.2. Технологический стек
  • Серверная часть: Perl (служебные модули), TypeScript/Node.js (микросервисы интеграций);
  • Клиентская часть: TypeScript, современные веб-стандарты (HTML5, CSS3, ES2022);
  • Хранение данных: PostgreSQL 13/14/15/16 или Microsoft SQL Server 2019/2022;
  • Веб-сервер и балансировка: Nginx 1.18+ или Apache HTTP Server 2.4+;
  • Очереди и кэш: Redis 6+ (опционально RabbitMQ 3.10+);
  • Контейнеризация и оркестрация: Docker 24+, Docker Compose v2, Kubernetes 1.27+, Helm 3.12+.

3.3. Поддерживаемые сценарии развёртывания
Различные сценарии развёртывания применимы в зависимости от количества одновременных пользователей и требований к доступности. Подробные требования приведены в разделе 4 настоящего Руководства.
  • Одиночный сервер: до 200 пользователей, пилотные внедрения;
  • Двухзвенная схема (приложение и СУБД на разных узлах): до 2 000 пользователей;
  • HA-кластер (несколько прикладных узлов, балансировщик, репликация СУБД): 15 000+ пользователей;
  • Kubernetes (горизонтальное масштабирование, HPA): любая ёмкость в рамках возможностей инфраструктуры.

4. Требования к аппаратному обеспечению

4.1. Сервер приложений

 Конфигурация

 CPU

 ОЗУ

 Диск

 Поддерживаемая нагрузка

 Минимальная (пилот)

 4 vCPU (2,4 ГГц)

 8 ГБ

 120 ГБ SSD

 до 200 пользователей

 Малая

 8 vCPU

 16 ГБ

 250 ГБ SSD

 до 1 000 пользователей

 Средняя

 16 vCPU

 32 ГБ

 500 ГБ SSD/NVMe

 до 5 000 пользователей

 Производственная

 32 vCPU

 64 ГБ

 1 ТБ NVMe

 до 15 000 пользователей

 Высоконагруженная (HA, на узел)

 24 vCPU

 48 ГБ

 500 ГБ NVMe

 15 000+ пользователей (3+ узла)


4.2. Сервер СУБД

 Конфигурация

 CPU

 ОЗУ

 Диск под БД

 Примечание

 Минимальная

 4 vCPU

 16 ГБ

 200 ГБ SSD

 до 1 000 пользователей

 Средняя

 8 vCPU

 32 ГБ

 500 ГБ SSD/NVMe

 до 5 000 пользователей

 Производственная

 16 vCPU

 64 ГБ

 1 ТБ NVMe + 1 ТБ под WAL

 15 000+ пользователей, primary узел

 Реплика (read-replica)

 16 vCPU

 64 ГБ

 1 ТБ NVMe

 каждая в HA-кластере


4.3. Файловое хранилище
Файловое хранилище предназначено для хранения вложений: фотографий с места работ, актов, отчётов, видеоматериалов поведенческих аудитов. Объём планируется из расчёта от 50 МБ до 200 МБ на одного пользователя в год.
  • Для одиночных серверов допускается локальная файловая система (ext4, XFS) с резервированием через RAID-1/RAID-10;
  • Для HA-кластеров — выделенный NFS-сервер версии 4 и выше с резервированием путей доступа (multipath);
  • Рекомендуется применение S3-совместимого объектного хранилища (MinIO, СберКорпХранилище, Yandex Object Storage) с шифрованием at-rest.

4.4. Требования к АРМ администратора

 Параметр

 Минимальное значение

 Процессор

 Intel Core i5 / AMD Ryzen 5 (4 ядра, 2,5 ГГц)

 Оперативная память

 8 ГБ

 Накопитель

 256 ГБ SSD

 Разрешение экрана

 1920 × 1080

 Сетевое подключение

 Не менее 50 Мбит/с

 ОС

 Windows 10/11, macOS 12+, Astra Linux SE 1.7+, РЕД ОС 7.3+


4.5. Требования к АРМ конечного пользователя
Для работы пользователя с веб-интерфейсом ПО ИНДОРА достаточно современного браузера и сетевого подключения. Локальная установка клиентского программного обеспечения не требуется.
  • Процессор — двухъядерный, 1,8 ГГц и выше;
  • ОЗУ — не менее 4 ГБ;
  • Накопитель — наличие 1 ГБ свободного пространства для кэша браузера;
  • Разрешение экрана — 1366 × 768 и выше;
  • Сетевое подключение — не менее 5 Мбит/с;
  • Мобильное приложение — устройство с Android 10+ или iOS 14+, не менее 2 ГБ ОЗУ, 500 МБ свободной памяти.

5. Требования к программному обеспечению

5.1. Поддерживаемые серверные операционные системы

 Семейство

 Версия

 Статус поддержки

 Astra Linux Special Edition

 1.7.4 и выше (релиз «Орёл», «Воронеж», «Смоленск»)

 Рекомендуется для контуров с УЗ-1, УЗ-2

 РЕД ОС

 7.3 МУРОМ и выше

 Полная поддержка

 ALT Server

 10.x, 11.x

 Полная поддержка

 РОСА «ХРОМ»

 12 и выше

 Полная поддержка

 Ubuntu Server LTS

 22.04, 24.04

 Полная поддержка

 Debian

 12 (Bookworm) и выше

 Полная поддержка

 RHEL / CentOS Stream / Rocky / AlmaLinux

 8.x, 9.x

 Полная поддержка

 Microsoft Windows Server

 2019, 2022

 Поддерживается в варианте MS SQL Server


5.2. Поддерживаемые СУБД

 СУБД

 Версии

 Особенности применения

 PostgreSQL

 13, 14, 15, 16

 Рекомендуемая СУБД для on-premise установок

 Postgres Pro Standard / Enterprise

 13, 14, 15, 16

 Сертифицированная версия для УЗ-1, УЗ-2

 Microsoft SQL Server

 2019, 2022 (Standard / Enterprise)

 Применяется в существующих ландшафтах с MSSQL


5.3. Веб-серверы и обратный прокси
  • Nginx 1.18 и выше (рекомендуется 1.24+);
  • Apache HTTP Server 2.4 и выше с модулями mod_proxy, mod_ssl, mod_headers;
  • Поддерживаемые балансировщики нагрузки: HAProxy 2.6+, корпоративные F5 BIG-IP, Citrix ADC (NetScaler).

5.4. Поддерживаемые браузеры

 Браузер

 Минимальная версия

 Яндекс Браузер

 23.0 и выше

 Google Chrome / Chromium

 120 и выше

 Mozilla Firefox

 115 ESR и выше

 Microsoft Edge

 120 и выше

 Safari

 16 и выше (только клиент)


5.5. Сопутствующее программное обеспечение
  • Redis 6.2 и выше — кэш и очередь задач;
  • RabbitMQ 3.10 и выше — опционально, для интеграций со внешними асинхронными системами;
  • Docker Engine 24.0 и выше, Docker Compose v2.20 и выше — для контейнерного варианта;
  • Kubernetes 1.27 и выше, Helm 3.12 и выше — для оркестрированного развёртывания;
  • Prometheus 2.45 и выше, Grafana 10 и выше — рекомендуемый стек мониторинга;
  • OpenSSL 1.1.1 и выше — для генерации и обработки TLS-сертификатов.

6. Сетевые требования и порты

6.1. Общие требования к сети
  • Скорость канала между прикладным сервером и сервером СУБД — не менее 1 Гбит/с;
  • Задержка между узлами одного кластера (RTT) — не более 5 мс;
  • Для интеграций с внешними системами — стабильное подключение с пропускной способностью не менее 100 Мбит/с;
  • Для мобильных приложений предусмотрена возможность работы при сетевой задержке до 500 мс с фоновой синхронизацией.

6.2. Используемые TCP/UDP-порты

 Порт

 Протокол

 Назначение

 Направление

 443

 TCP/HTTPS

 Веб-интерфейс ПО ИНДОРА для пользователей

 входящий снаружи

 80

 TCP/HTTP

 Перенаправление на HTTPS, проверки ACME (Let's Encrypt)

 входящий

 22

 TCP/SSH

 Удалённое администрирование сервера

 входящий, с ограничением по IP

 5432

 TCP/PostgreSQL

 СУБД PostgreSQL

 только между прикладным узлом и БД

 1433

 TCP/MSSQL

 СУБД Microsoft SQL Server

 только между прикладным узлом и БД

 6379

 TCP/Redis

 Кэш и очередь

 внутренний

 5672

 TCP/AMQP

 RabbitMQ (если используется)

 внутренний

 9100

 TCP

 Prometheus node_exporter

 внутренний

 8080

 TCP

 Внутренние health-check эндпоинты

 внутренний


6.3. Разрешённые исходящие подключения
  • SMTP-сервер организации — для рассылки уведомлений (порт 25, 465 или 587);
  • LDAP/AD-серверы — для синхронизации учётных записей (порт 389, 636);
  • IdP — серверы SAML/OIDC SSO (HTTPS, порт 443);
  • Корпоративные системы для интеграций: 1С, SAP, OSIsoft PI System и другие — порты согласовываются;
  • NTP-серверы — для синхронизации времени (порт 123/UDP);
  • Серверы лицензирования и обновлений ООО «Тэктис» (HTTPS, порт 443) — только при наличии разрешения службы ИБ заказчика.

6.4. Требования к DNS и сертификатам
  • Для сервера приложений должна быть выделена FQDN-запись в корпоративном DNS (например, indora.company.ru);
  • Сертификат TLS — выданный доверенным удостоверяющим центром (внутренним или внешним), допускается сертификат на доменное имя или wildcard;
  • Срок действия сертификата — не менее 90 дней, рекомендуется автоматическое обновление через сервис ACME (Let's Encrypt, внутренний УЦ);
  • Цепочка сертификатов должна включать промежуточные сертификаты УЦ.
7. Подготовка инфраструктуры

7.1. Подготовка серверов на базе Linux
Перед началом установки на серверах под управлением Linux необходимо выполнить следующие подготовительные операции от имени пользователя с правами sudo.

 # 1. Обновление пакетов системы

 sudo apt-get update && sudo apt-get upgrade -y     # Astra Linux / Ubuntu / Альт Сервер

 sudo dnf update -y                                 # РЕД ОС / RHEL / CentOS Stream

 

 # 2. Установка базовых утилит

 sudo apt-get install -y curl wget htop iotop tmux mc git unzip rsync \

      ca-certificates gnupg lsb-release tar net-tools

 

 # 3. Настройка имени узла

 sudo hostnamectl set-hostname indora-app-01

 echo "127.0.1.1 indora-app-01" | sudo tee -a /etc/hosts

 

 # 4. Настройка часового пояса и синхронизации времени

 sudo timedatectl set-timezone Europe/Moscow

 sudo systemctl enable --now systemd-timesyncd     # или chronyd, ntpd

 

 # 5. Создание системного пользователя для сервисов ИНДОРА

 sudo useradd -r -m -s /bin/bash indora

 sudo usermod -aG sudo indora                       # опционально, для удобства


7.2. Настройка межсетевого экрана
Разрешите входящие подключения только на нужные порты, ограничьте SSH IP-адресами администраторов.

 # firewalld (Astra Linux SE, РЕД ОС, RHEL, AlmaLinux)

 sudo systemctl enable --now firewalld

 sudo firewall-cmd --permanent --add-service=https

 sudo firewall-cmd --permanent --add-service=http

 sudo firewall-cmd --permanent \

      --add-rich-rule='rule family="ipv4" source address="10.0.10.0/24" service name="ssh" accept'

 sudo firewall-cmd --reload

 

 # ufw (Ubuntu)

 sudo ufw allow 443/tcp && sudo ufw allow 80/tcp

 sudo ufw allow from 10.0.10.0/24 to any port 22

 sudo ufw enable

 

 # iptables (универсальный вариант)

 sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

 sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

 sudo iptables -A INPUT -p tcp --dport 22 -s 10.0.10.0/24 -j ACCEPT

 sudo netfilter-persistent save


7.3. Настройка SELinux / AppArmor
Для Astra Linux SE рекомендуется не отключать мандатное управление доступом, а добавить соответствующие политики PARSEC. Для РЕД ОС / RHEL рекомендуется режим SELinux enforcing с разрешением необходимых контекстов:

 # Проверка статуса

 getenforce

 sudo sestatus

 

 # Добавление политик для сервиса ИНДОРА

 sudo semanage port -a -t http_port_t -p tcp 8080

 sudo semanage fcontext -a -t bin_t '/opt/indora/bin(/.*)?'

 sudo restorecon -Rv /opt/indora


7.4. Подготовка серверов на базе Microsoft Windows Server
При установке в варианте с MS SQL Server и службами Windows необходимо:
  • развернуть Windows Server 2019 или 2022 с актуальными обновлениями;
  • подключить сервер к домену Active Directory (при наличии корпоративного домена);
  • включить роли «Веб-сервер (IIS)» либо установить Nginx for Windows / альтернативный обратный прокси;
  • создать сервисную учётную запись svc_indora с правами «Log on as a service»;
  • настроить правила брандмауэра Windows Defender Firewall на разрешение портов 80, 443, 1433.

8. Установка СУБД PostgreSQL

8.1. Установка пакетов PostgreSQL

 # Ubuntu / Debian

 sudo apt-get install -y postgresql-15 postgresql-client-15 postgresql-contrib-15

 

 # Astra Linux SE / РЕД ОС / RHEL

 sudo dnf install -y postgresql15-server postgresql15 postgresql15-contrib

 sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

 

 # Postgres Pro (сертифицированная сборка)

 curl -o pgpro-repo.sh https://repo.postgrespro.ru/pgpro-15/keys/pgpro-repo-add.sh

 sudo sh pgpro-repo.sh

 sudo dnf install -y postgrespro-std-15-server

 

 # Запуск и автозапуск

 sudo systemctl enable --now postgresql


8.2. Создание базы данных и пользователя

 sudo -u postgres psql <<SQL

 CREATE USER indora_user WITH PASSWORD '<СЛОЖНЫЙ_ПАРОЛЬ>';

 CREATE DATABASE indora_db OWNER indora_user ENCODING 'UTF8'

    LC_COLLATE 'ru_RU.UTF-8' LC_CTYPE 'ru_RU.UTF-8' TEMPLATE template0;

 GRANT ALL PRIVILEGES ON DATABASE indora_db TO indora_user;

 ALTER ROLE indora_user SET search_path = public;

 SQL


8.3. Настройка postgresql.conf и pg_hba.conf
Подберите параметры под объём оперативной памяти сервера БД (приведены значения для 64 ГБ ОЗУ, 16 vCPU):

 # /etc/postgresql/15/main/postgresql.conf

 listen_addresses     = '127.0.0.1,10.0.20.10'

 max_connections       = 400

 shared_buffers       = 16GB

 effective_cache_size = 48GB

 work_mem             = 32MB

 maintenance_work_mem = 2GB

 wal_level             = replica

 max_wal_senders       = 5

 archive_mode         = on

 archive_command       = 'test ! -f /backup/wal/%f && cp %p /backup/wal/%f'

 log_min_duration_statement = 1000   # медленные запросы > 1 с

 

 # /etc/postgresql/15/main/pg_hba.conf

 # TYPE   DATABASE     USER         ADDRESS           METHOD

 host     indora_db     indora_user   10.0.30.0/24       scram-sha-256

 host     replication   replicator   10.0.30.0/24       scram-sha-256

 hostssl   all           all           0.0.0.0/0         scram-sha-256


8.4. Применение миграционных скриптов
После установки СУБД и создания базы выполните применение схемы из дистрибутива:

 cd /opt/indora/sql

 psql -U indora_user -h 127.0.0.1 -d indora_db -f 01_schema.sql

 psql -U indora_user -h 127.0.0.1 -d indora_db -f 02_seed_dictionaries.sql

 psql -U indora_user -h 127.0.0.1 -d indora_db -f 03_initial_roles.sql


9. Установка СУБД MS SQL Server

9.1. Установка SQL Server 2022
Выполните установку Microsoft SQL Server 2022 с компонентами Database Engine и Full-Text Search в режиме «Mixed Authentication». Создайте экземпляр (instance) MSSQLSERVER или именованный, например INDORA. Выберите collation Cyrillic_General_CI_AS.
Включите автозапуск службы SQL Server (MSSQLSERVER) и SQL Server Agent. Настройте брандмауэр Windows на разрешение порта 1433/TCP для прикладных серверов.

9.2. Создание базы данных и логина

 -- Подключение через sqlcmd или SSMS

 CREATE LOGIN indora_user WITH PASSWORD = '<СЛОЖНЫЙ_ПАРОЛЬ>',

      CHECK_POLICY = ON, CHECK_EXPIRATION = OFF;

 

 CREATE DATABASE indora_db

    COLLATE Cyrillic_General_CI_AS;

 

 USE indora_db;

 CREATE USER indora_user FOR LOGIN indora_user;

 EXEC sp_addrolemember 'db_owner', 'indora_user';

 

 -- Применение миграционных скриптов

 :r D:\indora\sql\01_schema.sql

 :r D:\indora\sql\02_seed_dictionaries.sql


9.3. Параметры производительности
  • Установить max server memory не более 80 % от RAM физического узла;
  • Включить опцию READ_COMMITTED_SNAPSHOT для базы indora_db;
  • Настроить автоматическое статистическое обновление (AUTO_UPDATE_STATISTICS ON);
  • Запланировать ежедневные задания резервного копирования через SQL Server Agent.

10. Установка веб-сервера и обратного прокси

10.1. Установка Nginx

 # Ubuntu / Debian

 sudo apt-get install -y nginx

 

 # Astra Linux SE / РЕД ОС / RHEL

 sudo dnf install -y nginx

 

 # Запуск и автозапуск

 sudo systemctl enable --now nginx

 

 # Проверка статуса

 sudo systemctl status nginx

 sudo nginx -t


10.2. Базовая конфигурация виртуального хоста

 # /etc/nginx/sites-available/indora.conf

 server {

      listen 80;

      server_name indora.company.ru;

      return 301 https://$host$request_uri;

 }

 

 server {

      listen 443 ssl http2;

      server_name indora.company.ru;

 

      ssl_certificate     /etc/ssl/certs/indora.crt;

      ssl_certificate_key /etc/ssl/private/indora.key;

      ssl_protocols TLSv1.2 TLSv1.3;

      ssl_ciphers HIGH:!aNULL:!MD5;

      ssl_prefer_server_ciphers on;

 

      client_max_body_size 200M;

 

      location /static/ { alias /opt/indora/static/; expires 30d; }

      location /api/     { proxy_pass http://127.0.0.1:8080/; }

      location /         { proxy_pass http://127.0.0.1:8080/; }

 

      proxy_set_header Host               $host;

      proxy_set_header X-Real-IP         $remote_addr;

      proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_read_timeout 300;

 }


10.3. Активация конфигурации

 sudo ln -s /etc/nginx/sites-available/indora.conf /etc/nginx/sites-enabled/

 sudo nginx -t

 sudo systemctl reload nginx


11. Получение и проверка дистрибутива

11.1. Способы получения дистрибутива
  • Скачивание из защищённого личного кабинета заказчика на портале ООО «Тэктис»;
  • Получение по электронной почте от менеджера внедрения (для пилотных проектов);
  • Получение на физическом носителе (защищённый USB-токен) — для контуров без выхода во внешнюю сеть.

11.2. Состав дистрибутива

 Файл / каталог

 Назначение

 indora-<version>.tar.gz

 Основной архив дистрибутива (бинарные файлы, статика, конфигурации)

 indora-<version>.tar.gz.sig

 Цифровая подпись дистрибутива

 indora-<version>.sha256

 Контрольная сумма для верификации

 docker-compose.yml

 Шаблон для контейнерного развёртывания

 helm/

 Helm chart для развёртывания в Kubernetes

 sql/

 Скрипты миграции и начальные данные

 license.key

 Ключ активации лицензии (выдаётся индивидуально)

 docs/

 Комплект эксплуатационной документации в формате PDF/DOCX


11.3. Верификация целостности дистрибутива

 # Проверка контрольной суммы

 sha256sum -c indora-2.6.0.sha256

 

 # Проверка цифровой подписи (ключ ООО «Тэктис»)

 gpg --import tactise-pubkey.asc

 gpg --verify indora-2.6.0.tar.gz.sig indora-2.6.0.tar.gz

 

 # Распаковка дистрибутива

 sudo mkdir -p /opt/indora

 sudo tar -xzf indora-2.6.0.tar.gz -C /opt/indora

 sudo chown -R indora:indora /opt/indora


12. Установка ПО ИНДОРА в режиме on-premise

12.1. Раскладка каталогов

 Каталог

 Назначение

 /opt/indora/bin

 Бинарные исполняемые файлы

 /opt/indora/lib

 Библиотеки и модули

 /opt/indora/static

 Статические файлы веб-интерфейса

 /etc/indora

 Конфигурационные файлы

 /var/lib/indora

 Рабочие данные, временные файлы

 /var/log/indora

 Журналы работы приложения

 /var/indora/files

 Файловые вложения пользователей


12.2. Базовый файл конфигурации

 # /etc/indora/indora.conf

 [main]

 instance_id       = company-prod-01

 bind_address     = 127.0.0.1:8080

 workers           = 8

 log_level         = info

 

 [database]

 engine           = postgresql

 host             = 10.0.20.10

 port             = 5432

 name             = indora_db

 user             = indora_user

 password_file     = /etc/indora/secrets/db_password

 pool_size         = 50

 

 [cache]

 redis_url         = redis://127.0.0.1:6379/0

 

 [storage]

 mode             = local               # local | nfs | s3

 local_path       = /var/indora/files

 

 [tls]

 certificate       = /etc/ssl/certs/indora.crt

 private_key       = /etc/ssl/private/indora.key


12.3. Регистрация systemd-сервисов

 # /etc/systemd/system/indora.service

 [Unit]

 Description=INDORA Application Server

 After=network.target postgresql.service

 

 [Service]

 Type=simple

 User=indora

 Group=indora

 ExecStart=/opt/indora/bin/indora-server --config /etc/indora/indora.conf

 Restart=always

 RestartSec=10

 LimitNOFILE=65536

 

 [Install]

 WantedBy=multi-user.target


Активация и запуск:

 sudo systemctl daemon-reload

 sudo systemctl enable --now indora.service

 sudo systemctl status indora.service

 sudo journalctl -u indora -f



13. Развёртывание через Docker Compose

13.1. Установка Docker Engine

 # Astra Linux SE / РЕД ОС / RHEL

 sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

 sudo systemctl enable --now docker

 

 # Ubuntu

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

 echo "deb [signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \

    | sudo tee /etc/apt/sources.list.d/docker.list

 sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

 # Добавление пользователя в группу docker

 sudo usermod -aG docker indora


13.2. Файл docker-compose.yml

 version: '3.8'

 

 services:

    postgres:

      image: postgres:15-alpine

      environment:

        POSTGRES_DB: indora_db

        POSTGRES_USER: indora_user

        POSTGRES_PASSWORD_FILE: /run/secrets/db_password

      secrets: [db_password]

      volumes:

        - pgdata:/var/lib/postgresql/data

      restart: unless-stopped

 

    redis:

      image: redis:7-alpine

      restart: unless-stopped

 

    indora-app:

      image: registry.tactise.ru/indora/app:2.6.0

      depends_on: [postgres, redis]

      environment:

        INDORA_DB_HOST: postgres

        INDORA_REDIS_URL: redis://redis:6379/0

      volumes:

        - ./config/indora.conf:/etc/indora/indora.conf:ro

        - indora-files:/var/indora/files

      restart: unless-stopped

 

    nginx:

      image: nginx:1.25-alpine

      ports:

        - "80:80"

        - "443:443"

      volumes:

        - ./nginx/indora.conf:/etc/nginx/conf.d/default.conf:ro

        - ./tls:/etc/ssl/private:ro

      depends_on: [indora-app]

      restart: unless-stopped

 

 volumes:

    pgdata:

    indora-files:

 

 secrets:

    db_password:

      file: ./secrets/db_password.txt


13.3. Запуск стека

 docker compose pull

 docker compose up -d

 docker compose ps

 docker compose logs -f indora-app


14. Развёртывание в Kubernetes

14.1. Предварительные требования
  • Кластер Kubernetes версии 1.27 и выше с поддержкой LoadBalancer/Ingress;
  • Установленный kubectl 1.27+ и Helm 3.12+;
  • Контейнерный реестр (приватный Harbor, GitLab Container Registry, реестр ООО «Тэктис»);
  • Хранилище класса ReadWriteMany для файловых вложений (NFS, CephFS, CSI-драйверы S3);
  • Класс хранения для PostgreSQL (рекомендуется операторы Zalando, CrunchyData или внешняя СУБД).

14.2. Установка через Helm chart

 # Добавление приватного репозитория

 helm repo add tactise https://charts.tactise.ru --username <user> --password <token>

 helm repo update

 

 # Создание namespace

 kubectl create namespace indora

 

 # Установка

 helm install indora tactise/indora \

    --namespace indora \

    --version 2.6.0 \

    --values values-prod.yaml

 

 # Проверка

 kubectl get pods -n indora

 kubectl get svc -n indora

 kubectl get ingress -n indora


14.3. Пример values-prod.yaml

 replicaCount: 3

 

 image:

    repository: registry.tactise.ru/indora/app

    tag: 2.6.0

 

 database:

    external: true

    host: postgres-primary.indora.svc.cluster.local

    port: 5432

    name: indora_db

    user: indora_user

    existingSecret: indora-db-password

 

 autoscaling:

    enabled: true

    minReplicas: 3

    maxReplicas: 12

    targetCPUUtilizationPercentage: 70

 

 ingress:

    enabled: true

    className: nginx

    hosts:

      - host: indora.company.ru

        paths: [{ path: /, pathType: Prefix }]

    tls:

      - secretName: indora-tls

        hosts: [indora.company.ru]

15. Установка клиентских АРМ

15.1. Доступ через веб-интерфейс
Для конечных пользователей и большинства администраторов установка клиентского ПО не требуется. Достаточно открыть в браузере адрес, выданный заказчиком, например, https://indora.company.ru, и авторизоваться доменной учётной записью либо локальным логином/паролем.

15.2. Установка УКЭП
Для применения усиленной квалифицированной электронной подписи на АРМ должны быть установлены:
  • КриптоПро CSP версии 5.0 R2 и выше либо ViPNet CSP;
  • Сертификаты УКЭП, выданные аккредитованным удостоверяющим центром (Минцифры, ФНС, банковский УЦ);
  • Корневые сертификаты УЦ Минцифры России;
  • Плагин CryptoPro EDSBrowser Plug-in для подписи в веб-интерфейсе.

16. Первичная конфигурация и активация лицензии

16.1. Создание учётной записи суперпользователя

 # Выполняется один раз после первого запуска

 sudo /opt/indora/bin/indora-cli user create \

    --login admin \

    --email admin@company.ru \

    --role superadmin \

    --interactive


16.2. Активация лицензии
Скопируйте файл license.key, полученный от ООО «Тэктис», в каталог /etc/indora и активируйте лицензию командой:

 sudo cp license.key /etc/indora/license.key

 sudo chown indora:indora /etc/indora/license.key

 sudo chmod 600 /etc/indora/license.key

 sudo systemctl restart indora

 

 # Проверка активации

 sudo /opt/indora/bin/indora-cli license info


16.3. Первоначальная настройка организации
  • Загрузить организационную структуру (подразделения, должности) через UI или CSV-импорт;
  • Создать справочники объектов (производственные площадки, цеха, единицы оборудования);
  • Настроить интеграцию с Active Directory (см. «Руководство администратора», раздел 6);
  • Подключить корпоративный SMTP-сервер для отправки уведомлений;
  • Включить и сконфигурировать необходимые функциональные модули.

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

После установки и первичной настройки выполните комплекс smoke-тестов для подтверждения работоспособности системы. Все тесты должны быть выполнены успешно перед передачей системы в эксплуатацию.

 

 Проверяемая операция

 Ожидаемый результат

 1

 Открытие веб-интерфейса по HTTPS

 Страница входа отображается, сертификат валиден

 2

 Авторизация учётной записью superadmin

 Успешный вход, отображение главной страницы

 3

 Создание тестового подразделения

 Запись сохраняется, появляется в списке

 4

 Создание тестового пользователя

 Пользователь активирован, получено письмо приветствия

 5

 Создание тестового наряда-допуска

 Документ оформлен, доступен для просмотра

 6

 Создание тестовой записи в журнале рисков

 Запись сохранена в БД

 7

 Прикрепление файла (фото 2 МБ)

 Файл загружен, доступен для скачивания

 8

 Запрос отчёта KPI «Травматизм»

 Отчёт сформирован за 30 секунд

 9

 Запрос REST API: GET /api/v1/permits?limit=10

 HTTP 200, JSON-ответ с массивом нарядов

 10

 Проверка журнала: /var/log/indora/app.log

 Нет ошибок уровня ERROR/CRITICAL

 11

 Проверка автозапуска (перезагрузка сервера)

 После перезагрузки сервисы запущены автоматически


18. Обновление до новой версии

18.1. Общие принципы обновления
  • Все обновления проводятся в установленное окно технических работ;
  • Перед обновлением выполняется полное резервное копирование (БД, файлы, конфигурации);
  • На тестовом контуре заказчика проводится предварительная установка обновления;
  • После обновления повторяются приёмочные smoke-тесты;
  • В случае выявления критичных дефектов выполняется откат на предыдущую версию.

18.2. Процедура обновления on-premise

 # 1. Бэкап БД и файлов

 sudo -u postgres pg_dump -F c -f /backup/indora_pre_upgrade.dump indora_db

 sudo rsync -a /var/indora/files /backup/indora_files_$(date +%Y%m%d)

 

 # 2. Остановка сервиса

 sudo systemctl stop indora

 

 # 3. Сохранение текущей версии

 sudo mv /opt/indora /opt/indora_old_$(date +%Y%m%d)

 

 # 4. Установка новой версии

 sudo tar -xzf indora-2.7.0.tar.gz -C /opt

 sudo chown -R indora:indora /opt/indora

 

 # 5. Применение миграций

 sudo -u indora /opt/indora/bin/indora-cli migrate up

 

 # 6. Запуск

 sudo systemctl start indora

 sudo systemctl status indora


18.3. Обновление в Kubernetes

 # Обновление через Helm с rolling-стратегией

 helm upgrade indora tactise/indora \

    --namespace indora \

    --version 2.7.0 \

    --values values-prod.yaml

 

 # Контроль развёртывания

 kubectl rollout status deployment/indora-app -n indora

 kubectl get pods -n indora --watch


18.4. Откат на предыдущую версию
При обнаружении критичных проблем возможен откат:

 # On-premise

 sudo systemctl stop indora

 sudo rm -rf /opt/indora

 sudo mv /opt/indora_old_<дата> /opt/indora

 sudo -u postgres pg_restore -d indora_db /backup/indora_pre_upgrade.dump

 sudo systemctl start indora

 

 # Kubernetes

 helm rollback indora <revision> -n indora


19. Удаление (деинсталляция)

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

19.1. Деинсталляция в варианте on-premise

 # 1. Остановка и отключение автозапуска сервисов

 sudo systemctl stop indora && sudo systemctl disable indora

 sudo rm /etc/systemd/system/indora.service

 sudo systemctl daemon-reload

 

 # 2. Удаление файлов приложения

 sudo rm -rf /opt/indora

 sudo rm -rf /etc/indora

 sudo rm -rf /var/lib/indora

 sudo rm -rf /var/log/indora

 

 # 3. (Опционально) удаление пользователя

 sudo userdel -r indora

 

 # 4. (Опционально) удаление базы данных

 sudo -u postgres dropdb indora_db

 sudo -u postgres dropuser indora_user


19.2. Деинсталляция в Docker Compose

 docker compose down -v         # с удалением томов (полная очистка)

 docker image rm registry.tactise.ru/indora/app:2.6.0


19.3. Деинсталляция в Kubernetes

 helm uninstall indora -n indora

 kubectl delete namespace indora

 # Тома PVC удаляются согласно политике reclaim класса хранения


20. Типовые ошибки и их устранение

 Симптом

 Возможная причина

 Рекомендация

 Сервис не запускается, в журнале «could not bind to address»

 Порт 8080 занят другим процессом

 ss -tlnp | grep 8080; изменить bind_address в indora.conf

 Ошибка подключения к БД «password authentication failed»

 Неверный пароль или метод аутентификации

 Проверить /etc/indora/secrets/db_password и pg_hba.conf

 HTTPS не работает, в браузере «net::ERR_CERT_AUTHORITY_INVALID»

 Неполная цепочка сертификатов

 Объединить crt и intermediate в один файл fullchain.pem

 Долгие запросы > 30 с

 Неоптимальные настройки PostgreSQL

 Увеличить shared_buffers, проверить наличие индексов

 Ошибка миграции БД

 Несовместимая версия PostgreSQL

 Обновить до минимально поддерживаемой версии 13

 Не загружаются вложения

 Недостаток прав на /var/indora/files

 chown -R indora:indora /var/indora/files

 Падение сервиса по OOM

 Недостаточный объём ОЗУ

 Снизить workers или нарастить RAM

 Не работает SSO

 Ошибка метаданных IdP / просроченный сертификат

 Перезагрузить метаданные, проверить сертификаты SAML

 Тайм-аут Nginx при больших вложениях

 Низкое значение client_max_body_size / proxy_read_timeout

 Увеличить параметры до 200M / 300s

 Контейнер не стартует в K8s (CrashLoopBackOff)

 Неверные значения в Secret/ConfigMap

 kubectl describe pod / logs; проверить переменные окружения


21. Чек-лист установки

Используйте следующий перечень для контроля прохождения всех этапов установки.
  1. Утверждён план развёртывания, согласована схема сети;
  2. Подготовлены серверы (CPU, RAM, дисковая подсистема согласно требованиям);
  3. Установлена и обновлена операционная система;
  4. Настроены имя узла, часовой пояс, синхронизация времени;
  5. Настроен межсетевой экран, открыты только необходимые порты;
  6. Получен и проверен дистрибутив (sha256 и GPG-подпись);
  7. Установлена и настроена СУБД (PostgreSQL или MS SQL);
  8. Применены миграционные SQL-скрипты;
  9. Установлен и настроен веб-сервер (Nginx/Apache);
  10. Установлен сертификат TLS, проверена цепочка;
  11. Установлено ПО ИНДОРА, заполнены конфигурационные файлы;
  12. Зарегистрирован systemd-сервис, включён автозапуск;
  13. Создан суперпользователь, активирована лицензия;
  14. Загружена оргструктура, справочники;
  15. Настроена интеграция с AD/LDAP и SMTP;
  16. Включён мониторинг и сбор журналов;
  17. Настроено регулярное резервное копирование;
  18. Выполнены все приёмочные smoke-тесты (раздел 17);
  19. Подписан акт ввода в опытную эксплуатацию;
  20. Сохранена документация по фактической конфигурации (As-Built).

22. Контактная информация

 Параметр

 Значение

 Правообладатель

 Общество с ограниченной ответственностью «Тэктис» (ООО «Тэктис»)

 Юридический и фактический адрес

 123112, г. Москва, вн.тер.г. муниципальный округ Пресненский, наб. Пресненская, д. 12, помещ. 3/44

 Телефон

 +7 (499) 704-53-56

 Адрес электронной почты

 info@tactise.com

 Поддержка по установке

 support@tactise.com

 Веб-сайт

 https://tactise.com

 Реквизиты в реестре российского ПО

 Приказ Минкомсвязи России от 19.09.2019 № 518, заявление № 128253

 Класс продукта

 ИСОБР 2.0 — Информационные системы обеспечения безопасности и рисков, 2-е поколение

 Резидент

 Инновационного центра «Сколково» (с 2024 года)


23. Перечень нормативных документов

  • Федеральный закон от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации»;
  • Федеральный закон от 27.07.2006 № 152-ФЗ «О персональных данных»;
  • Федеральный закон от 26.07.2017 № 187-ФЗ «О безопасности критической информационной инфраструктуры РФ»;
  • Постановление Правительства РФ от 16.11.2015 № 1236 «Об установлении запрета на допуск ПО иностранного происхождения»;
  • Приказ Минкомсвязи России от 19.09.2019 № 518 «О ведении Единого реестра российских программ»;
  • Приказы ФСТЭК России от 11.02.2013 № 17 и от 18.02.2013 № 21 — защита информации в ГИС и персональных данных;
  • ГОСТ Р 12.0.007-2009 «Системы управления охраной труда. Общие требования»;
  • ГОСТ 19.101-77, 19.503-79, 19.504-79, 19.505-79 — комплект ЕСПД;
  • ГОСТ 34.201-89, 34.601-90, 34.602-89 — комплект 34-й серии по АС;
  • РД 50-34.698-90 «Автоматизированные системы. Требования к содержанию документов»;
  • ГОСТ Р ИСО/МЭК 12207-2010 «Процессы жизненного цикла программных средств»;
  • ГОСТ Р ИСО/МЭК 27001-2021 «Системы менеджмента информационной безопасности»;
  • ГОСТ Р 50922-2006 «Защита информации. Основные термины и определения».

24. Перечень сокращений и обозначений

 Сокращение

 Расшифровка

 ПО

 Программное обеспечение

 АРМ

 Автоматизированное рабочее место

 ИБ

 Информационная безопасность

 ОС

 Операционная система

 СУБД

 Система управления базами данных

 СУБ

 Система управления безопасностью

 ОТиПБ

 Охрана труда и промышленная безопасность

 АСУ ТП

 Автоматизированная система управления технологическим процессом

 СПО

 Свободное программное обеспечение

 REST

 Representational State Transfer

 API

 Application Programming Interface

 JSON

 JavaScript Object Notation

 SSO

 Single Sign-On

 SAML

 Security Assertion Markup Language

 OIDC

 OpenID Connect

 AD

 Active Directory

 LDAP

 Lightweight Directory Access Protocol

 MFA

 Multi-Factor Authentication

 УКЭП

 Усиленная квалифицированная электронная подпись

 LOTO

 Lock-Out / Tag-Out (изоляция источников энергии)

 MOC

 Management of Change

 CMS

 Competency Management System

 HA

 High Availability (высокая доступность)

 HPA

 Horizontal Pod Autoscaler (в Kubernetes)

 RPO

 Recovery Point Objective

 RTO

 Recovery Time Objective

 NFS / TLS / DMZ

 Network File System / Transport Layer Security / Demilitarized Zone

 ФСТЭК

 Федеральная служба по техническому и экспортному контролю

 КИИ

 Критическая информационная инфраструктура

 АС

 Автоматизированная система

 ГОСТ

 Государственный стандарт

 РД

 Руководящий документ

 ИСОБР

 Информационная система обеспечения безопасности и рисков