This guide covers everything you need to run a Shibarium full node, including system requirements, setup with Ansible or binaries, using snapshots, troubleshooting, and operational best practices. Follow each section carefully to ensure a successful deployment.

Node System Requirements

Node typeRAMCPUStorageNetwork bandwidth
Full Node/Sentry Node16/32 GB4/8 core1 TB1 Gbit/s
Validator Node32/64 GB8/16 core1 TB1 Gbit/s
Archive (For RPC) Node32/64 GB8/16 core2-4 TB1 Gbit/s
For best performance, use direct-attached SSD storage and provision high IOPS (e.g., 16,000+ for AWS gp3, or GCP pd-ssd/pd-extreme).

Open Necessary Ports

PortDescription
26656Heimdall p2p (sentry/full/validator)
26657Heimdall RPC (sentry/full/validator)
8545Bor RPC (archive/full node)
30303Bor p2p (sentry/full/validator)
Do not expose validator node ports to the public internet. Use sentry nodes for public access.

Downloading and Using Snapshots

Download the latest snapshots before setup for faster sync. See the Snapshots page for links.
1

Download and extract Heimdall snapshot

wget -c <snapshot_url>tar -zxvf <file>
2

Download and extract Bor snapshot

wget -c <snapshot_url>tar -zxvf <file>
3

Move extracted data to correct directories

mv ~/snapshots/heimdall_extract ~/snapshots/datamv ~/snapshots/bor_extract ~/snapshots/chaindatasudo ln -s ~/snapshots/data /var/lib/heimdallsudo ln -s ~/snapshots/chaindata /var/lib/bor
4

Set permissions

sudo chown -R bor:nogroup /var/lib/heimdall/datasudo chown -R heimdall:nogroup /var/lib/bor/data/bor

Full Node Setup with Ansible

Ansible automates full node setup. Ensure Python 3.x and Ansible are installed. Remove any previous Bor/Heimdall setups and Go installations.
1

Install Ansible

pip3 install ansible
2

Clone the node-ansible repo

3

Edit inventory.yml

Add your node’s IP(s) under sentry->hosts.
4

Check connectivity

ansible sentry -m ping
5

Check latest versions

Check the latest Heimdall and Bor versions for Shibarium (tags: 1.x.x-bone).
6

Test configuration

ansible-playbook playbooks/network.yml —extra-var=“bor_version=v1.x.x-bone heimdall_version=v1.x.x-bone network=shibarium node_type=sentry” —list-hosts
7

Run the playbook

ansible-playbook playbooks/network.yml —extra-var=“bor_version=v1.x.x-bone heimdall_version=v1.x.x-bone network=shibarium node_type=sentry”
8

Clean setup if needed

ansible-playbook playbooks/clean.yml
After setup, ensure seeds and bootnodes in config.toml match official values. For archive nodes, set gcmode = “archive” in bor/config.toml.

Full Node Setup with Binaries

Follow the sequence exactly. Deviating may cause issues.
1

Install build-essential

sudo apt-get updatesudo apt-get install build-essential
2

Install Heimdall

curl -L https://raw.githubusercontent.com/shibaone/install/bone/heimdall.sh | bash -s — <heimdall_version> shibarium sentryheimdalld version —long
3

Install Bor

curl -L https://raw.githubusercontent.com/shibaone/install/bone/bor.sh | bash -s — <bor_version> shibarium sentrybor version
4

Configure seeds and bootnodes

Edit config.toml for both Heimdall and Bor as needed.
5

Update service config user permissions

sed -i ‘s/User=heimdall/User=root/g’ /lib/systemd/system/heimdalld.servicesed -i ‘s/User=bor/User=root/g’ /lib/systemd/system/bor.service
6

Start Heimdall

sudo service heimdalld start
7

Wait for Heimdall to sync

Check sync status: curl localhost:26657https://shib-io.openstatus.dev/ catching_up: false means synced.
8

Start Bor

sudo service bor start
If Bor shows a data permission error, run: sudo chown bor /var/lib/bor

Logs and Monitoring

  • Check Heimdall logs: journalctl -u heimdalld.service -f
  • Check Bor logs: journalctl -u bor.service -f
For advanced log management, see the Journalctl tutorial.

Troubleshooting

Best Practices

  • Only open required ports and restrict access to validator nodes.
  • Use sentry nodes for public RPC and p2p access.
  • Regularly update your system and node software.
  • Monitor disk IOPS and network bandwidth for optimal performance.
  • Use snapshots for fast recovery and migration.