Horizon is a central component of the Stellar platform: it provides 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 by the average application relative to the performance-oriented data representations used by Stellar Core.
This guide describes how to administer a production Horizon instance (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?
Running Horizon within your own infrastructure provides a number of benefits. You can:
- Have full operational control without dependency on the Stellar Development Foundation for network data and transaction submission to networks;
- Run multiple instances for redundancy and scalability.