# Hardware requirements

## Minimum system requirements

The **OmniMES** system can be deployed in two variants: as a **cloud installation via the OmniPlatform** or as a **local (offline) installation** on the client's infrastructure. Each option has different requirements and a different way of launching.


---

### 1. Installation on the OmniPlatform (cloud)

For an installation within the **OmniPlatform**, the whole process is fully automatic and takes from **5 to 10 minutes**. The OmniMES system is deployed on a dedicated VPS server managed by the platform, without the user having to interfere with the hardware or system configuration.

#### Requirements:

* **No hardware requirements on the user's side**
* **Access to a web browser and the internet**
* The entire infrastructure is selected automatically based on:
  * The chosen subscription plan
  * The number of connected machines and signals


---

### 2. Local installation (offline) - on the client's infrastructure

This type of installation is intended for clients who want to deploy the OmniMES system on their own hardware, without a cloud connection. In this case an **individual quote** is required, depending on the number and frequency of signals broadcast from the machine park.

#### Deployment process:


1. The client provides data on the number of signals, machines and the expected transmission frequency.
2. Based on this, the appropriate server specification is selected.
3. The client receives a prepared **installation package in the form of a** `**docker-compose.yml**` file, which runs the system in Docker containers on a Linux server (the recommended configuration - see below).

#### Minimum hardware requirements:

* **CPU:** an ARM or x86 processor with min. 4 cores and 8 threads (1.0 GHz or higher)
* **RAM:** min. 16 GB of operating memory
* **Disk:** min. 120 GB of free disk space (SSD recommended)
* **Operating system:** Linux - Debian or Ubuntu Server LTS recommended
* **Docker:** Docker Engine version 20.x or higher
* **Docker Compose:** version 1.29+ or compatible with the v2 syntax

#### Recommended configuration: Linux + Docker

OmniMES runs in Linux-based Docker containers. The simplest, most efficient and most stable environment is therefore a **Linux server (Debian / Ubuntu Server LTS) with Docker Engine installed**. This is the configuration used by OmniMES instances in the OmniPlatform cloud.

If the company's infrastructure is based on Windows, we recommend creating a **Linux virtual machine** on the existing virtualization platform (e.g. Hyper-V, VMware). The IT department keeps managing the server with its own tools, and OmniMES runs in the environment it was designed for.


:::warning
**Windows Server - possible, but not recommended.** An installation on Windows Server is technically possible, but it requires individual arrangements with the OmniMES team. The reasons:

* **Docker Desktop**, the standard way of installing Docker on Windows, **is not supported by its vendor on Windows Server** (2019, 2022 and newer).
* OmniMES containers are Linux containers, so on Windows they always run inside an **additional Linux virtual machine** (WSL 2 / Hyper-V). This layer uses part of the RAM and CPU, slows down database disk operations and requires virtualization to be enabled - and nested virtualization when Windows Server itself is a virtual machine.
* Docker on Windows runs in the **session of a logged-in user**. After a server restart (e.g. after Windows updates) OmniMES will not start until someone logs in.
* Deployment, updates and troubleshooting take longer than on Linux.

Windows 10/11 or macOS with Docker Desktop are suitable for testing and demonstrating the system, but not as a production server.

:::

#### Scalability and expansion

The OmniMES system was designed with **horizontal scalability** in mind, which means it can be easily expanded as the number of signals and their frequency grow. In case of increased load it is possible to:

* Expand the instance with additional hardware resources (RAM, CPU, disk)
* Move the system to a more powerful machine
* Split the system into microservices and distribute them across multiple servers (on request)

#### Licensing:

* For each local installation an **individual license key** is generated, which contains:
  * The license duration
  * The number of available machines and signals
* The **quote** is set individually, depending on the deployment scope and the planned load

---

**Documents**

- [OmniPlatform](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/omniplatform-7z9SIECi68)
- [Omnienergy](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/omnienergy-56aRDgnYFZ)
- [Omnimes](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/omnimes-eGDa0U5cyr)
- [FAQ](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/faq-IFQjCNYt1Q)
- [Cybersecurity & Compliance (CRA)](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/cybersecurity-compliance-cra-pPJBcC6sBf)