Skip to main content

Installation

About 6 min

Installation

πŸ“¦ Deploying StormBPMN from scratch? This is the place for you. Follow the steps in order: first β€œQuick Start”, then β€œProduction Installation” β€” skipping stages is not allowed.

Stormbpmn is provided as a Docker container from a private registry, which includes both the frontend and backend. Installation involves correctly specifying environment variables, deploying adjacent containers (if necessary), and configuring the system in the administrative interface.

Access to the registry

The container is located in a private registry. Request access through the manager you are working with. The current container version is listed in the Changelog section of this documentation.

2 installation stages

The menu on the left outlines two stages: β€œQuick Start” and β€œProduction-ready”. They must be performed sequentially; skipping is not allowed.

Kubernetes

For Kubernetes, there is an official Helm chart, and its version matches the StormBPMN version: β€œInstallation in Kubernetes (Helm)”.

Using corporate services

Recommendation: If your organization has centralized infrastructure services, use them:

  • DBaaS (Database as a Service) instead of deploying PostgreSQL independently
  • S3aaS or a corporate file storage instead of MinIO
  • Managed SMTP instead of your own mail server
  • Corporate SSO/SAML instead of Keycloak
  • Centralized monitoring (Prometheus/Grafana) instead of local

This will simplify deployment, ensure better support, and comply with corporate security standards.

System Requirements

General minimum requirements for the entire system

ComponentCPURAMDiskNote
General resources12 vCPU24 GB300 GBMinimum for the full system
Recommended16 vCPU32 GB500 GBFor stable operation
Production24 vCPU32 GB500 GBFor high load

Container Requirements

Core Components (Mandatory)

ContainerCPURAMDiskPortsDescription
StormBPMN4 vCPU8 GB20 GB8080,8081,8082Main application
PostgreSQL2 vCPU4 GB100 GB5432Database
Nginx1 vCPU1 GB5 GB80, 443Load balancer

Storage and Files

ContainerCPURAMDiskPortsDescription
MinIO1 vCPU2 GB100 GB9000, 9001S3-compatible storage (API + Console)

Authentication and Security

ContainerCPURAMDiskPortsDescription
Keycloak2 vCPU3 GB10 GB8180Authentication system
SMTP Server0.5 vCPU512 MB5 GB25, 587, 465Mail server

Monitoring (Optional)

ContainerCPURAMDiskPortsDescription
Prometheus1 vCPU2 GB50 GB9090Metrics collection
Grafana0.5 vCPU1 GB5 GB3000Metrics visualization

Collaborative Editing (Optional)

ContainerCPURAMDiskPortsDescription
Redis0.5 vCPU512 MB1 GB6379Pub/Sub and collaborative editing sessions

When is Redis required?

Redis is required when deploying multiple instances of StormBPMN (multi-instance / HA). For a single instance, data is stored in the application memory, and Redis is not required.

Additional Services (Optional)

ContainerCPURAMDiskPortsDescription
ListMonk0.5 vCPU1 GB5 GB9000Mailing system
PlantUML0.5 vCPU1 GB2 GB8090Diagram generation
Gotenberg1 vCPU2 GB5 GB3001PDF conversion

Simulation Module (Separate License)

ContainerCPURAMDiskPortsDescription
Storm DES4 vCPU16 GB20 GB8081 (internal)Process simulation engine β€” see the β€œSimulations” section

PostgreSQL Requirements: Extensions and Encoding

PostgreSQL 14 or later is required for the main and audit databases; for new installations, we recommend 16–17. On PostgreSQL 13 or earlier, the application stops before running migrations.

StormBPMN uses several PostgreSQL extensions. Before installation, ensure they are available in your database build and that the database is created with UTF8 encoding.

Extension / ParameterPurposeRequirement
UTF8 encodingCorrect text storage, ICU collation, and natural sorting of namesMandatory
pgvector (vector)Fast universal (semantic) search across the platform; also used by the AI chat knowledge base. Required for all deployments, not just those with the AI moduleMandatory (see warning below)
pg_trgmUser autocomplete and search by partial name/email (trigrams)Mandatory for autocomplete
pgcryptoCryptographic functionsMandatory
uuid-osspUUID generationMandatory
hstoreKey-value storage for the vector search engineMandatory

What is created automatically vs. manually:

  • Extensions vector, uuid-ossp, hstore, pgcrypto are created by migrations on the first run (CREATE EXTENSION IF NOT EXISTS …) β€” provided that the corresponding packages are installed in the PostgreSQL build and the database user has the privilege to create extensions (superuser or a role with the necessary privileges).
  • The pg_trgm extension is not created by the application. If it is missing, the autocomplete index migrations are silently skipped, and user search by partial name/email will not work. Create it in advance.

The official postgres image does not include pgvector

The standard image postgres:17 includes contrib modules (pg_trgm, pgcrypto, uuid-ossp, hstore), but does not include pgvector. For self-managed deployments, use the pgvector/pgvector:pg17 image β€” this is the same PostgreSQL with all standard modules plus pgvector. For managed databases (DBaaS), ensure in advance that the provider offers the pgvector extension and that the user has the privilege to create it.

The pgvector image is available from our registry

If external registries (Docker Hub) are blocked, you do not need to pull pgvector/pgvector:pg17 from an external source β€” we mirror the official image to our private registry and sign it with the same Cosign signature as the main StormBPMN image. It is available using the same credentials cr.selcloud.ru:

