💻Baremetal

Authors: [Vince | Nodeify]

System Requirements

CPU
OS
RAM
DISK

Higher clock speed over core count

Ubuntu 22.04

8GB+

At least 2.1TB (TLC NVMe recommended)

Reth 🦀

Official Docs https://paradigmxyz.github.io/reth/intro.html

Pre-requisites

Update, upgrade, and clean the system, and then install essential development tools (build-essential), firewall management (ufw), and the Git version control system.

sudo apt update -y && sudo apt upgrade -y && sudo apt auto-remove -y
sudo apt-get install -y build-essential ufw git libclang-dev pkg-config

Set explicit default UFW rules

sudo ufw default deny incoming
sudo ufw default allow outgoing

Allow P2P connections with Erigon, Consensus peers and SSH

sudo ufw allow 30303
sudo ufw allow 9001
sudo ufw allow 22/tcp

Allow P2P connections with Reth, Consensus peers and SSH

Allow remote RPC connections with Execution Client

Enable Firewall

Install rust

The rustup installer provides an easy way to update the Rust compiler

Please add the Cargo path to your system's PATH environment variable, and then test to ensure that Cargo is working correctly.

Create reth directory

Create a new directory named reth within the "/root/.local/share" directory, providing a location for storing data related to Reth.

Generate JWT token

Generate a 32-byte random hexadecimal value using OpenSSL, removes any newline characters, and then save the result into the file "jwt.hex" located in the "/root/.local/share/reth/" directory.

Build Reth

Clone the reth repository from GitHub, navigate to the reth directory, then build the project with cargo build.

Configure Reth

Run Reth

Reload the systemd manager configuration, start the Reth service, and enable it to start automatically on system boot, ensuring that the Reth Mainnet Service is active and will be automatically started upon system startup.

Monitor Logs

Use journalctl to display real-time log messages and continuously follow the log output of the Reth service, allowing you to monitor its activity and troubleshoot any issues as they occur.

Consensus Clients

Lodestar 🤠

Official Docs https://chainsafe.github.io/lodestar/

Install yarn and nodeJS

Create Lodestar Directory

Create a new directory named lodestar within the "/root/.local/share" directory, providing a location for storing data related to Lodestar.

Build Lodestar

Clone the lodestar repository from GitHub, navigate to the lodestar directory, switch to the stable branch, and then build the project with yarn.

Configure Lodestar

Append a systemd service configuration for the Lodestar Mainnet Service to the "/etc/systemd/system/lodestar.service" file, specifying its description, dependencies, and executable parameters for proper execution and monitoring.

Run Lodestar

Reload the systemd manager configuration, restart the Lodestar and Reth services, and enable the Lodestar service to start automatically on system boot. This ensures that both services are running with the latest configuration and that the Lodestar service will be automatically started upon system startup.

Monitor Logs

Use journalctl to display real-time log messages and continuously follow the log output of the Lodestar service, allowing you to monitor its activity and troubleshoot any issues as they occur.

Lighthouse 🕯️

Official Docs https://lighthouse-book.sigmaprime.io/

Create Lighthouse Directory

Create a new directory named lighthouse within the "/root/.local/share" directory, providing a location for storing data related to Lighthouse.

Build Lighthouse

Clone the lighthouse repository from GitHub, navigate to the lighthouse directory, switch to the stable branch, and then build the project with make.

Configure Lighthouse

Append a systemd service configuration for the Lighthouse Mainnet Service to the "/etc/systemd/system/lighthouse.service" file, specifying its description, dependencies, and executable parameters for proper execution and monitoring.

Run Lighthouse

Reload the systemd manager configuration, restart the Lighthouse and Reth services, and enable the Lighthouse service to start automatically on system boot. This ensures that both services are running with the latest configuration and that the Lighthouse service will be automatically started upon system startup.

Monitor Logs

Use journalctl to display real-time log messages and continuously follow the log output of the Lighthouse service, allowing you to monitor its activity and troubleshoot any issues as they occur.

Nimbus ☁️

Official Docs https://nimbus.guide/index.html

Install cmake

Create Nimbus Directory

Create a new directory named nimbus within the "/root/.local/share" directory, providing a location for storing data related to Nimbus.

Build Nimbus

Clone the Nimbus repository from GitHub, navigate to the nimbus directory, switch to the latest stable release, and then build the project with make

You can increase -j4 (-j32) with higher or lower integer depending on your host machine ram to decrease build time. Omit -j4 on systems with 4GB of memory or less.

Configure Nimbus

Append a systemd service configuration for the Nimbus Mainnet Service to the "/etc/systemd/system/nimbus.service" file, specifying its description, dependencies, and executable parameters for proper execution and monitoring.

Run Nimbus

Reload the systemd manager configuration, restart the Nimbus and Reth services, and enable the Nimbus service to start automatically on system boot. This ensures that both services are running with the latest configuration and that the Nimbus service will be automatically started upon system startup.

Monitor Logs

Use journalctl to display real-time log messages and continuously follow the log output of the Nimbus service, allowing you to monitor its activity and troubleshoot any issues as they occur.

Teku 🍷

Official Docs https://docs.teku.consensys.net/get-started

Install the required Java runtime

Create Teku Directory

Create a new directory named teku within the "/root/.local/share" directory, providing a location for storing data related to Teku.

Build Teku

Clone the teku repository from GitHub, navigate to the teku directory, switch to the latest release, and then build the project with with the Gradle wrapper gradlew, as follows.

Configure Teku

Append a systemd service configuration for the Teku Mainnet Service to the "/etc/systemd/system/teku.service" file, specifying its description, dependencies, and executable parameters for proper execution and monitoring.

Run Teku

Reload the systemd manager configuration, restart the Teku and Reth services, and enable the Teku service to start automatically on system boot. This ensures that both services are running with the latest configuration and that the Teku service will be automatically started upon system startup.

Monitor Logs

Use journalctl to display real-time log messages and continuously follow the log output of the Teku service, allowing you to monitor its activity and troubleshoot any issues as they occur.

Test Reth RPC 🧪

Last updated

Was this helpful?