Installation

Minimum Requirements

Setup Hosting Server

All cloud services are supported for your node setup (see a reference example on AWS here).

Make sure you setup a NEW server.

When you setup your firewall, make sure to expose the ports that you set under "5. Set Configuration File" (Default are 12001 UDP and 13001 TCP).

SSV node setup is also available using eth-docker and Stereum Launcher.

Login with SSH

cd ./{path to the folder to which the key pair file was downloaded}

chmod 400 {key pair file name}

ssh -i {key pair file name} ubuntu@{instance public IP you took from AWS}

Installation Script

sudo su

$ wget https://raw.githubusercontent.com/bloxapp/ssv/main/install.sh

chmod +x install.sh

./install.sh

Generate Operator Keys

Your Operator Public Key (PK) and Secret key (SK) are generated with this command.

Your PK is required when registering your operator to the network.

docker run -d --name=ssv_node_op_key -it 'bloxstaking/ssv-node:latest' \
/go/bin/ssvnode generate-operator-keys && docker logs ssv_node_op_key --follow \
&& docker stop ssv_node_op_key && docker rm ssv_node_op_key

Command output:

LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMDswYVdEK3RibndzYVdLYjF3UnEKM0xheW8rL1dSeGh3aVJ0aXFsL0dmZGozaHY0Unh5K1FwVzh6666RK1dJNmJ1VFc4bzN2ZmsydDMwNUlQRTdCVApZR3ZoS666MFNoYmlHVXVQcXpxQnVSTjB6OTUxV3VlcEJwV3RkeTdUaDVsT0w1cTQ3REFqbFFDdi95NlJLZzM5Ck9nTXZnZ1BaNTRNWHJZcFdINlJqa3hoVUxvWXQxTEVBN05pU3JHU3JqdGxCTlZiRHR5d666WFp0SnNkM2tjbTMKNkw0anZHd2I0RjhqTmlzSUU5eWFLd2J1SmV6dHpGdjY1YXRiV25hVFdzbmg1bDNrZ05uMlJLWktqZ1pycmRGdApuT2t3Vmh6M2JDRTFUZWpua1kwLzN4QTBIWjVONC9IUUF1Rit2TllYb040aDBicnVTdlVmZTBLTndvMDNFQ3l3Ckl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0U

Please make sure to store and backup your operator secret key in a safe place. Do not share this key with anyone.

Create Configuration File

Fill all the placeholders (e.g. <ETH 2.0 node> or <db folder>) with actual values, and run the command below to create a config.yaml file.

$ yq n db.Path "<db folder>" | tee config.yaml \
  && yq w -i config.yaml eth2.Network "prater" \
  && yq w -i config.yaml eth2.BeaconNodeAddr "<ETH 2.0 node>" \
  && yq w -i config.yaml eth1.ETH1Addr "<ETH1 node WebSocket address>" \
  && yq w -i config.yaml OperatorPrivateKey "<private key of the operator>"

Please make sure your ETH 1 endpoint is communicating over websocket and not over HTTPS in order to support subscriptions and notifications

Debug Configuration

In order to see debug level logs, add the corresponding section to the config.yaml by running:

$ yq w -i config.yaml global.LogLevel "debug"

Metrics Configuration

In order to enable metrics, the corresponding config should be in place:

$ yq w -i config.yaml MetricsAPIPort "15000"

Start Node in Docker

Run the docker image in the same folder you created the config.yaml:

docker run -d --restart unless-stopped --name=ssv_node -e \
CONFIG_PATH=./config.yaml -p 13001:13001 -p 12001:12001 -v \
$(pwd)/config.yaml:/config.yaml -v $(pwd):/data -it \
'bloxstaking/ssv-node:latest' make BUILD_PATH=/go/bin/ssvnode start-node \ 
&& docker logs ssv_node --follow

Update SSV Node Image

Kill running container and pull the latest image or a specific version

$ docker rm -f ssv_node && docker pull bloxstaking/ssv-node:latest

Last updated