Installation
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
| Component | CPU | RAM | Disk | Note |
|---|---|---|---|---|
| General resources | 12 vCPU | 24 GB | 300 GB | Minimum for the full system |
| Recommended | 16 vCPU | 32 GB | 500 GB | For stable operation |
| Production | 24 vCPU | 32 GB | 500 GB | For high load |
Container Requirements
Core Components (Mandatory)
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| StormBPMN | 4 vCPU | 8 GB | 20 GB | 8080,8081,8082 | Main application |
| PostgreSQL | 2 vCPU | 4 GB | 100 GB | 5432 | Database |
| Nginx | 1 vCPU | 1 GB | 5 GB | 80, 443 | Load balancer |
Storage and Files
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| MinIO | 1 vCPU | 2 GB | 100 GB | 9000, 9001 | S3-compatible storage (API + Console) |
Authentication and Security
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| Keycloak | 2 vCPU | 3 GB | 10 GB | 8180 | Authentication system |
| SMTP Server | 0.5 vCPU | 512 MB | 5 GB | 25, 587, 465 | Mail server |
Monitoring (Optional)
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| Prometheus | 1 vCPU | 2 GB | 50 GB | 9090 | Metrics collection |
| Grafana | 0.5 vCPU | 1 GB | 5 GB | 3000 | Metrics visualization |
Collaborative Editing (Optional)
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| Redis | 0.5 vCPU | 512 MB | 1 GB | 6379 | Pub/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)
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| ListMonk | 0.5 vCPU | 1 GB | 5 GB | 9000 | Mailing system |
| PlantUML | 0.5 vCPU | 1 GB | 2 GB | 8090 | Diagram generation |
| Gotenberg | 1 vCPU | 2 GB | 5 GB | 3001 | PDF conversion |
Simulation Module (Separate License)
| Container | CPU | RAM | Disk | Ports | Description |
|---|---|---|---|---|---|
| Storm DES | 4 vCPU | 16 GB | 20 GB | 8081 (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 / Parameter | Purpose | Requirement |
|---|---|---|
| UTF8 encoding | Correct text storage, ICU collation, and natural sorting of names | Mandatory |
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 module | Mandatory (see warning below) |
| pg_trgm | User autocomplete and search by partial name/email (trigrams) | Mandatory for autocomplete |
| pgcrypto | Cryptographic functions | Mandatory |
| uuid-ossp | UUID generation | Mandatory |
| hstore | Key-value storage for the vector search engine | Mandatory |
What is created automatically vs. manually:
- Extensions
vector,uuid-ossp,hstore,pgcryptoare 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_trgmextension 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 Type | Recommended Disk Type | Note |
|---|---|---|
| PostgreSQL | SSD | Critical for performance |
| MinIO/S3 | SSD or HDD | Depends on file operation intensity |
| Logs | HDD | |
| Applications | HDD |
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
| Service | Port | Protocol | Purpose |
|---|---|---|---|
| StormBPMN | 8080, 8081, 8082 | HTTP/HTTPS | Main web application |
| PostgreSQL | 5432 | TCP | Database |
| Nginx | 80, 443 | HTTP/HTTPS | Load balancer, SSL termination |
| MinIO | 9000, 9001 | HTTP/HTTPS | S3 API + web console |
Additional Ports (Optional)
| Service | Port | Protocol | Purpose |
|---|---|---|---|
| Keycloak | 8180 | HTTP/HTTPS | Authorization system |
| SMTP | 25, 587, 465 | SMTP/SMTPS | Mail server |
| Redis | 6379 | TCP | Collaborative editing (multi-instance) |
| Prometheus | 9090 | HTTP | Metrics collection |
| Grafana | 3000 | HTTP | Metrics visualization |
| ListMonk | 9000 | HTTP | Mailing system |
| PlantUML | 8090 | HTTP | Diagram generation |
| Gotenberg | 3001 | HTTP | PDF 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.