Tested on Ubuntu 20.04.3 LTS
Prerequisites:
docker
docker-compose
DNS A-Record pointing to your server
Wireguard-Server: Paste wireguard wg0.conf from wireguard-server to wireguard/config/wg0.conf
Usage
git clone https://github.com/cventastic/POKT_DOKT.git
cd POKT_DOKT
git reset --hard origin/main && git pull && ./util/prepare.sh
This compose file needs the following env-vars for example in a .env file inside the repo root-folder:
# Private Key for Pocket-Account mainnet can be generated here (https://wallet.pokt.network/)
POCKET_CORE_KEY=
POCKET_CORE_PASSPHRASE=
# Private Key for Pocket-Account testnet can be generated here (https://wallet.testnet.pokt.network/)
POCKET_CORE_KEY_TEST=
POCKET_CORE_PASSPHRASE_TEST=
# POCKET SEEDS (https://docs.pokt.network/home/resources/references/seeds)
POCKET_MAIN_SEEDS=
POCKET_TEST_SEEDS=
# SNAPSHOT (https://github.com/pokt-network/pocket-snapshots)
POCKET_SNAPSHOT=""
# LETSENCRYPT
DOMAIN=
MAIL=
SERVERPORT=
PUID=
PGID=
# IP WHITELIST FOR TRAFFIC
WHITELIST=
!!! I added a simple test-script (util/test_relay.sh) to see if the (geth)chains are synced. Dont try to relay before they are.
To test if relaying chains works, pokt-testnet-service and pokt-mainnet service have to be provided with the following command parameters:
command: pocket start --simulateRelay
If you want to activly relay. You also have to Stake!
Testnet-Faucet: (https://faucet.pokt.network/)
How to stake: https://docs.pokt.network/home/paths/node-runner#stake-the-validator
EXAMPLES
POKT QUERY for simulate-relay mode:
Pockt-Testnet:
curl -X POST --data '{"relay_network_id":"0002","payload":{"data":"{}","method":"POST","path":"v1/query/height","headers":{}}}' http://localhost:8082/v1/client/sim
Pocket-Mainnet:
curl -X POST --data '{"relay_network_id":"0002","payload":{"data":"{}","method":"POST","path":"v1/query/height","headers":{}}}' http://localhost:8081/v1/client/sim
GETH QUERY (from whitelisted servers e.g pokt-test) for simulate-relay mode:
Pocket-Testnet:
curl -X POST --data '{"relay_network_id":"0020","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"0x1a8c807a6E4F624fCab01FEBf76a541d31B8345A\", \"latest\"],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8082/v1/client/sim
curl -v -X POST --data '{"relay_network_id":"0020","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_syncing\",\"params\":[],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8082/v1/client/sim
Pocket-Mainnet:
curl -X POST --data '{"relay_network_id":"0020","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"0x1a8c807a6E4F624fCab01FEBf76a541d31B8345A\", \"latest\"],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8081/v1/client/sim
curl -v -X POST --data '{"relay_network_id":"0020","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_syncing\",\"params\":[],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8081/v1/client/sim
POKT QUERY im staked mode:
curl -X POST https://$RELAYDOMAIN/v1/query/nodes
curl -X POST https://$RLEAYDOMAIN/v1/query/state
STANDARD GETH QUERY (from whitelistet server)
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' https://$RPCNODE/goerli
HARMONY QUERY
curl --location --request POST 'https://$RPCNODE/' --header 'Content-Type: application/json' --data-raw '{"jsonrpc": "2.0", "method": "hmy_latestHeader", "params": [], "id": 1}'
SSL
I you want to test SSL comment in:
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
Check if there is a file here /traefic/letsencrypt/acme.json if yes, you have to delete it.
Otherwise traefik will not issue the certificate for an existing domain.
TODO !!!!
General Monitoring
LOGFILES
Bootstrapping from Snapshots
Link-Timezone into containers.
AVALANCHE:
- Archive?
- Monitoring https://docs.avax.network/build/tools/dashboards/README
Notes
Monitoring
Telegram get group ids the bot is in:
curl -X POST https://api.telegram.org/bot$TELEGRAM_API_TOKEN/getUpdates