quick and easy tool for running and monitoring an avalanche validator
SNOWPLOW IS CONSIDERED ALPHA SOFTWARE. USE AT YOUR OWN RISK!
When setting up my own avalanche validator, I couldn't find any simple tools to backup my validator staking credentials or send simple text message alerts if the validator went haywire. So, I made my own snowplow to help tame the avalanche...zing.
To install snowplow
, you must first install golang
(to compile the code).
I don't plan on hosting any pre-built binaries because I think it is important
that the users of this tool compile their own code (for their own safety).
git clone https://github.com/patrick-ogrady/snowplow;
make install;
For all of the following operations, snowplow
assumes your staking
credentials are kept in .avalanchego/staking
(relative directory). Note, this
is different that avalanchego
which assumes these credentials are in
$HOME/.avalanchego/staking
.
This command will generate new staking credentials in the
.avalanchego/staking
folder, if staking credentials do not yet exist in that
folder.
snowplow staking create
This command will print the NodeID associated with the staking credentials in
the .avalanchego/staking
folder, if they exist.
snowplow staking view
This command encrypts and backs up your staking credentials to the Google Cloud Storage bucket of your choosing.
export GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
snowplow staking backup [bucket]
Before running this command, make sure to export your
GOOGLE_APPLICATION_CREDENTIALS
in your terminal. You can learn more about
Google Cloud's authentication mechanism
here.
This command restores and decrypts the staking credentials of the validator of your choosing from the Google Cloud Storage bucket of your choosing.
export GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
snowplow staking restore [bucket] [node ID]
Before running this command, make sure to export your
GOOGLE_APPLICATION_CREDENTIALS
in your terminal. You can learn more about
Google Cloud's authentication mechanism
here.
This command backs up your validator db to the Google Cloud Storage bucket of your choosing.
export GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
snowplow db backup [bucket] [name]
Before running this command, make sure to export your
GOOGLE_APPLICATION_CREDENTIALS
in your terminal. You can learn more about
Google Cloud's authentication mechanism
here.
This command restores the validator db of your choosing from the Google Cloud Storage bucket of your choosing.
export GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
snowplow db restore [bucket] [name]
Before running this command, make sure to export your
GOOGLE_APPLICATION_CREDENTIALS
in your terminal. You can learn more about
Google Cloud's authentication mechanism
here.
This sequence of commands sets up an Ubuntu 20.04 LTS OS on Google Cloud to run an avalanche validator.
git clone https://github.com/patrick-ogrady/snowplow;
cd snowplow;
./scripts/setup.sh;
export PATH=$PATH:~/go/bin;
This command builds a Docker image containing avalanchego
and
the health monitoring mechanism from snowplow
.
make docker-build
To use Docker on Google Cloud, you may need to prepend sudo
to this command.
This command starts a Docker container that starts avalanchego
and
the health monitoring mechanism from snowplow
. Making a request
to port 8080
will return a 200
status when the validator is considered
healthy.
make run-mainnet
To use Docker on Google Cloud, you may need to prepend sudo
to this command.
By default, snowplow
will upload relevant metrics to Google Cloud
Monitoring when deployed on Google Cloud (no config file needed).
This command builds a Docker image containing avalanchego
and
the health monitoring mechanism from snowplow
.
make docker-build
This command starts a Docker container that starts avalanchego
and
the health monitoring mechanism from snowplow
. Making a request
to port 8080
will return a 200
status when the validator is considered
healthy.
make run-mainnet
To enable text message alerts from Twilio, you must
populate a yaml
file at .avalanchego/.snowplow.yaml
(in the same directory
containing your staking keys).
twilio:
accountSid: "<accountSid>"
authToken: "<authToken>"
sender: "<sender phone number>"
recipient: "<your phone number>"