πŸ’»Baremetal

Authors: [man4ela | catapulta.eth]

System Requirements

CPU
OS
RAM
DISK

16+ cores CPU

Debian 12/Ubuntu 22.04

=> 64 GB

500GB+ (SSD or NVMe)

HyperEVM Mainnet archive node consists of Nanoreth (89Gb) and a hl-visor (265GB+) on September 30th, 2025

HyperEVM

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 unzip

Setting up Firewall

Set explicit default UFW rules

sudo ufw default deny incoming
sudo ufw default allow outgoing

Allow SSH

sudo ufw allow 22/tcp

Allow remote RPC connections with the node

Allow remote P2P connections with Nanoreth and HL Nodes

Enable Firewall

To check the status of UFW and see the current rules

Install dependencies

Install Rust

Install AWS

You will need to register an account on AWS and enable and configure Amazon S3 via https://console.aws.amazon.com

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)

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 previous curl command

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