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

Production-Ready установка

Около 4 мин

Production-Ready установка

Для полноценной промышленной эксплуатации необходимо настроить дополнительные компоненты и обеспечить высокий уровень безопасности, производительности и отказоустойчивости.

Обязательные компоненты для продакшена

Минимальная установка из Быстрого старта не подходит для работы с реальными пользователями. Обязательно настройте все компоненты из этого документа.

Чек-лист production-ready установки

Обязательные компоненты

Дополнительные компоненты


Особенности установки в k8s

В некоторых ситуациях, например при явном требовании 1 процесса в контейнере (PID 1), может потребоваться разделить контейнеры по их ролям. Передайте ENV переменную CONTAINER_ROLE (возможные значения FRONT, BACK, FULLSTACK).

  • FRONT: запустится nginx со статикой.
  • BACK: запустится java как API-сервер.
  • FULLSTACK: запустится supervisord, который запустит nginx и java

Настройка балансировщика и SSL

Рекомендуемое решение: Nginx

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

Основные задачи балансировщика:

  • SSL терминация - расшифровка HTTPS трафика
  • Отказоустойчивость - переключение между нодами
  • Масштабирование - распределение нагрузки
  • Кэширование - статических ресурсов

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

Конфигурация для высокой доступности:


upstream stormbpmn {
    server 10.0.0.3:8081 weight=5 max_conns=500;
    server 10.0.0.4:8081 weight=5 max_conns=500;
}

server {
    listen 443 ssl http2;
    server_name stormbpmn.company.com;

    ssl_certificate /etc/ssl/certs/stormbpmn.crt;
    ssl_certificate_key /etc/ssl/private/stormbpmn.key;

    # Максимальный размер тела запроса — 50 MB
    client_max_body_size 50M;

    # Максимальный размер заголовков (и буфера для заголовков)
    large_client_header_buffers 8 32k;

    location / {
        proxy_pass http://stormbpmn;
        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;
    }
}




Обратите внимание на размер тела и размер заголовков.

Конфигурация выше является примерной и может потребовать уточнения в конкретной инфраструктуре тем, кто понимает как конкретная инфраструктура устроена.

Дополнительная информация

Подробное руководство по настройке SSL в Nginx: Securing HTTP Traffic to Upstream Serversopen in new window.


S3-хранилище для файлов

Что хранится в S3:

  • Изображения бизнес-процессов - схемы и диаграммы
  • Аватары пользователей - профильные изображения
  • Шаблоны документов - для генерации отчетов
  • Вложения - файлы, прикрепленные к процессам

Рекомендуемое решение: MinIO

Установка MinIO

# Запуск MinIO в Docker
docker run -d \
  -p 9000:9000 \
  -p 9001:9001 \
  --name minio \
  -v /mnt/data:/data \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=password123" \
  quay.io/minio/minio server /data --console-address ":9001"

Настройка переменных окружения

ПеременнаяОписаниеПример значения
MINIO_ENDPOINTURL хранилищаhttp://192.168.0.4:9000
MINIO_ACCESSKEYКлюч доступаstormbpmn-user
MINIO_SECRETKEYСекретный ключsecure-password-123
MINIO_DEFAULTBUCKETБакет по умолчаниюstorm-uploads

Проверка работоспособности

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

Документация MinIO

Полное руководство по установке: MinIO Documentationopen in new window


PlantUML сервер (опционально)

Обеспечивает генерацию UML-диаграмм в интерфейсе приложения.

Установка

# Запуск PlantUML сервера
docker run -d \
  -p 8090:8080 \
  --name plantuml \
  plantuml/plantuml-server:jetty

Настройка

ПеременнаяОписаниеПример значения
PLANTUML_SERVERURL сервера PlantUMLhttp://192.168.0.5:8090/

Сервис конвертации документов

Обеспечивает конвертацию HTML в PDF и другие форматы документов.

Установка Gotenberg

# Запуск Gotenberg
docker run -d \
  -p 3001:3000 \
  --name gotenberg \
  gotenberg/gotenberg:8

Настройка

ПеременнаяОписаниеПример значения
GOTENBERG_URLURL сервиса конвертацииhttp://192.168.0.5:3001

Дополнительная настройка для сложных сетевых конфигураций

Если используются балансировщики или сложная SSL конфигурация, может потребоваться указать прямой адрес контейнера:

В административном интерфейсе:

  • gotenbergOverrideBaseUrl - прямой адрес: http://corp.storm.internal

Настройка почтовых уведомлений

Выбор провайдера почты

ВариантКогда использоватьСложность настройки
ListMonkНужны красивые письма, есть ресурсы на их создание⭐⭐⭐
Простой SMTPНужна базовая функциональность

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

ПараметрОписаниеПример
baseUrlБазовый URL для ссылок в письмахhttps://stormbpmn.company.com

Вариант 1: ListMonk (красивые письма)

Установка ListMonk

# Скачивание конфигурации
 curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml

# Запуск (при необходимости измените порты в docker-compose.yml)
docker compose up -d

