Модуль | Назначение |
Наряды-допуски | Электронное оформление, согласование и закрытие нарядов-допусков на опасные работы |
Управление рисками | Идентификация опасностей, оценка рисков, контроль барьеров безопасности |
Электронный аудит | Проведение поведенческих аудитов и инспекций по чек-листам |
LOTO | Изоляция источников энергии, блокировки и маркировка (Lock-Out / Tag-Out) |
Компетенции (CMS) | Управление обучением, аттестацией, допусками персонала |
Инциденты | Регистрация и расследование происшествий и near-miss событий |
MOC | Управление изменениями (Management of Change) с оценкой влияния на безопасность |
Журналы безопасности | Электронные журналы инструктажей, нарядов, происшествий, СИЗ |
Интеграционная шина | REST API, вебхуки, готовые коннекторы к 1С, SAP, АСУ ТП |
Аналитика и отчёты | KPI-панели, отчётность по травматизму (Н-1, формы Росстата) |
Уровень | Компоненты | Роль |
Презентационный | Веб-интерфейс (SPA на TypeScript), мобильное приложение, обратный прокси (Nginx/Apache) | Отображение данных и взаимодействие с пользователем |
Прикладной | Сервер приложений (C++/Perl), микросервисы интеграций, очередь задач (Redis/RabbitMQ) | Бизнес-логика, валидация, расчёты, интеграции |
Хранения данных | СУБД PostgreSQL 13+ или MS SQL Server 2019+, файловое хранилище (локальное / NFS / S3-совместимое) | Хранение бизнес-данных и вложений |
Конфигурация | 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+ узла) |
Конфигурация | 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-кластере |
Параметр | Минимальное значение |
Процессор | 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+ |
Семейство | Версия | Статус поддержки |
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 |
СУБД | Версии | Особенности применения |
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 |
Браузер | Минимальная версия |
Яндекс Браузер | 23.0 и выше |
Google Chrome / Chromium | 120 и выше |
Mozilla Firefox | 115 ESR и выше |
Microsoft Edge | 120 и выше |
Safari | 16 и выше (только клиент) |
Порт | Протокол | Назначение | Направление |
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 эндпоинты | внутренний |
# 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 # опционально, для удобства |
# 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 |
# Проверка статуса 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 |
# 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 |
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 |
# /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 |
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 |
-- Подключение через 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 |
# 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 |
# /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; } |
sudo ln -s /etc/nginx/sites-available/indora.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx |
Файл / каталог | Назначение |
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 |
# Проверка контрольной суммы 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 |
Каталог | Назначение |
/opt/indora/bin | Бинарные исполняемые файлы |
/opt/indora/lib | Библиотеки и модули |
/opt/indora/static | Статические файлы веб-интерфейса |
/etc/indora | Конфигурационные файлы |
/var/lib/indora | Рабочие данные, временные файлы |
/var/log/indora | Журналы работы приложения |
/var/indora/files | Файловые вложения пользователей |
# /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 |
# /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 |
# 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 |
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 |
docker compose pull docker compose up -d docker compose ps docker compose logs -f indora-app |
# Добавление приватного репозитория 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 |
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] |
# Выполняется один раз после первого запуска sudo /opt/indora/bin/indora-cli user create \ --login admin \ --email admin@company.ru \ --role superadmin \ --interactive |
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 |
№ | Проверяемая операция | Ожидаемый результат |
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 | Проверка автозапуска (перезагрузка сервера) | После перезагрузки сервисы запущены автоматически |
# 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 |
# Обновление через 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 |
# 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 |
# 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 |
docker compose down -v # с удалением томов (полная очистка) docker image rm registry.tactise.ru/indora/app:2.6.0 |
helm uninstall indora -n indora kubectl delete namespace indora # Тома PVC удаляются согласно политике reclaim класса хранения |
Симптом | Возможная причина | Рекомендация |
Сервис не запускается, в журнале «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; проверить переменные окружения |
Параметр | Значение |
Правообладатель | Общество с ограниченной ответственностью «Тэктис» (ООО «Тэктис») |
Юридический и фактический адрес | 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 года) |
Сокращение | Расшифровка |
ПО | Программное обеспечение |
АРМ | Автоматизированное рабочее место |
ИБ | Информационная безопасность |
ОС | Операционная система |
СУБД | Система управления базами данных |
СУБ | Система управления безопасностью |
ОТиПБ | Охрана труда и промышленная безопасность |
АСУ ТП | Автоматизированная система управления технологическим процессом |
СПО | Свободное программное обеспечение |
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 |
ФСТЭК | Федеральная служба по техническому и экспортному контролю |
КИИ | Критическая информационная инфраструктура |
АС | Автоматизированная система |
ГОСТ | Государственный стандарт |
РД | Руководящий документ |
ИСОБР | Информационная система обеспечения безопасности и рисков |