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 |