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 type | RAM | CPU | Storage | Network bandwidth |
|---|---|---|---|---|
| Full Node/Sentry Node | 16/32 GB | 4/8 core | 1 TB | 1 Gbit/s |
| Validator Node | 32/64 GB | 8/16 core | 1 TB | 1 Gbit/s |
| Archive (For RPC) Node | 32/64 GB | 8/16 core | 2-4 TB | 1 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
| Port | Description |
|---|---|
| 26656 | Heimdall p2p (sentry/full/validator) |
| 26657 | Heimdall RPC (sentry/full/validator) |
| 8545 | Bor RPC (archive/full node) |
| 30303 | Bor 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/bor4
Set permissions
sudo chown -R bor:nogroup /var/lib/heimdall/datasudo chown -R heimdall:nogroup /var/lib/bor/data/borFull 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 ansible2
Clone the node-ansible repo
git clone https://github.com/shibaone/node-ansiblecd node-ansible3
Edit inventory.yml
Add your node’s IP(s) under
sentry->hosts.4
Check connectivity
ansible sentry -m ping5
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-hosts7
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.ymlAfter 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-essential2
Install Heimdall
curl -L https://raw.githubusercontent.com/shibaone/install/bone/heimdall.sh | bash -s — <heimdall_version> shibarium sentryheimdalld version —long3
Install Bor
curl -L https://raw.githubusercontent.com/shibaone/install/bone/bor.sh | bash -s — <bor_version> shibarium sentrybor version4
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.service6
Start Heimdall
sudo service heimdalld start7
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 startIf Bor shows a data permission error, run:
sudo chown bor /var/lib/borLogs 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
Common Issues and Fixes
Common Issues and Fixes
- Ensure no previous Bor/Heimdall or Go installations exist before setup.
- Always use the correct versions for your network (mainnet/testnet).
- If services fail to start, check permissions and config files.
- For archive nodes, verify
gcmode = “archive”in Bor config. - If Heimdall or Bor is not syncing, check network/firewall settings and snapshot data integrity.
Resetting and Cleaning Up
Resetting and Cleaning Up
To reset your node, use the Ansible clean playbook:
ansible-playbook playbooks/clean.ymlChecking Node Health
Checking Node Health
- Heimdall:
curl localhost:26657https://shib-io.openstatus.dev/(look forcatching_up: false) - Bor:
sudo service bor status
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.