🐳Docker

[Author: Dood]

System Requirements

CPU

OS

RAM

DISK

4c/8t

Debian 12

>=16GB

>= 1TB SSD/NVME

The archive node size was 300G as of 29.02.2024

This guide was tested with Debian 12 but, should run on every OS that can run Docker

📜 Scroll

Unofficial Docs & Support:

Prerequisites

If not already installed, install Docker

Setting Up a Firewall

Add a rule to block all traffic on the port:

iptables -I DOCKER-USER -p tcp --dport 8545 -j DROP

Add a rule for access:

iptables -I DOCKER-USER -p tcp --dport 8545 -s $YOURIP$ -j ACCEPT

Replace $YOURIP$ with the ip you want to access the RPC from.

Create docker-compose.yml

If possible, replace '--l1.endpoint "https://eth.llamarpc.com"' with your own L1 Ethereum endpoint.

nano docker-compose.yml
version: "3.1"
services:
  scroll:
    container_name: scroll
    image: scrolltech/l2geth:scroll-v5.1.10
    restart: unless-stopped
    volumes:
      - scroll:/scroll-datadir
    ports:
      - 8545:8545
    command: |
      --scroll
      --datadir "./scroll-datadir"
      --gcmode archive
      --syncmode full
      --cache.noprefetch
      --http
      --http.corsdomain "*"
      --http.vhosts "*"
      --http.addr "0.0.0.0"
      --http.port 8545
      --http.api "eth,net,web3,debug,scroll"
      --l1.endpoint "https://eth.llamarpc.com"
      --rollup.verify
      --l1.confirmations finalized
      --verbosity=3
      --metrics
      --metrics.addr "0.0.0.0"
      --metrics.port 6060
      --maxpeers 100
      --nat "extip:0.0.0.0"
      --port 30303

volumes:
  scroll:

Start the container

docker compose up -d 

Useful tips

View Logs via

docker logs -f scroll

Get Sync status via curl

Replace $YOURIP$ with the IP of your server

curl -H "Content-type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' $YOURIP$:8545
curl -H "Content-type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"scroll_syncStatus","params":[],"id":1}' $YOURIP$:8545

References

Last updated