This guide walks you through setting up a Shibarium (or Puppynet) validator node using Ansible. Follow each step in order for a successful deployment. For system requirements, see the Validator Node System Requirements.
Prerequisites
- Three machines:
- Local machine (runs Ansible playbook)
- Remote Sentry node
- Remote Validator node
- Local machine:
- Ansible installed
- Python 3.x installed
- Remote machines:
- Go must not be installed
- Your local machine’s SSH public key added for Ansible access
Always set up the Sentry node before the Validator node. Follow the exact sequence to avoid issues.
Overview: Sequence of Actions
1
Prepare all three machines
Ensure your local, sentry, and validator machines are ready and meet all prerequisites.
2
Set up the Sentry node with Ansible
Clone the node-ansible repo and configure inventory.
3
Set up the Validator node with Ansible
Run the playbook for the validator node after the sentry is ready.
4
Configure the Sentry node
Edit Heimdall and Bor configs as required.
5
Start the Sentry node
Start Heimdall and Bor services on the sentry node.
6
Configure the Validator node
Edit Heimdall and Bor configs as required.
7
Set the owner and signer keys
Generate and configure keys for validator operation.
8
Start the Validator node
Start Heimdall and Bor services on the validator node.
9
Check node health with the community
Verify your node is healthy and connected.
Set Up the Sentry Node
- Clone the node-ansible repository:
- Add IPs to inventory.yml:
- Check remote sentry machine is reachable:
Output should include
"ping": "pong"
. - Test run of sentry node setup:
- Run the sentry node setup with sudo:
- If you need to start over:
Set Up the Validator Node
- Check remote validator machine is reachable:
- Test run of validator node setup:
- Run the validator node setup with sudo:
- If you need to start over:
Configure the Sentry Node
- Edit Heimdall config:
moniker = "my-full-node"
pex = true
private_peer_ids
= node ID of validator Heimdallseeds
(for Shibarium only): node ID, IP, port
- Check sync status:
catching_up: true
means syncing,false
means fully synced
- Start Bor service:
Configure the Validator Node
- Edit Heimdall config:
moniker = "my-validator-node"
pex = false
- Comment out
private_peer_ids
- Add
persistent_peers
as sentry node:persistent_peers = "sentryNodeID@sentryIP:26656"
prometheus = true
- Edit heimdall-config.toml:
eth_rpc_url = "<your Ethereum mainnet RPC URL>"
- Edit Bor config:
trusted-nodes = ["enode://sentryEnodeID@sentryIP:30303"]
Set the Owner and Signer Key
Generate Heimdall Private Key
Generate Heimdall Private Key
On the validator machine only:
Generate Bor Keystore File
Generate Bor Keystore File
On the validator machine only:Set up a password when prompted, and ensure the
keystore
parameter in Bor config matches the directory.Add password.txt
Add password.txt
Create a Ensure the
password.txt
file with the keystore password:password
parameter in Bor config matches this file.Add Ethereum Address to Unlock
Add Ethereum Address to Unlock
In
/var/lib/bor/config.toml
, add your Ethereum address to unlock
and set allow-insecure-unlock = true
:Start the Validator Node
- Start Heimdall service:
Wait for
catching_up: false
before starting Bor. - Start Bor service:
Keep at least 0.5 ETH in your signer address to avoid being unable to submit checkpoint transactions.