docker pull cr.selcloud.ru/stormbpmn-enterprise/pgvector:pg17

Transferring it to your corporate registry follows the same steps as for the main image (see Quick Start). Signature verification is the same as for the main image (see Changelog β†’ "Image Signature Verification (Cosign)").

Full set with a single command

If you are installing extensions manually β€” run the following in the application database as a superuser:

CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS hstore;

Deployment Configurations

Minimal Configuration (for Testing)

# Волько основныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹
StormBPMN + PostgreSQL + Nginx
Π˜Ρ‚ΠΎΠ³ΠΎ: 7 vCPU, 13 GB RAM, 125 GB диск

Basic Configuration (for Operation)

# ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ + авторизация + Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅
StormBPMN + PostgreSQL + Nginx + MinIO + Keycloak + SMTP
Π˜Ρ‚ΠΎΠ³ΠΎ: 10.5 vCPU, 18.5 GB RAM, 240 GB диск

Corporate Configuration (with Centralized Services)

# Волько StormBPMN + внСшниС ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ сСрвисы
StormBPMN + Nginx + интСграция с:
    - DBaaS (внСшний PostgreSQL)
    - S3aaS (внСшнСС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅)
    - Corporate SSO (внСшняя авторизация)
    - Managed SMTP (внСшняя ΠΏΠΎΡ‡Ρ‚Π°)

Π˜Ρ‚ΠΎΠ³ΠΎ: 5 vCPU, 9 GB RAM, 25 GB диск

Full Configuration (Production)

# ВсС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³
ВсС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† Π²Ρ‹ΡˆΠ΅
Π˜Ρ‚ΠΎΠ³ΠΎ: 13 vCPU, 23.5 GB RAM, 307 GB диск

Operating System Requirements

Supported OS:

Any OS where Docker runs, for example (not limited to):

  • Ubuntu: 20.04 LTS, 22.04 LTS, 24.04 LTS
  • CentOS: 8+, Stream 9
  • RHEL: 8+, 9+
  • Debian: 11+, 12+
  • Amazon Linux: 2, 2023

Russian OS:

  • Astra Linux: 1.7+, 1.8 (SE, CE)
  • ALT Linux: 10+, Simply Linux
  • RED OS: 7.3+, 8
  • ROSA Linux: 12+
  • Any other Russian OS with Docker or Podman support

Containerization Import Substitution

To meet the requirements of the registry of domestic software, Podman can be used instead of Docker β€” an OCI-compatible alternative included in the registry of Russian software. For details, see the Docker Alternatives section.

Disk Recommendations

Data TypeRecommended Disk TypeNote
PostgreSQLSSDCritical for performance
MinIO/S3SSD or HDDDepends on file operation intensity
LogsHDD
ApplicationsHDD

Network requirements

Throughput:

  • Minimum: 100 Mbps
  • Recommended: 1 Gbps
  • Production: 10 Gbps (for high load)

Latency:

  • Between components: < 1ms (within the same network)
  • To users: < 100ms
  • To external APIs: < 500ms

Network requirements

Required ports

ServicePortProtocolPurpose
StormBPMN8080, 8081, 8082HTTP/HTTPSMain web application
PostgreSQL5432TCPDatabase
Nginx80, 443HTTP/HTTPSLoad balancer, SSL termination
MinIO9000, 9001HTTP/HTTPSS3 API + web console

Additional Ports (Optional)

ServicePortProtocolPurpose
Keycloak8180HTTP/HTTPSAuthorization system
SMTP25, 587, 465SMTP/SMTPSMail server
Redis6379TCPCollaborative editing (multi-instance)
Prometheus9090HTTPMetrics collection
Grafana3000HTTPMetrics visualization
ListMonk9000HTTPMailing system
PlantUML8090HTTPDiagram generation
Gotenberg3001HTTPPDF conversion

External Connections

  • SMTP server: port 587/465 (for notifications)
  • LDAP/AD: port 389/636 (for authentication)
  • Internet: for downloading updates

DNS Names and Certificates

DNS Planning

Required Records:

  • stormbpmn.company.com - the main application domain. Must point to 8081
  • stormbpmn-api.company.com - API endpoints (optional). Must point to 8082

Docker Alternatives (Import Substitution)

Stormbpmn is provided as OCI-compatible container images, which allows the use of alternative containerization tools instead of Docker.

Podman (recommended for import substitution)

Podman is a fully Docker-compatible alternative that is included in the Russian software registry. Podman commands are identical to Docker commands.

Installation on Astra Linux / ALT Linux / RED OS

# Astra Linux 1.8
sudo apt install podman podman-compose

# ALT Linux
sudo apt-get install podman podman-compose

# Π Π•Π” ОБ
sudo dnf install podman podman-compose

Usage

# ВмСсто docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ podman
podman pull cr.stormbpmn.com/stormbpmn:latest
podman run -d --name stormbpmn ...

# ВмСсто docker-compose ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ podman-compose
podman-compose up -d

Command compatibility

For convenience, you can create an alias: alias docker=podman

CRI-O (for Kubernetes)

When deploying to Kubernetes, you can use CRI-O β€” a lightweight container runtime that is fully compatible with OCI images.

Containerd

Containerd is a low-level runtime used in Kubernetes and compatible with all StormBPMN OCI images.

Important

Regardless of the chosen containerization tool, StormBPMN OCI images work identically. All instructions with docker in the documentation apply to podman without changes.