Skip to content
Docs
Submit bugs here.
Docs

These new docs are in beta. Please submit bugs to GitHub issues.


Overview

Horizon is responsible for providing an HTTP API to data in the Stellar network. It ingests and re-serves the data produced by the Stellar network in a form that is easier to consume than the performance-oriented data representations used by Stellar Core.

This guide describes how to administer a production Horizon 2.0+ instance (you can refer to the Developers’ Blog for some background on the performance and architectural improvements of this major version bump). For information about developing on the Horizon codebase, check out the Development Guide.

Before we begin, it’s worth reiterating the sentiment echoed in the Run a Core Node guide: we do not endorse running Horizon backed by a standalone Stellar Core instance, and especially not by a validating Stellar-Core. These are two separate concerns, and decoupling them is important for both reliability and performance. Horizon instead manages its own, pared-down version of Stellar-Core optimized for its own subset of needs (we’ll refer to this as a “Captive Core” instance).

Why Run Horizon?

You don’t need to run your own Horizon instance to build on Stellar: the Stellar Development Foundation runs two Horizon servers, one for the public network and one for the test network: https://horizon.stellar.org and https://horizon-testnet.stellar.org. These servers are free for anyone to use and should be fine for development and small-scale projects. They are, however, rate limited, and we don’t recommended using them for production services that need strong reliability.

Running Horizon within your own infrastructure provides a number of benefits. You can:

  • Disable request rate limiting for guaranteed network access
  • Have full operational control without dependency on the Stellar Development Foundation
  • Run multiple instances for redundancy and scalability

Last updated May. 06, 2021

Next Up: Prerequisites
Page Outline