💻Baremetal

[Author: Dood]

System Requirements

CPU

OS

RAM

DISK

4c/8t

Debian 12

>=16GB

>= 1TB SSD/NVME

The archive node size is 300G as of 04.03.2024

All commands in this guide are supposed to be executed as root

📜 Scroll

Unofficial Docs & Support:

Pre-Requisites

apt update -y && apt upgrade -y && apt autoremove -y
apt install -y build-essential make gcc musl-dev git curl

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 Linea Node

sudo ufw allow from ${REMOTE.HOST.IP} to any port 8546

Not advised to allow all or unknown IP address to RPC port

Enable Firewall

sudo ufw enable
wget https://golang.org/dl/go1.21.6.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

#check Go version

go version

Setup scroll client

Compile Binaries

git clone https://github.com/scroll-tech/go-ethereum /root/l2geth-source
cd /root/l2geth-source && make nccc_geth
mkdir /root/scroll-datadir

Create service to run Scroll Node

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

echo "[Unit]
Description=Scroll Node
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=3

[Service]
Type=simple
Restart=on-failure
RestartSec=5
TimeoutSec=900
User=root
Nice=0
LimitNOFILE=200000
WorkingDirectory=/root/l2geth-source
ExecStart=/root/l2geth-source/build/bin/geth \
--scroll \
--datadir '/root/scroll-datadir' \
--gcmode archive \
--syncmode full \
--cache.noprefetch \
--http \
--http.corsdomain '*' \
--http.vhosts '*' \
--http.addr '0.0.0.0' \
--http.port 8546 \
--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 \
--port 30303
KillSignal=SIGHUP

[Install]
WantedBy=multi-user.target" >> /etc/systemd/system/scroll-node.service
systemctl daemon-reload
systemctl start scroll-node
systemctl enable scroll-node

Logging

journalctl -fu scroll-node

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$:8546
curl -H "Content-type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"scroll_syncStatus","params":[],"id":1}' $YOURIP$:8546

References

Last updated