---
url: /on-premises/install/prerequisites.md
---
# 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            |