Настройка ListMonk

  1. Откройте панель администратора: http://localhost:9000

  2. Создайте супер-пользователя и войдите в систему

  3. Настройте общие параметры (Settings → General):

    • Укажите email по умолчанию для отправки

    Настройка email по умолчанию

  4. Настройте SMTP (Settings → SMTP):

    • Указать параметры корпоративного SMTP сервера
    • Протестировать соединение

    Настройка SMTP

  5. Создайте API пользователя:

    • Users → New → Тип: API
    • Роль: Super Admin
    • Сохраните API токен

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

Переменные окружения для StormBPMN

EMAIL_PROVIDER=listmonk
LISTMONK_BASE_URL=http://localhost:9000/api
LISTMONK_USERNAME=stormbpmn  # имя API пользователя
LISTMONK_PASSWORD=api-token-here  # API токен

Шаблоны писем

Тип уведомленияНастройка в админкеВозможные подстановки
Новый комментарийcommentEmailTemplateId{comment_author}, {diagram_name}, {diagram_url}, {html_text}
Запрос на согласованиеapprovalTemplateId{invite_author}, {diagram_name}, {diagram_url}
Восстановление пароляrestorePasswordTemplateId{restoreCode}
Согласование завершеноapprovalCompletedTemplateId{diagram_name}, {diagram_url}
Активация пользователяuserActivationTemplateId{activation_token}
Приглашение к диаграммеsecureUpdateTemplateId{invite_author}, {diagram_name}, {diagram_url}
Приглашение + регистрацияinviteDiagramAndRegisterTemplateId{invite_author}, {diagram_name}, {diagram_url}, {register_url}
Приглашение в командуteamInviteTemplateId{invite_author}, {team_name}
Приглашение в команду + регистрацияteamInviteAndRegisterTemplateId{invite_author}, {team_name}, {register_url}

Вариант 2: Простой SMTP

Настройки в административном интерфейсе

ПараметрОписаниеПример
simpleEmailEnabledВключить простой SMTPtrue
simpleSmtpHostSMTP хостsmtp.company.com
simpleSmtpPortSMTP порт587
simpleSmtpUsernameSMTP пользовательstormbpmn@company.com
simpleSmtpPasswordSMTP парольsecure-password
simpleSmtpFromEmail отправителяstormbpmn@company.com

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

EMAIL_PROVIDER=SMTP

Требуется перезагрузка

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

Тестирование почтовых уведомлений

Для проверки отправки писем оставьте комментарий с содержимым:

@your.email@company.com test

Мониторинг и метрики

StormBPMN предоставляет метрики в формате Prometheus для мониторинга состояния системы.

Установка Prometheus + Grafana

# docker-compose.yml для мониторинга
version: '3.8'
services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123

Подробная инструкция

Детальное руководство по настройке мониторинга: Мониторинг и поддержка


Безопасность и хардендинг

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

  1. SSL/TLS - вся коммуникация только по HTTPS
  2. Сильные пароли - для всех служебных аккаунтов
  3. Сетевая изоляция - база данных в приватной сети
  4. Регулярные обновления - ОС и контейнеров
  5. Аудит доступа - логирование всех действий

SIEM-логирование

StormBPMN поддерживает отправку событий безопасности в SIEM-системы для анализа и обнаружения угроз.

Подробная инструкция

Полное руководство по безопасности: Информационная безопасность


Резервное копирование

Что необходимо резервировать

  • База данных PostgreSQL - все данные приложения
  • S3-хранилище - файлы и документы
  • Конфигурационные файлы - настройки и переменные окружения

Рекомендуемое расписание

  • Ежедневно - полный бэкап базы данных
  • Еженедельно - полный бэкап S3-хранилища
  • Ежемесячно - архивирование старых бэкапов

Настройка бизнес-параметров

Основные параметры в административном интерфейсе (/app/admin)

ПараметрОписаниеРекомендация
enableCommonAssetsОбщие элементы архитектуры для всех командВключить для больших организаций
enableCommonRolesОбщие роли для всех командВключить для унификации
enableCommonUsersОбщая оргструктураВключить при централизованном управлении
allDiagramsAnonAccessАнонимный доступ ко всем диаграммамОтключить для безопасности
enableAnonSearchPageПоиск для анонимных пользователейПо требованию бизнеса
autoEnableEnterpriseLicenseАвтоматическая выдача лицензийВключить для упрощения
autoJoinTeamIdАвтоматическое добавление в командуУказать ID основной команды
disableTeamPopUpОтключить предложение создать командуВключить при centralised управлении
disableTeamCreationЗапретить создание командВключить при строгом контроле

Обязательные настройки

ПараметрОписаниеПример
baseUrlБазовый URL для ссылок в письмахhttps://stormbpmn.company.com

Настройка видимости

Параметр "Настройка видимости" позволяет передавать значения на фронтенд. НЕ включайте для паролей и конфиденциальных данных!


Поддержка и помощь

Нужна помощь?

Если что-то не получается, напишите на help@stormbpmn.com или обратитесь к вашему менеджеру. Мы с радостью поможем с настройкой!

Когда обращаться за поддержкой:

  • Проблемы с интеграцией корпоративных систем
  • Вопросы по настройке безопасности
  • Проблемы с производительностью
  • Планирование масштабирования
  • Настройка сложных почтовых сценариев

Что подготовить перед обращением:

  • Логи приложения и инфраструктуры
  • Описание конфигурации системы
  • Скриншоты ошибок
  • Версии используемых компонентов