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

  1. Clone the node-ansible repository:
  2. Add IPs to inventory.yml:
  3. Check remote sentry machine is reachable:
    Output should include "ping": "pong".
  4. Test run of sentry node setup:
  5. Run the sentry node setup with sudo:
  6. If you need to start over:

Set Up the Validator Node

  1. Check remote validator machine is reachable:
  2. Test run of validator node setup:
  3. Run the validator node setup with sudo:
  4. 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 Heimdall
    • seeds (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

On the validator machine only:
On the validator machine only:
Set up a password when prompted, and ensure the keystore parameter in Bor config matches the directory.
Create a password.txt file with the keystore password:
Ensure the password parameter in Bor config matches this file.
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.