How to Run an Indexer ?
Recommended Hardware Requirement
Operating system: 64-bit Linux (i.e. Ubuntu 20.04 LTS Server or Desktop)
Instance-type: m6a.8xlarge (32 VCPU and 128 GiB Memory)
Storage: 4000 GiB root volume
Security Ports to be Open :
IP version
Type
Protocol
Port range
Source
IPv4
Custom TCP
TCP
3000
0.0.0.0/0
IPv6
Custom TCP
TCP
8030
::/0
IPv4
HTTPS
TCP
443
0.0.0.0/0
IPv4
Custom TCP
TCP
7300
0.0.0.0/0
IPv4
Custom TCP
TCP
8030
0.0.0.0/0
IPv6
Custom TCP
TCP
7600
::/0
IPv6
HTTPS
TCP
443
::/0
IPv4
HTTP
TCP
80
0.0.0.0/0
IPv4
PostgreSQL
TCP
5432
0.0.0.0/0
IPv6
Custom TCP
TCP
8000
::/0
IPv4
Custom TCP
TCP
9090 - 9091
0.0.0.0/0
IPv4
Custom TCP
TCP
8040
0.0.0.0/0
IPv4
Custom TCP
TCP
8000 - 8002
0.0.0.0/0
IPv4
Custom TCP
TCP
8020
0.0.0.0/0
IPv6
SSH
TCP
22
::/0
IPv4
Custom TCP
TCP
8001
0.0.0.0/0
IPv4
SSH
TCP
22
0.0.0.0/0
IPv6
Custom TCP
TCP
7300
::/0
IPv4
Custom TCP
TCP
7600
0.0.0.0/0
IPv4
Custom TCP
TCP
8000
0.0.0.0/0
IPv6
HTTP
TCP
80
::/0
IPv6
Custom TCP
TCP
8040
::/0
Public IP : You need of public IP so need to Configure Network Load Balancer with two seperate target groups and with port no 443 and port no 80 . So From there get public IP.
Ethereum Mainnet Node Hardware Requirement
Operating system: 64-bit Linux (i.e. Ubuntu 20.04 LTS Server or Desktop)
Instance-type: m6a (32 VCPU and 128 GiB Memory)
Storage: 20 GiB root volume and 4000 GiB External EBS Volume
Security Ports to be Open :
Type
Protocol
Port range
Source
Description
IPv4
Custom TCP
TCP
30303
0.0.0.0/0
IPv4
Custom TCP
TCP
3500
0.0.0.0/0
IPv4
Custom UDP
UDP
30303
0.0.0.0/0
IPv4
Custom TCP
TCP
8545
0.0.0.0/0
IPv4
Custom TCP
TCP
13000
0.0.0.0/0
IPv4
SSH
TCP
22
0.0.0.0/0
IPv4
Custom TCP
TCP
9090
0.0.0.0/0
IPv4
Custom TCP
TCP
3000
0.0.0.0/0
IPv4
Custom UDP
UDP
12000
0.0.0.0/0
Graph Node setup from scratch:
Have a look on documentation flow:
Graph Protocol Testnet Docker Compose https://github.com/StakeSquid/graphprotocol-testnet-docker/blob/master/README.md#graph-protocol-testnet-docker-compose
Install a metamask wallet extension
Connect your wallet to eth Mainnet network (network might change later)
Now get 100k GRTs
Now go to etherscan and get the GRT token address and import that in your metamask wallet.
Stake on the Network
In order to become an indexer on the Graph Protocol Network, you'll have to stake a minimum of 100,000 GRT.
This can easily be done via the Web UI, by going to the Graph Explorer.
Login with Metamask on the Wallet that holds your GRT
Go to your Profile, then switch to the "Indexing" Tab and hit "Stake"
3. Stake the amount of GRT that you desire, then you're all done!
Set your Operator:
The Operator is a wallet address that is entirely separate from the address which you staked your GRT from. This Operator wallet will be filled with ETH, and will be used to send transactions (such as allocations) to the network, while keeping your Staked GRT safe in case of an attack on your infrastructure. It is highly recommended for you to use a new wallet, generated from a new mnemonic phrase.
For this, follow the instructions here first, then head back for the rest.
Okay, assuming that you followed the instructions and you have your new Operator wallet at hand, lets go and link it up with the wallet that you used to stake your GRT.
Login with Metamask on the wallet that you used to stake your GRT
Click the Profile dropdown button, and go to "Settings", and then to the "Operators" tab
Click the Plus (+) button and add your operator public address there
Submit the transaction, then you're done
Optional Software
Install from scratch
Run the following commands to clone the repository and set everything up:
Get Domain
Create a mnemonic
You need a wallet with a seed phrase that is registered as your operator wallet. This wallet will be the one that makes transactions on behalf of your main wallet (which holds and stakes the GRT).
The operator wallet has limited functionality, and it's recommended to be used for security reasons.
You need a 12-word, or 15-word mnemonic phrase in order for it to work.
To make yourself a mnemonic eth wallet you can go to this website, select ETH from the dropdown and press generate.
You get a seed phrase in the input field labeled BIP39 Mnemonic.
You can find your address, public key and private key in the first row of the table if you scroll down the page in the section with the heading "Derived Addresses".
Make sure you save the mnemonic, private key and the wallet address somewhere safe.
If you need, you can import the wallet using the private key into Metamask
Warning
You have to be very attentive when youâre creating a mnemonic phrase
From the mentioned website if it pop-ups with a INVALID-ROOT when you select ETH then youâve to do it again and get a phrase with a VALID-ROOT.
Configure Environment Variable
Edit the file called start
and add your values to the following env:
Containers:
Graph Node (query node)
Graph Node (index node)
Indexer Agent
Indexer Service
Indexer CLI
Postgres Database for the index/query nodes
Postgres Database for the agent/service nodes
Prometheus (metrics database)
http://<host-ip>:9090
Prometheus-Pushgateway (push acceptor for ephemeral and batch jobs)
http://<host-ip>:9091
AlertManager (alerts management)
http://<host-ip>:9093
Grafana (visualize metrics)
http://<host-ip>:3000
NodeExporter (host metrics collector)
cAdvisor (containers metrics collector)
Caddy (reverse proxy and basic auth provider for prometheus and alertmanager)
Start
To start, all you need to do is to:
Be aware that initially it takes several minutes to download and run all the containers (especially the cli container, that one takes a while to build), so be patient. :)
Subsequent restarts will be much faster.
In case something goes wrong, find the problem, edit the variables, and add --force-recreate
at the end of the command, plus the container you want to recreate:
Or to recreate the entire stack:
Verify that it runs properly
To verify that everything is up and running, you need to:
And look for containers that are crash looping - you will notice restarting
and a countdown - that means those containers are not working properly.
Last updated