# System Requirements

This section outlines the technical requirements for installing and operating Connectware. It covers hardware specifications, network configuration, and system dependencies for both Docker Compose and Kubernetes deployments.

The hardware requirements for Connectware depend on factors such as message rate, message size, and storage requirements. For hardware recommendations based on your specific use cases, [contact us](https://www.cybus.io/en/contact/) and we’ll recommend the appropriate hardware setup.

## Connectware Deployment Options

Connectware offers multiple deployment options using Kubernetes, Docker, or a hybrid approach. The choice depends on your specific infrastructure requirements, from enterprise-scale operations to streamlined development environments.

The following table details the features and recommended use cases for Kubernetes and Docker deployments.

|                  | **Kubernetes**                                                                                                                                                                             | **Docker**                                                                                                 |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| **Platform**     | Kubernetes using Helm orchestration                                                                                                                                                        | Docker with Docker Compose                                                                                 |
| **Environments** | Cloud, On-Premises, Hybrid                                                                                                                                                                 | On-Premises Linux (VM, Bare Metal)                                                                         |
| **Use case**     | Enterprise-grade deployment solution                                                                                                                                                       | Development and simple production                                                                          |
| **Key features** | <p>• Advanced orchestration<br>• Automated deployment management<br>• For high-demand environments<br>• Comprehensive monitoring<br>• Automated scaling<br>• Robust service management</p> | <p>• Low infrastructure requirements<br>• For development environments<br>• For basic deployment needs</p> |

## Software Requirements

* Linux operating system
* Deployment options
  * Kubernetes
  * Docker
  * Docker Compose
* Latest stable version of Chrome browser

Docker should be installed using the official setup guide <https://docs.docker.com/engine/install/ubuntu/>. Installing Docker by the package manager Snap is known to be causing issues and should be avoided.

{% hint style="warning" %}
Connectware is designed to operate on Linux systems, deployed with Docker Compose or Kubernetes. Running Connectware on Windows hosts or with different container-orchestration systems is not part of the standard version of Connectware, but may be available upon request.
{% endhint %}

## Docker Compose Deployment

Docker Compose provides a streamlined deployment option for Connectware, ideal for smaller installations or development environments. This approach simplifies setup and management while maintaining essential functionality, requiring fewer resources than a full Kubernetes implementation.

### Hardware Requirements

The hardware requirements for deploying Connectware on Docker depend on your deployment scale and your specific use cases.

#### Minimum Setup

* CPU: **64-bit x86**
* RAM: **4 GB**
* Storage: **32 GB**

### System Requirements

* Operating System: Linux (Windows hosts available upon request)

{% hint style="warning" %}
Avoid installing Docker through the **Snap package manager** due to known issues.
{% endhint %}

## Kubernetes Deployment

Kubernetes deployment offers a robust, enterprise-grade platform for Connectware, providing advanced orchestration capabilities, comprehensive monitoring, and efficient scaling. This approach is recommended for production environments with higher performance requirements or more complex integration needs.

### Supported Kubernetes Versions

Connectware officially supports the second-to-last and third-to-last minor releases of Kubernetes.

**Example**: If the latest Kubernetes release is 1.35, Connectware officially supports 1.34 and 1.33.

For information on the Kubernetes release history, see <https://kubernetes.io/releases/>.

{% hint style="warning" %}
While Connectware may run on older versions, we only provide support and testing for the versions defined above.
{% endhint %}

### Available Distributions

Kubernetes deployments for Connectware can be implemented on various Kubernetes distributions, including cloud-based and on-premise solutions.

For example:

* Red Hat OpenShift
* Amazon Elastic Kubernetes Service (EKS)
* Microsoft Azure Kubernetes Service (AKS)

### Hardware Requirements

The hardware requirements for deploying Connectware on Kubernetes depend on your deployment scale and your specific use cases. Here are some general recommendations for a minimum and a production setup.

#### Test Setup

For a basic setup with standard functionality and typical message loads, the following resources are sufficient:

For a basic configuration supporting standard functionality and typical message loads, we recommend the following setup:

* CPU: **64-bit x86**
* RAM: **4 GB**
* Storage: **60 GB**. Must support persistent storage using PersistentVolumes (PV) and PersistentVolumeClaims (PVC)

#### Production Setup

For an optimized hardware configuration that ensures sufficient resources for deploying Connectware and implementing initial use cases, we recommend the following setup:

* CPU: **12 cores**
* RAM: **15 GB**
* Storage: Must support persistent storage using PersistentVolumes (PV) and PersistentVolumeClaims (PVC)

### Kubernetes Cluster Requirements

* **StorageClass Requirements**
  * The cluster must be configured with exactly one default StorageClass that supports dynamic provisioning. Alternatively, the StorageClass can be explicitly specified via Helm values.
  * StorageClass supporting dynamic PersistentVolumes
  * Support for ReadWriteOnce (RWO) and ReadWriteMany (RWX) access modes
  * Recommended: NetApp with Trident provisioner
* **Load Balancer**
  * Must support OSI Layer-4 (TCP) connectivity
  * Example: MetalLB
* **Required Tools**
  * Helm for deployment management
  * kubectl for validating the cluster and application configuration, troubleshooting, and performing manual changes
  * Access to Cybus Registry (direct or via mirror)

### Performance Guidelines

* **Monitor system load**
  * At 50% load: Consider resource expansion
  * At 80% load: Strongly recommended to add resources
* **Deployment Strategy**
  * Start with test instance
  * Scale progressively through development, staging, and production

## Agent Requirements

### Minimum Agent Hardware Requirements

* CPU: **1 core**
* RAM: **4 GB**

### Agents on Kubernetes

When deploying agents using the connectware-agent Helm Chart on Kubernetes, the following requirements apply:

* **StorageClass Requirements**
  * The cluster must be configured with exactly one default StorageClass that supports dynamic provisioning. Alternatively, the StorageClass can be explicitly specified via Helm values.
  * StorageClass supporting dynamic PersistentVolumes
  * Support for ReadWriteOnce (RWO) access mode
* **Required Tools**
  * Helm for deployment management
  * kubectl for validating the cluster and application configuration, troubleshooting, and performing manual changes
* **Network Access**
  * Access to Cybus Registry (direct or via mirror)
  * Standard connectivity to target Connectware installation via the following ports:

| Port       | Protocol    | Purpose                              |
| ---------- | ----------- | ------------------------------------ |
| 443        | TCP/HTTPS   | Registration, license retrieval      |
| 1883, 8883 | TCP/MQTT(S) | Data Plane                           |
| 4222       | TCP/HTTP(S) | Control Plane (mTLS)                 |
| 4223       | TCP/HTTP(S) | Control Plane (user name & password) |

For detailed installation instructions, see [Installing Connectware Agents using the connectware-agent Helm Chart](https://docs.cybus.io/2-0-6/documentation/agents/agents-in-kubernetes/installing-connectware-agents-using-the-connectware-agent-helm-chart).

### Supported Kubernetes Versions for Agents

Connectware officially supports the second-to-last and third-to-last minor releases of Kubernetes.

**Example**: If the latest Kubernetes release is 1.35, Connectware officially supports 1.34 and 1.33.

For information on the Kubernetes release history, see <https://kubernetes.io/releases/>.

{% hint style="warning" %}
While Connectware may run on older versions, we only provide support and testing for the versions defined above.
{% endhint %}

## Network Requirements

Connectware's effective operation requires a network infrastructure that links business systems, manufacturing resources, and cloud systems. This ensures data security while preserving essential boundaries between network zones.

* **Enterprise domain**: Facilitates interaction with corporate databases and information systems.
* **Operational domain**: Establishes connections with factory equipment and industrial assets.
* **External domain**: Supports system updates and integration with cloud-based services.

The sections below specify the necessary port configurations to implement this integrated connectivity architecture.

### Required Inbound Ports

{% tabs %}
{% tab title="Kubernetes Inbound Ports" %}
**Kubernetes Inbound Ports**

| Port         | Protocol    | Purpose                                |
| ------------ | ----------- | -------------------------------------- |
| 443          | TCP/HTTPS   | Web interface, frontend & registration |
| 1883, 8883   | TCP/MQTT(S) | Data broker, agent connection          |
| 4841         | TCP/OPC UA  | OPC UA server (optional)               |
| 40000-40100  | TCP/HTTP(S) | Application ingress                    |
| 4222         | TCP/HTTP(S) | Control Plane (mTLS)                   |
| 4223         | TCP/HTTP(S) | Control Plane (user name & password)   |
| {% endtab %} |             |                                        |

{% tab title="Docker Inbound Ports" %}
**Docker Inbound Ports**

| Port          | Protocol    | Purpose                                |
| ------------- | ----------- | -------------------------------------- |
| 22            | TCP/SSH     | Host system administration             |
| 443           | TCP/HTTPS   | Web interface, frontend & registration |
| 1883, 8883    | TCP/MQTT(S) | Data broker, agent connection          |
| 4841          | TCP/OPC UA  | OPC UA server (optional)               |
| 40000-40100   | TCP/HTTP(S) | Application ingress                    |
| 4222          | TCP/HTTP(S) | Control Plane (mTLS)                   |
| 4223          | TCP/HTTP(S) | Control Plane (user name & password)   |
| {% endtab %}  |             |                                        |
| {% endtabs %} |             |                                        |

### Required Outbound Connectivity

#### Cybus Services (HTTPS/443)

Required endpoints for online functionality:

* **registry.cybus.io**
* **portal.cybus.io**
* **download.cybus.io**
* **graphql-server.cybus.io**
* **docker-auth.cybus.io**
* **repository.cybus.io** (only for Kubernetes deployments)

### Network Performance Requirements

* Minimum recommended bandwidth: 2.5 Gbps
* Higher bandwidth recommended for optimal performance

## Implementation Considerations

Beyond the technical setup, successful Connectware deployment requires strategic planning for resilience, security, and growth. This section addresses critical factors that ensure long-term operational effectiveness.

**Online vs Offline Operation**

Connectware is designed to function effectively in offline environments while offering enhanced capabilities when online. Internet connectivity is required specifically for system updates and management via the Cybus Portal, but core operational functionality remains intact without external connections.

**Network Segmentation**

Proper network segmentation is essential for operational integrity. Organizations should establish well-defined access protocols between office and production networks, implementing comprehensive security measures at zone boundaries to maintain appropriate isolation between critical system components.

**Capacity Planning and Scalability**

Proactive resource management is crucial for long-term system viability. We recommend that you regularly monitor resource utilization metrics, with particular attention to early indicators of capacity constraints. Organizations should develop strategic plans for both computational and storage expansion, while implementing appropriate redundancy and backup protocols to ensure operational continuity.

## Virtual Host Requirements

When deploying Connectware in virtualized environments, specific platform capabilities are required to ensure proper container operation and system performance.

Full Docker support including privileged containers is required to run Connectware on virtual hosts.

Sufficient platforms:

* VMware
* AWS EC2 (e.g. using t3a.large or t3a.xlarge (recommended) instances with Ubuntu 24.04)
* Azure VM
* Google Compute Engine
