Setup with Docker
The most straightforward process of setting up all required elements is using docker compose.
The required services are:
A Graph-Node that orchestrates all other services to achieve indexing and data retrieval
An IPFS node to store uploaded subgraphs and provide files, if necessary
Postgres DB to store the indexed data
VeChainThorNode to provide access to Blockchain data
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:
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
Was this helpful?