Skip to content

Configuring ENSIndexer

ENSIndexer’s behavior can be configured through environment variables.

.env.local.example
# RPC configuration
# For the RPC URL of each chain, follow the format: RPC_URL_{chainId}={rpcUrl}
RPC_URL_1=https://eth.drpc.org
RPC_URL_8453=https://base.drpc.org
RPC_URL_59144=https://linea.drpc.org
# For the RPC rate limits of each chain, follow the format:
# RPC_REQUEST_RATE_LIMIT_{chainId}={rateLimitInRequestsPerSecond}
# The rate limit is the maximum number of requests per second that can be made
# to the RPC endpoint. For public RPC endpoints, it is recommended to set
# a rate limit to low values (i.e. below 30 rps) to avoid being rate limited.
# For private RPC endpoints, the rate limit can be set to higher values,
# depending on the capacity of the endpoint. For example, 500 rps.
# If no rate limit is set for a given chainId, the DEFAULT_RPC_RATE_LIMIT value
# will be applied.
RPC_REQUEST_RATE_LIMIT_1=50
RPC_REQUEST_RATE_LIMIT_8453=20
RPC_REQUEST_RATE_LIMIT_59144=20
# Database configuration
# This is a namespace for the tables that the indexer will create to store indexed data.
# It should be a string that is unique to the running indexer instance.
#
# Keeping the database schema unique to the indexer instance is important to
# 1) speed up indexing after a restart
# 2) prevent data corruption from multiple indexer app instances writing state
# concurrently to the same db schema
#
# No two indexer instances can use the same database schema at the same time.
#
# Read more about database schema rules here:
# https://ponder.sh/docs/api-reference/database#database-schema-rules
DATABASE_SCHEMA=public
# This is the connection string for the database that the indexer will use to store data.
# It should be in the format of `postgresql://<username>:<password>@<host>:<port>/<database>`
DATABASE_URL=postgresql://dbuser:abcd1234@localhost:5432/my_database
# Deployment Configuration
# Identify which ENS Deployment to target (see `@ensnode/ens-deployments` for available deployments)
ENS_DEPLOYMENT_CHAIN=mainnet
# Plugin Configuration
# Identify which indexer plugins to activate (see `src/plugins` for available plugins)
# This is a comma separated list of one or more available plugin names (case-sensitive).
ACTIVE_PLUGINS=eth,base,linea
# Unknown label healing
# This is the URL of the ENSRainbow server that ENSIndexer will use to heal unknown labels.
# If this is not set, DEFAULT_ENSRAINBOW_URL will be used, however,
# the best indexing performance requires a colocated deployments of ENSIndexer and
# ENSRainbow services to minimize latency. For example, both services should
# communicate over the same local network.
# Read more about ENSRainbow here:
# https://ensrainbow.io
ENSRAINBOW_URL=https://api.ensrainbow.io
# The ENSIndexer public service URL
# When the root route `/` of ENSIndexer receives a request, ENSIndexer redirects to the configured ENSADMIN_URL with an instruction for that ENSAdmin instance to connect back to this provided URL for querying state about the ENSNode instance
ENSNODE_PUBLIC_URL=http://localhost:42069
# The ENSAdmin service URL
# When the root route `/` of ENSIndexer receives a request, ENSIndexer redirects to this provided ENSAdmin URL with an instruction for that ENSAdmin instance to connect back to the configured ENSNODE_PUBLIC_URL
# If this is not set, DEFAULT_ENSADMIN_URL will be used to provide easy access to an ENSAdmin UI.
ENSADMIN_URL=https://admin.ensnode.io