# Prerequisites
# Hardware
# Minimal
Server | CPU | RAM | Disk |
---|---|---|---|
Applications + databases | 4 cores | 16 GB | 500GB SSD |
Model processing (workers) | 4 cores | 16 GB | 120 GB SSD |
# Recommended
Server | CPU | RAM | Disk |
---|---|---|---|
Applications | 8 cores | 32 GB | 120 GB SSD |
Databases | 8 cores | 32 GB | 500 GB SSD |
Model processing (workers) | 16 cores | 64 GB | 120 GB SSD |
# High Availability
For the High availability, the prerequisites are the same as the Recommended configuration with more servers: each server need to have at least two instances.
# Software
BIMData.io softwares are distributed with their dependencies in the form of Docker Images. This facilitated the installation but makes it necessary to use a technology capable of running the containers (Docker, Containerd, etc.).
Moreover, here the minimal version for the third party components:
Component | Needed Version |
---|---|
Keycloak | >=11 |
Postgres | >=11 |
RabbitMQ | AMQP 0-9-1 |
# Databases
Five databases are necessary for the proper functioning of our applications:
- one for the API,
- one for the platform,
- one for Connect,
- one for Keycloak.
One Postgresql extension is necessary: hstore
. Our apps will create it when needed,
but the Postgresql user needs to have the CREATE
permission on the database for that.
You can otherwise create it manually.
# Security
# Firewall
Here are the ports to open for the good communication of all the elements. Each port can be customized and the flow matrix must be adapted if necessary.
Source | Protocol | Port | Destination | Note |
---|---|---|---|---|
Web-front-end | TCP | 8000 | API | |
Web-front-end | TCP | 8000 | Connect | |
Web-front-end | TCP | 8000 | Platform (back) | |
Web-front-end | TCP | 80 | Platform (front) | |
Web-front-end | TCP | 8000 | Marketplace (back) | |
Web-front-end | TCP | 8000 | Marketplace (front) | |
Web-front-end | TCP | 8080 | Keycloak | |
Web-front-end | TCP | 15672 | RabbitMQ | Admin interface |
Web-front-end | TCP | 8080 | Archive | |
Web-front-end | TCP | 80 | Documentation | |
API | TCP | 80 / 443 | Web-front-end | |
Connect | TCP | 80 / 443 | Web-front-end | |
Platform (back) | TCP | 80 / 443 | Web-front-end | |
Marketplace (back) | TCP | 80 / 443 | Web-front-end | |
Archive | TCP | 80 / 443 | Web-front-end | |
Workers | TCP | 80 / 443 | Web-front-end | |
API | TCP | 5432 | Postgres | |
Connect | TCP | 5432 | Postgres | |
Keycloak | TCP | 5432 | Postgres | |
Platform (back) | TCP | 5432 | Postgres | |
Marketplace (back) | TCP | 5432 | Postgres | |
API | TCP | 5672 | RabbitMQ | |
Workers | TCP | 5672 | RabbitMQ | |
API | TCP | 587 | SMTP | Optional |
Connect | TCP | 587 | SMTP | Optional |
Platform (back) | TCP | 587 | SMTP | Optional |
Workers | TCP | 587 | SMTP | Optional |
Users | TCP | 80 / 443 | Web-front-end | |
Users | TCP | 80 / 443 | Object Storage | Optional |
Archive | TCP | 80 / 443 | Object Storage | Optional |