Skip to main content

Prerequisites

The Horizon service is responsible for synchronizing with the Stellar network and processing ledger data. To understand the scope of Horizon's services, please read the configuring section before you move on to the prerequisites for computation.

The Horizon service can be installed on bare metal or a virtual machine. It is natively supported on both Linux and Windows operating systems.

Single Instance Deployment Model

For a basic setup using the Single Instance Deployment model, you will need a sum of two distinct compute profiles:

  • One for hosting the Horizon service
  • Another for hosting the PostgreSQL server

Hardware requirements

The minimum hardware specifications to effectively run Horizon are as follows:

Horizon Compute Instance:

Node TypeCPURAMDiskAWS SKUGoogle Cloud SKU
Horizon API Service4 vCPU16 GB100 GB SSD >= 3K IOPS[c5d.xlarge]n4-standard-4

* Assuming a 30-day retention window for data storage.

PostgreSQL Database Server Compute Instance:

Node TypeCPURAMDiskAWS SKUGoogle Cloud SKU
Horizon PostgreSQL4 vCPU32 GB2 TB* SSD (NVMe or Direct Attached Storage) >= 7K IOPSi4g.xlargec3-highmem-8

* Assuming a 30-day retention window for data storage.

Please note that a minimum of PostgreSQL version 12 is required.

These specifications assume a 30-day retention window for data storage. For a longer retention window, the system requirements will be higher. For more information about data ingestion, history retention, and managing storage, check the ingestion section.

Multiple Instance Deployment

To achieve high availability, redundancy, and high throughput, refer to the scaling documentation. It provides a detailed overview of several different deployment strategies you can employ, depending on the SLA you need your Horizon instance to achieve.

Network Access

  • Ensure that the Horizon instance can establish a connection with the PostgreSQL database instance. The default port for PostgreSQL is 5432.

  • A stable and fast network connection with the Internet is required for any Horizon instance running the ingestion role. This is to ensure it has efficient outbound connectivity to remote hosts in the quorum set and archive urls for the chosen Stellar network. During ingestion, the Horizon instance communicates with these hosts, receiving network transaction data through its local captive core sub-process.

note

Hardware requirements may increase as the Stellar network grows and/or if you're sharing resources or using custom configs.