Docs
  • InfraDAO Overview
  • ⌨️Indexing 101
    • Linux and Ethereum Clients
      • Introduction to Linux
      • Getting started with Ethereum Clients
      • Lab 1: Sync a Gnosis blockchain node
  • ⌨️Archive Nodes 101
    • Overview
    • ⏫Arbitrum
      • 💻Baremetal
      • 🐳Docker
    • 🔼Arbitrum Sepolia
      • 💻Baremetal
    • 🏔️Avalanche
      • 🐳Docker
    • 🔵Base
      • Erigon
        • 💻Baremetal
      • GETH
        • 💻Baremetal
        • 🐳Docker
    • 🫐Base Sepolia
      • 💻Baremetal
      • 🐋Docker
        • 🐋Op-Reth
    • 🔔Binance
      • Erigon
        • 💻Baremetal
    • 💥Blast
      • 💻Baremetal
    • 🧋Boba
      • 💻Baremetal
      • 🐳Docker
    • 🫖BobaBNB
      • 💻Baremetal
      • 🐳Docker
    • 🟨Celo
      • 🐳Docker
    • 🔷Ethereum
      • 🦦Erigon
        • 💻Baremetal
        • 🐳Docker
      • 🦀Reth
        • 💻Baremetal
        • 🐳Docker
    • 🦄Ethereum Sepolia
      • 🐉Erigon
        • 💻Baremetal
      • 🦥Geth
        • 🐳Docker
    • 👻Fantom
      • 🐳Docker
    • ♻️Fuse
      • 💻Baremetal
    • 🦉Gnosis
      • 🦦Erigon
        • 💻Baremetal
    • 📍Iotex
      • 💻Baremetal
    • 🔲Linea
      • 💻Baremetal
      • 🐳Docker
    • Ⓜ️Mode
      • 💻Baremetal
      • 🐳Docker
    • 🌌Moonbeam
      • 💻Baremetal
      • 🐳Docker
    • 🌛Moonriver
      • 💻Baremetal
      • 🐳Docker
    • 🔴Optimism
      • GETH
        • 🖥️Baremetal
        • 🐳Docker
      • Erigon
        • 💻Baremetal
    • 🍎Optimism Sepolia
      • 🐳Docker
      • 💻Baremetal
    • ♾️Polygon
      • 🐳Docker
    • 👾Polygon zkEVM
      • 🐉Erigon
        • 💻Baremetal
        • 🐳Docker
    • 🛡️Ronin
      • 🐳Docker
      • 💻Baremetal
    • 🫚Rootstock
      • 🐳Docker
      • 💻Baremetal
    • 📜Scroll
      • 🐳Docker
      • 💻Baremetal
    • 🦔Sonic
      • 🐳Docker
      • 💻Baremetal
    • 🌟Starknet
      • 🪶Pathfinder
        • 🐳Docker
      • 🧑‍🚒Firehose
        • 💻Baremetal
        • 🐳Docker
      • 🏵️Juno
        • 🐳Docker
    • ✖️X Layer
      • 🐳Docker
      • 💻Baremetal
        • 🦥Erigon
        • 👽ZK-Node
    • 💤zkSync Era
      • 💻Baremetal
      • 🐳Docker
    • ⚡Zora
      • 🐳Docker
      • 💻Baremetal
Powered by GitBook
On this page
  • System Requirements
  • Pre-requisite
  • Commands:
  • Set explicit default UFW rules
  • Allow SSH, HTTP and HTTPS
  • Setup process:
  • Clone boba network
  • Create an .env file
  • Configuration
  • Example docker-compose file:
  • Start The Node
  • Monitor Logs
  • Test RPC:

Was this helpful?

Edit on GitHub
  1. Archive Nodes 101
  2. Boba

Docker

Authors: [Vikash Choubey | Dapplooker]

System Requirements

CPU
OS
RAM
DISK

8 vCPU

Ubuntu 22

16GB

52GB+

The Boba Mainnet archival node has a size of 52GB on September 19th, 2024

Pre-requisite

Before starting, clean the setup then update and upgrade. Install following:

  • Docker & Docker Compose

  • Git

Commands:

sudo apt update -y && sudo apt upgrade -y && sudo apt auto-remove -y
sudo apt install docker.io docker-compose git ufw -y

Set explicit default UFW rules

sudo ufw default deny incoming
sudo ufw default allow outgoing

Allow SSH, HTTP and HTTPS

sudo ufw allow 22/tcp
sudo ufw allow 80
sudo ufw allow 443

Setup process:

