# Requirements

This page consolidates the requirements for all UDiTH Portal components. Please review the sections relevant to the components you intend to deploy.

Each component has its own section: [Portal](#portal), [Render server](#render-server), [Keycloak](#keycloak), [ICE server (CAXturn)](#ice-server-caxturn) and [Databases](#databases). The [Ports](#ports) and [Common requirements](#common-requirements) sections apply to all of them.

## Ports

For communication between the individual components and the clients, certain ports must be available. The port values shown are examples and can be adjusted.

| Service        | Protocol/Port                                  |
|--------------|----------------------------------------------|
| Request       | 443/TCP                                      |
| Direct Stream | P2P                                          |
| Authentication | 443/TCP or 8443/TCP (if on the same server with Windows) |
| Relay Stream  | 3478 TCP/UDP, port range 50000-51000/UDP (2 ports per stream, but most WebRTC implementations in browsers can open more than 2, in some cases 4-6. This also depends on the number of TURN server addresses specified in the configuration.) |
| Management    | 443/TCP                                      |

## Common requirements

The following requirements apply to every server, regardless of component or platform.

- **Accurate server time** configuration (using NTP is recommended).
- **Trusted SSL certificate** for the alias or (sub)domain:
  - Must meet current security standards.
  - The certificate and key are required as a `.pfx` file or similar.
- **Alias or subdomain** for the server.

### Network

- **Recommended:** 10 Gbit network connection
- **Minimum:** 1 Gbit network connection

### Latest validated third-party versions

- Keycloak 26.7.2
- MSSQL 2025

## Portal

### Operating systems

Any x64 Linux system that supports Docker containers, or Windows Server 2019 / 2022 / 2025.

### CPU and memory

- **8-16 CPU cores**
- **8-16 GB RAM**

Very large installations can require more. Large model collections, a high
number of concurrent users, or attribute indexing all increase the demand.

### Storage

The backing storage for the Central Model Repository must be fast enough to saturate the network connection when serving models. As a guideline, plan for approximately **1000 read IOPS** and **100 MB/s** of read throughput per **1 Gbit** of network connection.

| Network connection | Read IOPS   | Read throughput |
|--------------------|-------------|-----------------|
| 1 Gbit             | 1000 IOPS   | 100 MB/s        |
| 10 Gbit            | 10000 IOPS  | 1000 MB/s       |

Individual **hard disk drives (HDDs) are not supported** for the Central Model
Repository. A single HDD delivers roughly 75-200 random read IOPS and therefore
cannot meet even the 1 Gbit guideline above. Use SSD/NVMe storage, or a storage
system (SAN/NAS/RAID array) that demonstrably reaches the values in the table.

### Software (Windows)

- **.NET 10 Hosting Bundle**.
- **SQL Server Express** can be installed during the main installation.
- **IIS installation** with the **Default Website** accessible via **HTTPS**:
  - Setup via HTTP is **not supported**.
- **Keycloak 26.x Server** must be pre-installed.

### Software (Linux)

- **Docker** is required.
- A **reverse proxy** in front of Portal is recommended.
- **Keycloak 26.x Server**.

## Render server

### Operating systems

Windows Server 2019 / 2022 / 2025, or Windows 11.

### CPU and memory

Per stream:

- **2 CPU cores**
- **4 GB RAM**

Minimum **8 CPU cores** per server. These are recommended requirements. Depending on the model size, the requirements may be lower or higher. Please verify this with your own models. We do not recommend going above 40 streams per server.

### GPU

- **2 GB VRAM** per stream.
- NVIDIA GPUs such as **A4500 ADA** or **RTX PRO 4500 Blackwell/Server** are recommended.
- **AMD GPUs** are not officially supported.
- Current GPU drivers installed.

### Other

- The **render server** must have a **logged-in user session**:
  - The screen can be locked, but a user must remain logged in.

## Keycloak

### Operating systems

Any x64 Linux system that supports Docker containers, or Windows Server 2019 / 2022 / 2025.

### Other

- Ensure that Keycloak can either:
  - Run on a different port than 443 (used by the web service), **or**
  - Use a separate IP address/server.
- Currently, it seems **not possible** to use a reverse proxy like IIS to host both Keycloak and the web service on the **same subdomain and port**.

## ICE server (CAXturn)

A **TURN/STUN server** may be required for BBV, depending on your local network.

### Operating systems

Any x64 Linux system that supports Docker containers, or Windows Server 2019 / 2022 / 2025.

## Databases

- **Microsoft SQL Server 2016 or later**:
  - A database must already be created.
  - A user with **DB Owner** permissions on that database is required.
- To use the attribute indexing feature, a non-Express version of SQL Server should be used because of the storage requirements.

All database operations must be handled by the customer. Regular backups are recommended.

Direct data manipulation on the database is prone to error and should be avoided.
