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/data
mv ~/snapshots/bor_extract ~/snapshots/chaindata
sudo ln -s ~/snapshots/data /var/lib/heimdall
sudo ln -s ~/snapshots/chaindata /var/lib/bor
4
Set permissions
sudo chown -R bor:nogroup /var/lib/heimdall/data
sudo 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
git clone https://github.com/shibaone/node-ansible
cd node-ansible
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 update
sudo apt-get install build-essential
2
Install Heimdall
curl -L https://raw.githubusercontent.com/shibaone/install/bone/heimdall.sh | bash -s — <heimdall_version> shibarium sentry
heimdalld version —long
3
Install Bor
curl -L https://raw.githubusercontent.com/shibaone/install/bone/bor.sh | bash -s — <bor_version> shibarium sentry
bor 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.service
sed -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
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.yml
Checking 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.