> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# System Requirements

> Hardware, software, and network requirements for ABBYY Vantage Self-Hosted on Virtual Machines or Azure AKS, including RDBMS, SMTP, and storage prerequisites.

## Prerequisites Checklist

Prepare and configure the following external components before installing Vantage:

<Tabs>
  <Tab title="Virtual Machines">
    * A machine with Docker and internet access (from which Vantage is being installed)
    * Virtual machines (with internet access during installation) to be used as Kubernetes nodes
    * A container registry to store Docker images
    * Relational Database Management Systems (RDBMS) for Vantage operation
    * An SMTP server to send email messages to Vantage users
    * A TLS certificate to establish encrypted communications
    * 2 static IP addresses - one for Kubernetes configuration/management, one for Vantage access
    * A DNS record for Vantage access
    * External storage (optional for Without high availability configuration)
  </Tab>

  <Tab title="Azure AKS">
    * A Microsoft Azure subscription with permissions to create and manage resources
    * Azure CLI installed on the installation machine
    * A machine with Docker and internet access (from which Vantage is being installed)
    * An Azure Kubernetes Service (AKS) cluster with appropriate node pools
    * An Azure Container Registry to store Docker images
    * An Azure SQL Database for Vantage operation
    * Azure Storage Accounts for Vantage data
    * An SMTP server or Azure SendGrid to send email messages to Vantage users
    * A TLS certificate to establish encrypted communications
    * An Azure Public IP address (Standard Static IPv4) for Vantage access
    * A DNS record for Vantage access
    * A Redis cluster (required for Highly Available configuration only)
  </Tab>
</Tabs>

## Installation Machine Requirements

The machine from which Vantage is being installed requires:

<Tabs>
  <Tab title="Virtual Machines">
    * Linux OS or Windows Subsystem for Linux (WSL)
    * Docker version 19.03 or later
    * Network access to `abyvtgonprm27.azurecr.io`
    * Local files containing a private SSH key (without a passphrase) for the `ansible` user account

    <Note>
      All virtual machines must have the same SSH key.
    </Note>
  </Tab>

  <Tab title="Azure AKS">
    * Linux OS or Windows Subsystem for Linux (WSL)
    * Docker version 19.03 or later
    * Azure CLI installed and configured
    * kubectl installed
    * Network access to `abyvtgonprm27.azurecr.io`
  </Tab>
</Tabs>

## Infrastructure Requirements

