Hydra Indexer is a daemon that ingests raw substrate data such as events and extrinsics from a substrate chain and saves it into a Postgres database. It is typically used in conjunction with Hydra Indexer Gateway providing a GraphQL API interface.
The indexer exits if an unrecoverable error occurs. It is therefore advisable to run the indexer with a process manager, such as PM2 or Docker.
The indexer is set up using the following environment variables
Substrate API endpoint to connect
Redis instance URI
Path to a JSON type definition with custom Substrate types
Block height to start indexing. Ignored if the database already contains indexed blocks
For setting up the database and running the migrations, run yarn db:bootstrap. Make sure the environment variables DB_* are set.
For starting the indexer, run yarn start:prod.
There are pre-built runnable docker images in joystream/hydra-indexer docker repo. The default command is yarn start:prod.
First, bootstrap the database:
docker run -e DB_HOST=... -e DB_PORT=... -e DB_NAME=... -e DB_PASS=... -e DB_USER=... joystream/hydra-indexer sh -c 'yarn db:bootstrap'
Then run the indexer (make sure that all the required environment variables are set)
docker run -e ... joystream/hydra-indexer
Advanced environment variables
Some optional environment variables are available for fine-tuning.
TTL for processed blocks in the Redis cache
TTL for the indexer head block entry
Number of concurrent workers fetching the blocks
Number of attempts fetching each a block before throwing an error. Set to -1 for indefinite attempts
1000 * 60 * 5
Timeout in (milliseconds) for API calls
60 * 10 * 1000
Panic if no blockchain blocks have been received within this time