Setup with Docker

The most straightforward process of setting up all required elements is using docker compose.

The required services are:

  1. A Graph-Node that orchestrates all other services to achieve indexing and data retrieval

  2. An IPFS node to store uploaded subgraphs and provide files, if necessary

  3. Postgres DB to store the indexed data

  4. VeChainThorNode to provide access to Blockchain data

  5. RPC-Proxy that adds RPC compatibility on top of the VeChainThorNode

The docker-compose.yml combining all services is:

services:
  rpc-proxy:
    image: ifavo/vet-rpc:latest
    platform: linux/amd64
    container_name: rpc-proxy
    ports:
      - "8545:8545"
    environment:
      - NODE_URL=https://mainnet.vechain.org
  graph-node:
    platform: linux/amd64
    image: graphprotocol/graph-node:v0.35.1
    ports:
      - '8000:8000'
      - '8001:8001'
      - '8020:8020'
      - '8030:8030'
      - '8040:8040'
    depends_on:
      - ipfs
      - postgres
      - rpc-proxy
    environment:
      postgres_host: postgres
      postgres_user: graph-node
      postgres_pass: let-me-in
      postgres_db: graph-node
      ipfs: 'ipfs:5001'
      ethereum: 'mainnet:http://rpc-proxy:8545'
      GRAPH_LOG: info
      ETHEREUM_POLLING_INTERVAL: 1000
      GRAPH_ETHEREUM_MAX_BLOCK_RANGE_SIZE: 100
  ipfs:
    platform: linux/amd64
    image: ipfs/kubo:v0.29.0
    ports:
      - '5001:5001'
    volumes:
      - ./data/ipfs:/data/ipfs
  postgres:
    image: postgres:14
    ports:
      - '5432:5432'
    command:
      [
        "postgres",
        "-cshared_preload_libraries=pg_stat_statements",
        "-cmax_connections=200"
      ]
    environment:
      POSTGRES_USER: graph-node
      POSTGRES_PASSWORD: let-me-in
      POSTGRES_DB: graph-node
      PGDATA: "/var/lib/postgresql/data"
      POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C"
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

If save and run it, you will instantly start indexing VeChain and track its latest status:

$ docker compose up -d
[+] Running 5/5
 ✔ Network example_default         Created                                                                                                                                                                                                                                                                                                                                0.0s
 ✔ Container example-postgres-1    Started                                                                                                                                                                                                                                                                                                                                3.8s
 ✔ Container example-ipfs-1        Started                                                                                                                                                                                                                                                                                                                                3.8s
 ✔ Container rpc-proxy          Started                                                                                                                                                                                                                                                                                                                                3.8s
  Container example-graph-node-1  Started

The following services will be available:

URLServiceDescription

http://localhost:8000

GraphQL Service

Web application to build queries with an interface

http://localhost:8001

GraphQL WebSocket Service

WebSocket connectivity

http://localhost:8020

Admin API

Provides access to manage Subgraphs, should never be made public

http://localhost:8030/graphql

Admin GraphQL Service

Web application to query subgraph details

http://localhost:5001

IPFS

Access to the IPFS Node

postgresql://graph-node:let-me-in@localhost:5432/graph-node

Postgres

Database access

http://localhost:8545

RPC

RPC Interface to VeChain

Data is stored in data/ directory and persists between restarts.

Last updated