Before starting on root directory, create a direct for boba network with command mkdir boba-archive, then cd boba.

mkdir boba
cd boba

Clone boba network

git clone <https://github.com/bobanetwork/boba.git>
cd boba
cd boba-community

Create an .env file

The repository includes a sample environment variable file located at .env.example that you can copy and modify to get started. Make a copy of this file and name it .env.

cp .env.example .env

Configuration

Download boba mainnet snapshot and extract

curl -o boba-mainnet-erigon-db-1149019.tgz -sL <https://boba-db.s3.us-east-2.amazonaws.com/mainnet/boba-mainnet-erigon-db-1149019.tgz>
tar xvf boba-mainnet-erigon-db-1149019.tgz

Download boba l2Geth snapshot and extract

curl -o boba-mainnet-geth-db-114909.tgz -sL https://boba-db.s3.us-east-2.amazonaws.com/mainnet/boba-mainnet-geth-db-114909.tgz
tar xvf boba-mainnet-geth-db-114909.tgz// Some code

Create a Shared Secret (JWT Token) using:

openssl rand -hex 32 > jwt-secret.txt

Modify Volume Locations

l2:
  volumes:
  - ./jwt-secret.txt:/config/jwt-secret.txt
  - DATA_DIR:/db
op-node:
  volumes:
  - ./jwt-secret.txt:/config/jwt-secret.txt

Example docker-compose file:

version: '3.4'

services:
  op-erigon:
    image:  us-docker.pkg.dev/boba-392114/bobanetwork-tools-artifacts/images/op-erigon:v1.1.5
    container_name: op-erigon
    command: |
      --datadir=/db
      --chain=boba-mainnet
      --http.addr=0.0.0.0
      --http.port=9545
      --http.corsdomain=*
      --http.vhosts=*
      --authrpc.addr=0.0.0.0
      --authrpc.port=8551
      --authrpc.vhosts=*
      --authrpc.jwtsecret=/config/jwt-secret.txt
      --http.api=eth,debug,net,engine,web3
      --txpool.gossip.disable=true
      --rollup.sequencerhttp=https://mainnet.boba.network
      --db.size.limit=8TB
      --rollup.historicalrpc=https://mainnet.boba.network
    ports:
      - "9545:9545"
      - "8551:8551"
    user: root
    volumes:
      - /mnt/boba-data/config:/config
      - /mnt/boba-data/boba-mainnet-erigon-db-1149019:/db
  boba-legacy:
    image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-geth:latest
    container_name: boba-legacy
    command: >
      --datadir=/db
      --networkid=288
      --http
      --http.addr=0.0.0.0
      --http.port=9545
      --http.corsdomain=*
      --http.vhosts=*
      --authrpc.addr=0.0.0.0
      --authrpc.port=8551
      --authrpc.vhosts=*
      --authrpc.jwtsecret=/config/jwt-secret.txt
      --rollup.disabletxpoolgossip=true
      --http.api=eth,debug,net,web3
      --nodiscover
      --syncmode=full
      --maxpeers=0
      --rollup.sequencerhttp=https://mainnet.boba.network
    ports:
      - "7545:9545"
      - "7551:8551"
    volumes:
      - /mnt/boba-data/config-l2geth:/config
      - /mnt/boba-data/geth-1149019:/db
  op-node:
    depends_on:
      - op-erigon
    container_name: op-node
    image: us-docker.pkg.dev/boba-392114/bobanetwork-tools-artifacts/images/op-node:v1.6.3
    command: >
      op-node
      --l1=${ETH1_HTTP:-https://mainnet.gateway.tenderly.co}
      --l1.beacon=${ETH2_HTTP}
      --l2=http://l2:8551
      --l2.jwt-secret=/config/jwt-secret.txt
      --network=boba-mainnet
      --rpc.addr=0.0.0.0
      --rpc.port=8545
      --plasma.enabled=false
    ports:
      - "8545:8545"
    volumes:
      - /mnt/boba-data/config:/config
    restart: always

Start The Node

docker-compose -f [docker-compose-file] up -d

Monitor Logs

Use docker logs to monitor your boba node. The -f flag ensures you are following the log output

docker logs op-erigon -f
docker logs op-node -f
docker logs boba-legacy -f

Test RPC:

curl --data '{"method":"eth_syncing","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST https://{DOMAIN}

You should receive a result, after the node is synced:

{
	"jsonrpc":"2.0",
	"id":1,
	"result":false
}
PreviousBaremetalNextBobaBNB

Last updated 5 months ago

Was this helpful?

⌨️
🧋
🐳