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 Type | CPU | RAM | Disk | AWS SKU | Google Cloud SKU |
---|---|---|---|---|---|
Horizon API Service | 4 vCPU | 16 GB | 100 GB SSD >= 3K IOPS | [c5d.xlarge] | n4-standard-4 |
* Assuming a 30-day retention window for data storage.
PostgreSQL Database Server Compute Instance:
Node Type | CPU | RAM | Disk | AWS SKU | Google Cloud SKU |
---|---|---|---|---|---|
Horizon PostgreSQL | 4 vCPU | 32 GB | 2 TB* SSD (NVMe or Direct Attached Storage) >= 7K IOPS | i4g.xlarge | c3-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.
Hardware requirements may increase as the Stellar network grows and/or if you're sharing resources or using custom configs.