Skip to content

ENSNode Development and Contributions

  • Git
  • Postgres 17 with the pg_trgm extension available for installation (ships with stock Postgres contrib; ENSIndexer runs CREATE EXTENSION IF NOT EXISTS pg_trgm at startup to back partial-name search indexes)
  • Node.js
    • It’s recommended you install Node.js through nvm or asdf.
    • see .nvmrc and .tool-versions for the specific version of Node.js
  • pnpm

Clone this repository:

Terminal window
git clone git@github.com:namehash/ensnode.git
cd ensnode
Terminal window
pnpm install

Ensure ENSDb is running in the background, providing its connection details to ENSIndexer via ENSDB_URL.

Terminal window
# from monorepo root
pnpm run -F @ensnode/ensrainbow serve
# or from apps/ensrainbow
pnpm run serve
Terminal window
# from monorepo root
pnpm run -F ensindexer dev
# or from apps/ensindexer
pnpm run dev
Terminal window
# from monorepo root
pnpm run -F ensapi dev
# or from apps/ensapi
pnpm run dev
Terminal window
cd apps/ensadmin
cp .env.local.example .env.local
Terminal window
# from monorepo root
pnpm run -F ensadmin dev
# or from apps/ensadmin
pnpm run dev

You can use Docker Compose to set up the ENSNode suite, along with its dependencies.

Before you can use Docker Compose, ensure you have the following installed on your machine:

Before running docker compose the images must be built with the latest changes: see the Building Docker Images guide.

If you make changes in the application code and wish to run those updates, you must build the relevant Docker container again.

For local development, use the devnet stack — no environment setup required:

Terminal window
docker compose -f docker/docker-compose.devnet.yml up -d

For mainnet/sepolia, first configure your environment:

Terminal window
cp docker/envs/.env.docker.example docker/envs/.env.docker.local

Edit docker/envs/.env.docker.local to set NAMESPACE, PLUGINS, and your RPC endpoints, then run:

Terminal window
docker compose -f docker/docker-compose.yml up -d

For all available commands and configuration options, see the Deploying with Docker guide and docker/README.md.

To stop the running applications, you can press Ctrl + C in the terminal where Docker Compose is running. To remove the containers and networks:

Terminal window
docker compose -f docker/docker-compose.yml down