<Tabs>
  <Tab title="Virtual Machines">
    All virtual machines can run in VMware or Hyper-V and must have:

    * A static IP address
    * A user account named `ansible` with:
      * Shared SSH key access
      * sudo access with NOPASSWD option
    * A dedicated expandable disk/lvm\_volume mounted to `/opt/local-path-provisioner` on each worker node
    * Internet access during installation to the container registry and package repositories:
      * Container registry with the synchronized images prepared as a prerequisite for Vantage installation. For more information, see [Downloading Container Images](/vantage/self-hosted/v2.7/installation#downloading-container-images).
      * Package repository: Ubuntu ([archive.ubuntu.com](http://archive.ubuntu.com)), RHEL ([cdn.redhat.com](http://cdn.redhat.com)). Instead of access to the package repositories, you can also configure access to your own repository, which should contain all the required packages listed below.

    **Common (all distributions):**

    ```
    curl, socat, unzip, e2fsprogs, xfsprogs, ebtables, tar
    ```

    **OS-specific packages:**

    | Ubuntu 20.04                                                                         | RHEL 8                                                            |
    | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
    | python3-apt, apt-transport-https, software-properties-common, conntrack, libseccomp2 | device-mapper-libs, nss, conntrack, container-selinux, libseccomp |

    ### Post-Installation Network Access

    After cluster installation, virtual machines need access to:

    * `https://licensing-us.abbyy.com`
    * The mail server, for which the SMTP settings are specified in the `env_specific.yml` file (for sending email invitations, recovering passwords, etc.).
    * All mail servers from which you are going to import your emails in Vantage Process skills.
  </Tab>

  <Tab title="Azure AKS">
    Azure Kubernetes Service (AKS) cluster requirements:

    * Kubernetes version: 1.33.3
    * Azure region that supports the required VM sizes
    * Network plugin: Azure CNI recommended
    * An Azure Public IP address (Standard Static IPv4) for ingress

    ### Post-Installation Network Access

    After cluster deployment, the AKS cluster needs access to:

    * `https://licensing-us.abbyy.com`
    * The mail server or Azure SendGrid for sending email invitations, recovering passwords, etc.
    * All mail servers from which you are going to import your emails in Vantage Process skills.
  </Tab>
</Tabs>

## Highly Available Configuration

<Tabs>
  <Tab title="Virtual Machines">
    <Note>
      The minimum required number of virtual machines is specified. Different performances may require a different number of virtual machines.
    </Note>

    | Kubernetes Node Type                                          | Master Nodes           | Worker Nodes (Services) | Worker Nodes (Workers) |
    | ------------------------------------------------------------- | ---------------------- | ----------------------- | ---------------------- |
    | Operating System                                              | Ubuntu 20.04 or RHEL 8 | Ubuntu 20.04 or RHEL 8  | Ubuntu 20.04 or RHEL 8 |
    | Number of VMs                                                 | 3                      | 4                       | 1                      |
    | CPU cores (for each VM)                                       | 2                      | 12                      | 12                     |
    | RAM, GB (for each VM)                                         | 4                      | 48                      | 48                     |
    | Disk Storage for Kubernetes, GB (for each VM)                 | 50                     | 80                      | 80                     |
    | Disk/volume for `/opt/local-path-provisioner` mount point, GB | Not required           | Minimum 40              | Minimum 40             |
    | Network bandwidth, Gbps (for each VM)                         | 1                      | 1                       | 1                      |
  </Tab>

  <Tab title="Azure AKS">
    <Note>
      The minimum required number of nodes is specified. Different performance requirements may require additional nodes.
    </Note>

    | Node Pool Configuration | Services Node Pool | Workers Node Pool   |
    | ----------------------- | ------------------ | ------------------- |
    | Azure VM Size           | Standard\_D8as\_v5 | Standard\_D16as\_v5 |
    | vCPUs (per node)        | 8                  | 16                  |
    | RAM, GB (per node)      | 32                 | 64                  |
    | Number of Nodes         | 4                  | 1                   |
    | Node Pool Mode          | User               | User                |
    | OS Disk Size, GB        | 128                | 128                 |

    **Workers Node Pool Labels and Taints**

    The `Standard_D16as_v5` workers pool **must** have the following labels and taints configured:

    Labels:

    * `k8s.abbyy.com/techcore: "true"`
    * `k8s.abbyy.com/overprovision-label: workers`

    Taints:

    * `k8s.abbyy.com/techcore=true:NoSchedule`
  </Tab>
</Tabs>

## Without High Availability Configuration

<Tabs>
  <Tab title="Virtual Machines">
    | Kubernetes Node Type                                          | Master Nodes           | Worker Nodes (Services) | Worker Nodes (Workers) |
    | ------------------------------------------------------------- | ---------------------- | ----------------------- | ---------------------- |
    | Operating System                                              | Ubuntu 20.04 or RHEL 8 | Ubuntu 20.04 or RHEL 8  | Ubuntu 20.04 or RHEL 8 |
    | Number of VMs                                                 | 1                      | 1                       | 1                      |
    | CPU cores (for each VM)                                       | 2                      | 12                      | 12                     |
    | RAM, GB (for each VM)                                         | 4                      | 48                      | 48                     |
    | Disk Storage for Kubernetes, GB (for each VM)                 | 50                     | 80                      | 80                     |
    | Disk/volume for `/opt/local-path-provisioner` mount point, GB | Not required           | Minimum 40              | Minimum 40             |
    | Network bandwidth, Gbps (for each VM)                         | 1                      | 1                       | 1                      |

    <Note>
      Kubernetes version 1.33.3 will be installed during the Vantage installation.
    </Note>
  </Tab>

  <Tab title="Azure AKS">
    | Node Pool Configuration | Services Node Pool | Workers Node Pool   |
    | ----------------------- | ------------------ | ------------------- |
    | Azure VM Size           | Standard\_D8as\_v5 | Standard\_D16as\_v5 |
    | vCPUs (per node)        | 8                  | 16                  |
    | RAM, GB (per node)      | 32                 | 64                  |
    | Number of Nodes         | 2                  | 1                   |
    | Node Pool Mode          | User               | User                |
    | OS Disk Size, GB        | 128                | 128                 |

    **Workers Node Pool Labels and Taints**

    The `Standard_D16as_v5` workers pool **must** have the following labels and taints configured:

    Labels:

    * `k8s.abbyy.com/techcore: "true"`
    * `k8s.abbyy.com/overprovision-label: workers`

    Taints:

    * `k8s.abbyy.com/techcore=true:NoSchedule`

    <Note>
      AKS manages the Kubernetes control plane. Kubernetes version 1.33.3 is required.
    </Note>
  </Tab>
</Tabs>

## Container Registry

<Tabs>
  <Tab title="Virtual Machines">
    You can use any container registry.
  </Tab>

  <Tab title="Azure AKS">
    Azure Container Registry (ACR) is recommended for Azure deployments. Ensure the AKS cluster has pull access to the registry.
  </Tab>
</Tabs>

## Database Requirements

<Tabs>
  <Tab title="Virtual Machines">
    A Microsoft SQL Server or PostgreSQL database with the following configuration is required:

    **Option 1: Microsoft SQL Server**

    | Version         | OS    | CPU cores | RAM, GB | Disk Storage, GB           | Full-Text Search |
    | --------------- | ----- | --------- | ------- | -------------------------- | ---------------- |
    | Enterprise 2022 | Linux | 4         | 4       | Recommended: 400, Min: 200 | Enabled          |

    **Option 2: PostgreSQL**

    | Version | CPU cores | RAM, GB | Disk Storage, GB           |
    | ------- | --------- | ------- | -------------------------- |
    | 14+     | 4         | 4       | Recommended: 400, Min: 200 |

    An external database server must be set up and you must have the appropriate credentials to create and manage the new database.

    The installer requires the IP address of the SQL Server, as well as a username and password to connect to the database.
  </Tab>

  <Tab title="Azure AKS">
    An Azure SQL Database with elastic pool is required:

    | Configuration | Value                   |
    | ------------- | ----------------------- |
    | Service Tier  | General Purpose         |
    | Compute Tier  | Standard-series (Gen 5) |
    | vCores        | 4                       |
    | Max Storage   | 100 GB                  |

    The Azure SQL Database must be accessible from the AKS cluster. You will need the server hostname, database name, and credentials (username and password) for the Vantage installer.

    <Note>
      Ensure the Azure SQL Database firewall rules allow connections from the AKS cluster's outbound IP addresses.
    </Note>
  </Tab>
</Tabs>

## SMTP Server

The server should operate via the SMTP protocol.

The installer requires the IP address/DNS name, port of the SMTP server, a password to connect to the server (if the server requires authentication). The SMTP server must be allowed to send emails to Vantage users.

Configure SMTP with or without authentication in `env_specific.yml`.

<Note>
  We recommend using the option with authentication (**with** login and password).
</Note>

**With authentication (recommended)**

**With** login and password. In this case, the smtp section in the env\_specific.yml file should be defined as follows:

```yaml theme={null}
smtp:
  host: X.X.X.X
  login: email
  password: password
  port: 587
  useSSL: false
  secureSocketOptions: null
```

**Without authentication**

**Without** login and password. In this case, the smtp section in the env\_specific.yml file should be defined as follows:

```yaml theme={null}
mailFrom: email
smtp:
  host: X.X.X.X
  login: null
  password: null
  port: 25
  useSSL: false
  secureSocketOptions: None
```

Do not forget to add the **mailFrom** parameter to the root.

<Note>
  We recommend using the option with authentication (with login and password).
</Note>

## TLS Certificate

You will need either a wildcard or domain-specific certificate.

If your Vantage installation will connect external services using the Custom activity or export to external systems, the certificate should be issued by a public certification authority, for example [https://letsencrypt.org/](https://letsencrypt.org/).

## Static IP Addresses

<Tabs>
  <Tab title="Virtual Machines">
    **1. Kubernetes API Access.** A static IP address that will be used as a virtual IP address to access the Kubernetes API server endpoint for configuring and managing the cluster. The IP address should be defined in the **env\_specific.yml** file as follows. For more information, see Setting up configuration files:

    ```yaml theme={null}
    k8s:
      api:
        ip: X.X.X.X
    ```

    **2. Vantage Services Access.** A static IP address that will be used to access Vantage services over HTTPS. An appropriate **DNS A record** must be created beforehand. The IP address should be defined in the **env\_specific.yml** file as follows. For more information, see [Installation](/vantage/self-hosted/v2.7/installation):

    ```yaml theme={null}
    loadbalancer:
      external_ip: X.X.X.X
    ```
  </Tab>

  <Tab title="Azure AKS">
    An Azure Public IP address (Standard Static IPv4) is required for Vantage services access over HTTPS. This IP address will be used by the ingress controller.

    Create the public IP in the same region as your AKS cluster. An appropriate **DNS A record** must be created pointing to this IP address.
  </Tab>
</Tabs>

## DNS Record for Vantage Access

No specific requirements.

The installer requires a primary domain and a DNS name that will be used to access Vantage. The DNS record must point to the IP address dedicated for access to Vantage.

## Storage Requirements

<Tabs>
  <Tab title="Virtual Machines">
    External storage is an optional requirement for **Without high availability** configuration only. The disk size requirements for Highly available configuration are described in the Performance Guide.

    ABBYY Vantage deploys local storage on hard disks of the provided virtual machines, which speeds up the installation of the product. However, this option may still be affected by unexpected reboots and virtual machine crashes. Since this may result in the loss of the data being stored, using an external storage is recommended when installing.

    ABBYY Vantage lets you define the usage of specific storage types in the ways listed below.

    ### Using Local Storage

    In this case, volumes with ReadWriteOnce POSIX-compatible access will be provisioned locally to the **/opt/local\_path\_provisioner** directory on each Kubernetes node. For ReadWriteMany volume types, Vantage will deploy an **in-cluster nfs-kernel-server** on the first **abbyy\_services** node (the IP of this node is the first in the corresponding block in the **inventory** file). The data of the NFS server will be stored in the **/opt/local\_path\_provisioner** directory, so make sure you have a dedicated volume/disk for this path on the first abbyy\_services node (the first node of this group is defined in the inventory file) of at least 500 GB in size.

    For Highly available configuration, the first abbyy\_services node will also host local persistent volume storage. It will require additional hard drive capacity depending on the processing load. For details on required amounts, see the [Performance Guide](/vantage/self-hosted/v2.7/performance-guide).

    <Warning>
      If local persistent volume storage runs out of space, Vantage may stop working with loss of some data. We recommend that you monitor the free space on your side and set up alerts for space running low, so that you can add more storage in time and prevent data loss.
    </Warning>

    ### Using External NFS Storage

    Vantage installer allows you to automatically configure an NFS storage to be used as Vantage storage for specific services, such as import and export to a shared folder, and storing the data collected by monitoring.

    The section in the `env_specific.yml` file will look like the following:

    ```yaml theme={null}
    k8s:
      storage:
        rwx:
          external:
            enabled: true
            type: "nfs"
            nfs:
              address: <your nfs server IP address>
              path: <your nfs server exported share>
    ```

    For Vantage to work correctly, we recommend the root directory of the NFS server (for example, /opt/nfs) to have the following permissions and owner:

    ```
    drwxr-xr-x 4 65532 65532 4096 Dec 12 09:25 /opt/nfs/
    ```

    Below is a sample directory setting in the `/etc/exports` file for when a Linux machine is used as an NFS server:

    ```
    /opt/nfs *(rw,sync,all_squash,insecure,no_subtree_check,anonuid=65532,anongid=65532)
    ```

    In case another storage type is required to be connected, please refer to the **Defining your own storage classes** section below.

    ### Defining Your Own Storage Classes

    If you want to use non-NFS external storage, follow the steps below:

    1. During the installation process, after creating the Kubernetes cluster (step 4 in [Running the installation scripts](/vantage/self-hosted/v2.7/installation)), deploy the appropriate CSI (container storage interface) drivers and create storage classes for them.
    2. Fill in the `k8s` section in the `env_specific.yml` file using the following code:

    ```yaml theme={null}
    k8s:
      storage:
        rwo:
          class_name: "<rwo posix compatible storage class>"
        rwx:
          class_name: "<read_write_many_storage_class>"
    ```

    3. Continue with the installation.

    <Warning>
      If local persistent volume storage runs out of space, Vantage may stop working with data loss. Monitor free space and set up alerts.
    </Warning>
  </Tab>

  <Tab title="Azure AKS">
    Azure Storage Accounts are required for Vantage data storage. Create the following storage accounts in the same region as your AKS cluster:

    | Storage Account Purpose | Performance Tier    | Access Tier | Minimum Size |
    | ----------------------- | ------------------- | ----------- | ------------ |
    | Skills                  | Premium             | Hot         | -            |
    | Processing              | Standard            | Hot         | -            |
    | Temporary               | Standard            | Hot         | -            |
    | Shared Folders          | Premium FileStorage | -           | 100 GB       |
    | Archive                 | Standard            | Cool        | -            |

    <Note>
      All storage accounts must be accessible from the AKS cluster. Configure private endpoints or service endpoints as needed for your network security requirements.
    </Note>

    The Vantage installer will configure the appropriate Kubernetes storage classes to use these Azure Storage Accounts.
  </Tab>
</Tabs>

## Redis Cluster (Azure AKS Only)

<Note>
  A Redis cluster is **required only for Azure AKS Highly Available configuration**. This is not required for Virtual Machine deployments or non-HA Azure deployments.
</Note>

For Azure AKS Highly Available deployments, an external Redis cluster is required with the following configuration:

| Configuration    | Requirement            |
| ---------------- | ---------------------- |
| Redis Version    | 6.2 or later           |
| Number of Nodes  | 6 or more              |
| RAM per Node     | 4 GB (minimum)         |
| Cluster Mode     | Enabled                |
| Cluster Password | Required               |
| SSH Port         | 22 (for configuration) |

The following options must be set in `redis.conf`:

```
appendonly yes
cluster-config-file nodes-6379.conf
cluster-enabled yes
cluster-node-timeout 5000
cluster-require-full-coverage no
maxclients 10000
maxmemory 2048mb
maxmemory-policy noeviction
repl-backlog-size 256mb
repl-ping-slave-period 5
save ""
slave-serve-stale-data yes
stop-writes-on-bgsave-error no
supervised auto
masterauth <password>
requirepass <password>
```

<Note>
  The `maxmemory` value should be set to half of the available memory on each Redis node. Replace `<password>` with your cluster password.
</Note>

<Warning>
  Azure Cache for Redis is **not currently supported**. You must deploy Redis on virtual machines outside the AKS cluster. Azure Cache for Redis support is planned for a future release.
</Warning>

## Related Documentation

* [Azure Infrastructure Creation](/vantage/self-hosted/v2.7/azure-infrastructure) - Step-by-step Azure resource creation using ARM templates
* [FIPS Compliance](/vantage/self-hosted/v2.7/fips-compliance) - FIPS 140-2 compliance requirements for government deployments
* [Installation](/vantage/self-hosted/v2.7/installation) - Complete installation guide
* [Performance Guide](/vantage/self-hosted/v2.7/performance-guide) - Scaling and performance tuning
