Baremetal

Authors: [man4ela | catapulta.eth]

System Requirements

CPU
OS
RAM
DISK

8+ cores CPU

Debian 12/Ubuntu 22.04

=> 16 GB RAM

1TB+ (SSD or NVMe)

The Mode Mainnet archive node has a size of 544GB on October 11th, 2024

Mode

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-config

Setting up Firewall

Set explicit default UFW rules

Allow SSH

Allow remote RPC connections with Mode Node

Allow remote P2P connections with Mode Node

Enable Firewall

To check the status of UFW and see the current rules

Install dependencies

Required Software Dependencies

Dependency
Version
Version Check Command

go

^1.21

go version

node

^20

node --version

pnpm

^8

pnpm --version

foundry

^0.2.0

forge --version

make

^4

make --version

yarn

1.22.21

yarn --version

nvm

0.39.3

nvm --verison

Install GO

Install nvm

Download foundry

Install foundry

Install node and yarn

Check if go and all dependancies are installed

Build the Rollup Node (op-node)

Create database directory and jwt secret file

Download genesis.json and rollup.json files

Build op-node

Create systemd service for op-node

Paste the following configs replacing {L1 RPC},{L1 BEACON RPC},{SERVER IP} with own values

Save by entering ctrl+X and Y+ENTER

Build the Execution Engine (op-geth)

Build op-geth

Create systemd service for op-geth

Paste the following configs:

Save by entering ctrl+X and Y+ENTER

Initialize op-geth

Launch Mode

Start op-geth

It's usually simpler to begin with startingop-geth before you start op-node. You can start op-geth even if op-node isn't running yet, but op-geth won't get any blocks until op-node starts.

Start op-node

Once you've started op-geth, you can start op-node. op-node will connect to op-geth and begin synchronizing the Mode network. op-node will begin sending block payloads to op-geth when it derives enough blocks from Ethereum

Monitor the logs for errors

You are expected to get following log messages from op-node

The expected log messages from op-geth:

Run curl command in the terminal to check the status of your node

If it returns false then your node is fully synchronized with the network

Sync speed depends on your L1 node, as the majority of the chain is derived from data submitted to the L1.

You can check your syncing status using the optimism_syncStatus RPC on the op-node

References

Last updated