Конфигурация системы
Конфигурация системы
StormBPMN использует двухуровневую систему настроек, которая обеспечивает гибкость конфигурации для различных сценариев развертывания.
Два уровня настроек
Уровень 1: Переменные окружения (ENV) - базовые настройки инфраструктуры Уровень 2: Административная панель - бизнес-логика и функциональность
Уровень 1: Переменные окружения (ENV)
Переменные окружения настраиваются до запуска контейнера и определяют базовую инфраструктуру системы. Эти параметры требуют перезагрузки приложения для применения изменений.
| Переменная | Описание | Пример значения | Обязательно |
|---|---|---|---|
| JDBC_URL | Строка подключения к PostgreSQL | jdbc:postgresql://192.168.0.6:5432/storm | ✅ |
| JDBC_USERNAME | Имя пользователя базы данных | stormuser | ✅ |
| JDBC_PASSWORD | Пароль пользователя | secure_password_123 | ✅ |
| JAVA_OPTS | Настройки памяти для JVM | "-Xmx8g" | ✅ |
| SPRING_PROFILES_ACTIVE | Профиль Spring Boot | prod | ✅ |
| JWTSECRET | Соль для шифрования паролей | Не менее 64 случайных символов | ✅ |
| LICENSE_KEY_V2 | Лицензионный ключ Enterprise v2 | Получите по полному коду активации инсталляции — где взять код | При переходе на v2; для v1 не требуется |
| LICENSE_KEY | Устаревший лицензионный ключ Enterprise v1 | Существующее значение | Временно поддерживается |
| S3_ENDPOINT | URL S3-совместимого хранилища | http://192.168.0.4:9000 | Файлы |
| S3_ACCESS_KEY | Ключ доступа к S3 | stormbpmn-s3-user | Файлы |
| S3_SECRET_KEY | Секретный ключ S3 | stormbpmn-s3-password | Файлы |
| S3_REGION | Регион S3 (если имеется) | ru-3 | Файлы |
| S3_BUCKET_UPLOADS | Бакет по умолчанию | storm-uploads | Файлы |
| S3_BUCKET_USERS | Бакет для пользователей | storm-users | Файлы |
| S3_BUCKET_IMPORTS | Бакет для импортов | storm-imports | Файлы |
| S3_VIRTUAL_HOST | Тип адресации vHosted | false | Файлы |
| S3_SINGLE_USERS_BUCKET | Режим единого бакета для пользователей | true | Файлы |
| S3_EXTERNAL_ENDPOINT | Адрес S3 для ссылок, которые открывает браузер (если отличается от S3_ENDPOINT) | https://s3.company.com | Файлы (необязательно) |
| PLANTUML_SERVER | URL сервера PlantUML | http://192.168.0.5:8090/ | Опционально |
| GOTENBERG_URL | URL сервиса Gotenberg. Если не задан, действует публичный демо-сервис https://demo.gotenberg.dev — в production задайте свой | http://192.168.0.5:3001 | |
| GOTENBERG_WAIT_FOR_EXPRESSION | Выражение, которого Gotenberg ждёт на странице перед печатью в PDF (менять не нужно) | window.overlayReady != undefined && window.overlayReady | PDF (необязательно) |
| EMAIL_PROVIDER | Тип почтового провайдера | listmonk или smtp | ✅ |
| LISTMONK_BASE_URL | URL API ListMonk | http://localhost:9000/api | ✅ |
| LISTMONK_USERNAME | Имя API пользователя | stormbpmn | ✅ |
| LISTMONK_PASSWORD | API токен | api-token-here | ✅ |
| REDIS_ENABLED | Включение Redis (для совместного редактирования) | true | Коллаборация |
| REDIS_HOST | Хост Redis | 192.168.0.7 | Коллаборация |
| REDIS_PORT | Порт Redis | 6379 | Коллаборация |
| REDIS_PASSWORD | Пароль Redis | your-password | Коллаборация |
| REDIS_DATABASE | Номер базы данных Redis | 0 | Коллаборация |
| REDIS_TIMEOUT | Таймаут подключения к Redis | 1000ms | Коллаборация |
| AUDIT_ENABLED | Включение аудита запросов | true | Безопасность |
| AUDIT_CHANNEL | Канал аудит-логов | syslog | Безопасность |
| SYSLOG_SERVERS | Список syslog серверов | localhost:514,192.168.78.53:601 | Безопасность |
| SYSLOG_SOURCE | Название приложения в логах | stormbpmn | Безопасность |
Важные замечания
- PostgreSQL схема: Для подключения к определенной схеме используйте:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema - Расширения PostgreSQL: база должна быть в кодировке UTF8 и иметь расширения pgvector (
vector), pg_trgm, pgcrypto, uuid-ossp, hstore.pg_trgmсоздаётся вручную, остальные — миграциями при первом запуске. Стандартныйpostgres:17не содержит pgvector — используйте образpgvector/pgvector:pg17. Подробнее: «Требования к PostgreSQL». - S3-хранилище: Без S3 ограничены возможности: нет миниатюр диаграмм, аватаров пользователей и работы с документами
- EMAIL_PROVIDER: Для ListMonk укажите
listmonk, для простого SMTP —smtp - SMTP настройки: Хост, порт, учётные данные и отправитель задаются только переменными окружения
SMTP_*— см. «Простой SMTP»
Легенда обязательности
| Символ | Значение |
|---|---|
| ✅ | Обязательно - система не запустится без этих параметров |
| Файлы | Для файлов - нужно для работы с документами и изображениями |
| Опционально | Опционально - для дополнительной функциональности |
| Для PDF - требуется для генерации документов | |
| Коллаборация | Совместное редактирование - Redis для multi-instance, не требуется при одном экземпляре |
| Безопасность | Для безопасности - нужно для соответствия требованиям ИБ |
| SMARTCAPTCHA_SECRET | Секретный ключ Yandex SmartCaptcha для защиты форм входа и регистрации |
Уровень 2: Административная панель
Настройки в административной панели управляют бизнес-логикой приложения и могут изменяться без перезагрузки системы.
Доступ к админке
Административная панель доступна по адресу: /app/admin Требуются права администратора команды.
Общие настройки системы
Базовые параметры
| Параметр | Описание | Пример значения | Обязательно |
|---|---|---|---|
| baseUrl | Базовый URL для ссылок в письмах | https://stormbpmn.company.com | ✅ |
Настройки команд и пользователей
| Параметр | Описание | Рекомендация |
|---|---|---|
| enableCommonAssets | Общие элементы архитектуры для всех команд | ✅ Включить для больших организаций |
| enableCommonRoles | Общие роли для всех команд | ✅ Включить для унификации |
| enableCommonUsers | Общая организационная структура | ✅ Включить при централизованном управлении |
| autoJoinTeamId | ID команды для автоматического добавления новых пользователей | Укажите ID основной команды |
| disableTeamPopUp | Отключить предложение создать команду | ✅ Включить при централизованном управлении |
| disableTeamCreation | Запретить создание команд | ✅ Включить при строгом контроле |
Публичный доступ
| Параметр | Описание | Рекомендация |
|---|---|---|
| allDiagramsAnonAccess | Анонимный доступ ко всем диаграммам | ❌ Отключить для безопасности |
| enableAnonSearchPage | Поиск для анонимных пользователей | По требованию бизнеса |
Экран входа и регистрация
| Параметр | Описание | Рекомендация |
|---|---|---|
| showRegistraton | Отображать базовую регистрацию. При выключении скрываются ссылка «Создать сейчас» на экране входа, форма регистрации и кнопка регистрации на странице лицензии (с версии 6.6.6668) | ❌ Отключить, если пользователи заводятся только администратором/через SSO |
Ключ настройки — именно `showRegistraton`
В ключе исторически пропущена буква «i» (не showRegistration). Ищите настройку в админке по названию «Отображать базовую регистрацию» (группа «Безопасность»).
Лицензирование
| Параметр | Описание | Рекомендация |
|---|---|---|
| autoEnableEnterpriseLicense | Автоматическая выдача лицензий | ✅ Включить для упрощения |
| createPendingEnterpriseUsers | Создавать неактивную учётную запись при попытке входа, если авто-выдача лицензий отключена. Учётная запись появляется в «Управлении пользователями» со статусом «Ожидает активации» и не потребляет лицензию, пока администратор её не активирует. Подробнее: Учётные записи «Ожидает активации» | Включить, если лицензии выдаются по заявкам через службу поддержки |
| licensePageHtml | Собственный HTML-блок на странице статуса лицензии /license-active (с версии 6.6.6668). Подробнее: Кастомизация страницы лицензии | По требованию бизнеса |
Брендинг и страница входа
Название и логотип компании, приветствие, фирменный цвет, ссылки поддержки и способы входа удобнее настраивать на отдельной вкладке «Брендинг и страница входа» (Администрирование). Все эти настройки публичные: их читает страница входа до авторизации. Подробности и список ключей (brandCompanyName, brandWelcomeTitle, brandLogo, brandLogoDark, brandPrimaryColor, brandColorOverridesTeams, supportMode, kbMode и другие): «Брендинг и страница входа».
Сценарий «выдача лицензий по заявкам» (СТП)
Если лицензии выдаются по согласованным заявкам, выключите autoEnableEnterpriseLicense и включите createPendingEnterpriseUsers:
- Пользователь впервые входит через SSO/LDAP (или регистрируется) — учётная запись создаётся неактивной, лицензия не расходуется. Пользователь видит сообщение «учетная запись создана, но лицензия не выдана — обратитесь к администратору сервера».
- Администратор в «Управлении пользователями» видит такие учётные записи со статусом «Ожидает активации» и активирует нужную в один клик. При нехватке свободных лицензий активация завершится понятной ошибкой.
- После активации пользователь входит без ограничений, учётная запись начинает потреблять лицензию.
При выключенных обеих настройках вход неизвестному пользователю запрещён и учётная запись не создаётся (прежнее поведение).
Привязка ключа v2 к инсталляции
Лицензионный ключ LICENSE_KEY_V2 привязан к конкретной инсталляции. Если ключ не подходит, система не запустится и на экране входа будет отображаться одно из следующих сообщений:
- «Лицензионный ключ не задан или не читается» — переменная
LICENSE_KEY_V2не задана или содержит некорректные данные. - «Лицензионный ключ выдан без привязки к инсталляции» — ключ выпущен до появления механизма привязки и больше не действует. Получите новый ключ.
- «Лицензионный ключ не подходит этой инсталляции» — ключ выпущен для другой инсталляции. Получите новый ключ.
- «Не удалось проверить привязку лицензии» — техническая ошибка при проверке. Нажмите кнопку «Повторить».
Приоритет: если задан LICENSE_KEY_V2, он используется вместо устаревшего LICENSE_KEY.
Настройки простого SMTP
Только переменные окружения
Простой SMTP настраивается переменными окружения контейнера backend (EMAIL_PROVIDER=smtp и SMTP_*) — см. «Простой SMTP». Раздела SMTP в административной панели больше нет. Если раньше хост, порт или учётные данные были заданы там, перенесите их в переменные окружения до обновления — иначе письма перестанут отправляться. Изменения применяются после перезапуска контейнера.
Настройки шаблонов ListMonk
Используйте в шаблоне выражение {{ .Tx.Data.storm_placeholder }}, где storm_placeholder - это название подстановки из таблицы.
Пример
Выражение {{ .Tx.Data.diagram_name }} отобразит в письме название диаграммы.
| Параметр | Тип уведомления | Подстановки |
|---|---|---|
| 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 |
Дополнительные настройки
Для сложных сетевых конфигураций
| Параметр | Описание | Пример значения |
|---|---|---|
| gotenbergOverrideBaseUrl | Прямой адрес для обхода балансировщиков | http://corp.storm.internal |
Порядок конфигурации
1. Настройка ENV переменных
Основные параметры:
JDBC_URL=jdbc:postgresql://db:5432/stormbpmn JDBC_USERNAME=stormbpmn_user JDBC_PASSWORD=secure_password JAVA_OPTS="-Xmx8g" SPRING_PROFILES_ACTIVE=prod JWTSECRET=your-secret-key-here LICENSE_KEY_V2=your-license-v2Существующие инсталляции могут временно продолжать использовать
LICENSE_KEYбез немедленной смены конфигурации. Лицензии v1 устарели и имеют известное ограничение безопасности, поэтому для новых инсталляций и плановой миграции используйтеLICENSE_KEY_V2.Если задан непустой
LICENSE_KEY_V2, приложение использует только его. Неверный v2 не приводит к возврату наLICENSE_KEY: исправьте либо удалите или очистите v2 и перезапустите все экземпляры. При неверном непустом v2 бэкенд может запуститься в заблокированном лицензионном режиме, сохраняя вход существующему владельцу для восстановления через/admin-onboarding. При пустом v2 действует legacy-путь: отсутствие обоих ключей не гарантирует блокировку пользователей. Для первого запуска и проверки модулей следуйте порядку активации.Дополнительные сервисы (по необходимости):
# S3-хранилище MINIO_ENDPOINT=http://minio:9000 MINIO_ACCESSKEY=stormbpmn-user MINIO_SECRETKEY=secure-password # Почта EMAIL_PROVIDER=listmonk LISTMONK_BASE_URL=http://listmonk:9000/api LISTMONK_USERNAME=stormbpmn LISTMONK_PASSWORD=api-token # Redis (для совместного редактирования, обязателен при multi-instance) REDIS_ENABLED=true REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD=your-passwordПерезапустите контейнер для применения изменений
2. Настройка через админку
- Войдите в административную панель:
/app/admin - Настройте базовые параметры:
baseUrl- обязательно для корректных ссылок- Политики команд и пользователей
- Настройте интеграции:
- Шаблоны писем (для ListMonk)
- SMTP параметры (для простой почты)
- Сохраните изменения - применяются мгновенно
Проверка конфигурации
Проверочный список
Распространенные проблемы
| Проблема | Причина | Решение |
|---|---|---|
| Приложение не запускается | Неверные JDBC параметры | Проверьте подключение к БД |
| Нет миниатюр диаграмм | Неверные MINIO параметры | Проверьте доступность S3 |
| Не приходят письма | Неверные почтовые настройки | Проверьте EMAIL_PROVIDER и параметры |
| Ошибки лицензии | Нет подходящего ключа или задан неверный LICENSE_KEY_V2 | Учтите исключительный приоритет непустого v2, сверьте полный код на /admin-onboarding; порядок действий см. в разделе о восстановлении лицензии |
| Не скачивается PDF | Ненастроен Gotenberg | Проверьте GOTENBERG_URL и доступность сервиса |
| Нет совместного редактирования | REDIS_ENABLED=false или Redis недоступен | Проверьте REDIS_ENABLED, REDIS_HOST и подключение |
Связанная документация
- Быстрый старт - минимальная конфигурация
- Production-Ready - полная настройка
- Безопасность - SIEM и аудит
- Мониторинг - метрики и алерты
Нужна помощь?
Если возникли вопросы по конфигурации, обратитесь к help@stormbpmn.com или вашему менеджеру.
Видимость настроек для неавторизованных пользователей
В административной панели у каждой настройки есть тумблер «Настройка видимости» — он разрешает передачу значения на фронтенд до входа пользователя (экран логина, страница лицензии).
С версии 6.6.6668 правила ужесточены
Раньше настройка с непроставленной видимостью могла попадать в анонимную выдачу. Теперь неавторизованному пользователю отдаются только настройки с явно включённой видимостью. После обновления проверьте, что тумблер включён у настроек, которые влияют на экран входа:
showBasicLogin,showCustomLoginButtonName,CustomLoginButtonNameenableYandexSSOshowRegistratoncustomMenuItemslicensePageHtml
Если после обновления форма логина «пропала» — откройте страницу входа с параметром ?showBasicLogin=true и включите видимость нужных настроек в админке.
Секреты не отдаются анониму даже с включённой видимостью
Настройки, в имени которых есть подстроки secret, token, password, passwd, private, credential, apikey, api_key, smtp, prompt, ldap, исключаются из анонимной выдачи всегда — это защита от случайной утечки. Обратная сторона: не используйте эти слова в именах собственных настроек, которые должны быть видны до входа. И по-прежнему не включайте видимость для паролей и конфиденциальных данных.