π»Baremetal
Authors: [man4ela | catapulta.eth]
System Requirements
16+ cores CPU
Debian 12/Ubuntu 22.04
=> 64 GB
500GB+ (SSD or NVMe)
HyperEVM
In this guide the installation process of nanoreth will be covered which is needed to sync an archival node able to serve historical requests on HyperEVM mainnet chain.
Pre-Requisites
sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
sudo apt install -y git make wget aria2 gcc pkg-config libusb-1.0-0-dev libudev-dev jq gcc g++ curl libssl-dev screen apache2-utils build-essential pkg-configv unzipSetting up Firewall
Set explicit default UFW rules
sudo ufw default deny incoming
sudo ufw default allow outgoingAllow SSH
sudo ufw allow 22/tcpAllow remote RPC connections with the node
Allow remote P2P connections with Nanoreth and HL Nodes
Not advised to allow all or unknown IP address to RPC port
Enable Firewall
To check the status of UFW and see the current rules
Install dependencies
Install Rust
Install AWS
Install Nanoreth
Create systemd service for nanoreth
Save by entering ctrl+X and Y+ENTER
Before starting Nanoreth we want to obtain evm-blocks from block 0. There are two options for doing this:
Using a database shared by a community member - Fast but not recommended, as this relies on a third-party provider and archive availability is often unreliable
Obtaining the official archive from AWS. This is the recommended method. Use the following command to download the blocks. Better do it in screen session as synchronizing is going to take up to 48 hrs
Once the database has finished syncing, start the NanoReth systemd service with the --block-source=/root/data/hl-nanoreth/evm-blocks flag enabled.
This allows the node to load and process blocks from genesis up to the most recent available block before continuing live synchronization using either --s3 or local block sync (using Hl-visor)
--block-source=/root/data/hl-nanoreth/evm-blocks flag enabled.
This allows the node to load and process blocks from genesis up to the most recent available block before continuing live synchronization using either --s3 or local block sync (using Hl-visor) Give Nanoreth some time to catch up and when it stops proceeding switch to --S3 sync by editing systemd service file:
With this option enabled, NanoReth will fetch any missing blocks directly from AWS, process them, and continue retrieving new data from there going forward.
From this point, you can choose to either continue using --s3-sync or set up Hyperliquidβs hl-visor node to fetch blocks locally, which provides lower latency and no reliability on AWS
Install HL-Visor
Download the binary and grant the necessary permissions to make it executable
Create a visor.json which tells hl-visor which chain to connect to
Verify the authenticity of the hl-visor binary
Add peers for syncing with the network
The above command will fetch the list of live peers
Create the gossip override configuration
Use the following command to create /root/hyperliquid/override_gossip_config.json:
Replace
<IP from list>with at least 5 additional IPs returned by the previouscurlcommand
Create systemd file for hl-visor service:
Paste:
Launch hl-visor
Troubleshooting
If you happen to run into following error:
Disable IPv6:
Scroll to the bottom and add the following lines
Apply the changes
Once hl-visor has finished syncing, you can switch Nanoreth to use the blocks produced by hl-visor as its source:
Logs
hl-nanoreth.service:
hl-visor.service:
References
Last updated