Everstake Home
Products Solutions Security Resources Developers Company
Home
BLOG
How to Prune an ETH 2.0 Node With Prysm and Geth as an External Execution Layer
f17c1764-0989-40fb-bd5a-82f489f66285

Company News

How to Prune an ETH 2.0 Node With Prysm and Geth as an External Execution Layer

This guide explains how to temporarily connect a consensus client to an external execution client and prune the primary database without losing attestations and rewards. We will do this using Geth and Prysm as examples.

DEC 16, 2022

Table of Contents

What Is Pruning?

A Guide on Pruning Geth With the Prysm Consensus Client

Conclusion

Share with your network

A validator node on the post-merge Ethereum consists of execution and consensus clients communicating over EngineAPI. If you need to disable the execution client, for example, to prune Geth and free some space up, you will have to use an external execution layer.

This guide explains how to temporarily connect a consensus client to an external execution client and prune the primary database without losing attestations and rewards. We will do this using Geth and Prysm as examples.

What Is Pruning?

A snap-sync’d Geth node takes up about 650 GB on the hard disk. Over time, the blockchain grows, the disk fills with data, and the node refuses to work.

The developers of Geth have provided a way to clean the database up and return it to its original size: pruning. Geth regularly snapshots the database, and pruning removes old data and brings the database back to its original 650 GB.

Pruning takes about four hours. During this time, Geth finds target trie nodes, removes stale trie nodes, and forms a new database. 

To prune an ETH 2.0 validator, follow this algorithm:

  • Prepare an external node.
  • Install and synchronize the execution and consensus clients on the external node.
  • Stop the execution and consensus clients on the local node.
  • Connect the consensus client on the local node to the execution client on the external node.
  • To prune the execution client on the local node, wait for completion.
  • Stop the consensus client, and reconnect it to the execution client on the local node.
  • Run the execution and consensus clients on the local node.

Sounds like a heart transplant surgery, doesn’t it?

A Guide on Pruning Geth With the Prysm Consensus Client

Everstake uses two Linux machines: a local node (ov6) (with both the Geth execution client and the Prysm consensus client) and an external node (ov7) with the same clients.

Configure the firewall of the external node to be able to connect to it on port 8551:

sudo iptables -A INPUT -i $(ip route get 8.8.8.8 | awk '{ print $5 }' | head -n 1) -p tcp --dport 8551 -s IP ov6 -j ACCEPT -m comment --comment "EL for ov6”

Check if the IP rule has been added:

sudo iptables -vnL

Configure the geth.service systemd script on external node ov7. Add --authrpc.addr 0.0.0.0 to the ExecStart line:

ExecStart=geth --syncmode snap --cache 4096 --http --http.addr 0.0.0.0 --http.api "engine,eth,net,rpc,web3,debug,txpool,admin" --ws --ws.addr="0.0.0.0" --ws.origins "*" --authrpc.vhosts="localhost" --authrpc.jwtsecret=/mnt/operational/lido/jwt/jwt.hex --http.vhosts=* --metrics.addr 0.0.0.0 --metrics.port 7070 --metrics --txpool.accountslots 64 --txpool.globalslots 8192 --txpool.accountqueue 128 --vmodule "rpc=5" --datadir "/mnt/operational/lido/geth”

↓↓↓

ExecStart=geth --syncmode snap --cache 4096 --http --http.addr 0.0.0.0 --authrpc.addr 0.0.0.0 --http.api "engine,eth,net,rpc,web3,debug,txpool,admin" --ws --ws.addr="0.0.0.0" --ws.origins "*" --authrpc.vhosts="localhost" --authrpc.jwtsecret=/mnt/operational/lido/jwt/jwt.hex --http.vhosts=* --metrics.addr 0.0.0.0 --metrics.port 7070 --metrics --txpool.accountslots 64 --txpool.globalslots 8192 --txpool.accountqueue 128 --vmodule "rpc=5" --datadir "/mnt/operational/lido/geth" 

Refresh the systemctl daemon:

sudo systemctl daemon-reload

Stop Prysm on the external node:

sudo systemctl stop ethereum2-node.service

Make sure Prysm has stopped and Geth is listening to 0.0.0.0:8511:

sudo netstat -tlpn

Launch the Geth systemd script on the external node:

sudo systemctl restart geth.service

Go to the local node. Once there, stop both Prysm and Geth:

sudo systemctl stop ethereum2-node.service

sudo systemctl stop geth.service

Configure Prysm to connect to the external node. In the Prysm systemd script, change --execution-endpoint to the IP address of the external node (ov7 in our case):

ExecStart=/mnt/operational/lido/prysm/prysm.sh beacon-chain --datadir /mnt/operational/lido/prysm/data --p2p-host-ip ${HOST} --execution-endpoint=http://localhost:8551 --http-mev-relay=http://localhost:18550 --jwt-secret=/mnt/operational/lido/jwt/jwt.hex --min-sync-peers 7 --p2p-max-peers 100 --suggested-fee-recipient=0x7f396Ef9F10C7beB11D01f2EA4a99a5787993474 --monitoring-host 0.0.0.0 --accept-terms-of-use

↓↓↓

ExecStart=/mnt/operational/lido/prysm/prysm.sh beacon-chain --datadir /mnt/operational/lido/prysm/data --p2p-host-ip ${HOST} --execution-endpoint=http://IP-OV7:8551 --http-mev-relay=http://localhost:18550 --jwt-secret=/mnt/operational/lido/jwt/jwt.hex --min-sync-peers 7 --p2p-max-peers 100 --suggested-fee-recipient=0x7f396Ef9F10C7beB11D01f2EA4a99a5787993474 --monitoring-host 0.0.0.0 --accept-terms-of-use

Refresh the systemctl daemon:

sudo systemctl daemon-reload

On the local node, back up the JWT token, e.g., in jwt.hex.bak:

cp /mnt/operational/lido/jwt/jwt.hex /mnt/operational/lido/jwt/jwt.hex.bak

Copy the JWT token from the external node, paste it into jwt.hex on the local node, and save the changes:

cat /mnt/operational/lido/jwt/jwt.hex 

nano /mnt/operational/lido/jwt/jwt.hex

Launch Prysm on the local node:

sudo systemctl start ethereum2-node.service

Check the logs for the connection to the external node:

eternal el-geth cat /mnt/operational/lido/prysm/stderr.txt |grep 8551

Check that Geth on the external node and Prysm on the local node catch up with the headblock.

Then prune Geth on the local node (Double-check that Geth is not running!):

tmux new -s PRUNE

geth snapshot prune-state --datadir "/mnt/operational/lido/geth”

Pruning will complete after two or three hours. Then revert the changes and launch the local validator:

  • Stop both Prysm and Geth.
  • Return the JWT from jwt.hex.bak to jwt.hex on the local node.
  • Return --execution-endpoint=http://localhost:8551 to the Prysm systemd.
  • Run Geth and then Prysm on the local node.
  • Remove --authrpc.addr 0.0.0.0 from the Geth systemd on the external node.
  • Close the 8551 IP port on the external node.

Conclusion

Pruning enables Ethereum validators with the Geth client to keep a 1 TB hard disk node running stably. 

Pruning was easy in the Ethereum PoW days, but with the move to PoS, one has to switch the consensus client to an external execution client for pruning. This is relatively easy, and one can get used to changing clients if they do it regularly.

Our instructions describe pruning with the Geth and Prysm consensus clients, but you can do the same with Teku, Lighthouse, and other consensus clients for Ethereum. Just study the configuration files, figure out what IP to change, and disable and enable the clients in the correct order.

Visit our Twitter and Discord.

Share with your network

Everstake

Content Manager

Everstake is the leading non-custodial staking provider, delivering audited, globally distributed infrastructure aligned with SOC 2 Type II, ISO 27001, and NIST CSF 2.0 for institutional and retail clients.

Related Articles

2031

Company News

Everstake Partners with Canary Capital to Power Staking in the Newly Launched Nasdaq-Listed SUI ETF

Everstake, the leading global non-custodial staking provider, has entered a partnership with Canary Capital, a digital asset investment management firm. Together, the companies will power the staking capabilities of the newly launched SUIS, a SUI ETF, now officially listed on Nasdaq. This groundbreaking exchange-traded fund represents a major leap forward for institutional digital asset adoption,...

FEB 20, 2026

Everstake and Cometh Launch Fiat-to-Staking Solution for EU Institutions Under MiCA

Company News

Everstake and Cometh Launch Fiat-to-Staking Solution for EU Institutions Under MiCA

This partnership simplifies institutional access to staking under MiCA, bridging traditional banking infrastructure with compliant, crypto-native rewards.

JAN 07, 2026

2025 marked a shift for Everstake toward full infrastructure leadership, combining audited systems, institutional partnerships, and ecosystem responsibility.

Company News

The Year Everstake Stepped Into Full Infrastructure Leadership

2025 marked a shift for Everstake toward full infrastructure leadership, combining audited systems, institutional partnerships, and ecosystem responsibility.

DEC 24, 2025

Disclaimer

Everstake, Inc. or any of its affiliates is a software platform that provides infrastructure tools and resources for users but does not offer investment advice or investment opportunities, manage funds, facilitate collective investment schemes, provide financial services or take custody of, or otherwise hold or manage, customer assets. Everstake, Inc. or any of its affiliates does not conduct any independent diligence on or substantive review of any blockchain asset, digital currency, cryptocurrency or associated funds. Everstake, Inc. or any of its affiliates’s provision of technology services allowing a user to stake digital assets is not an endorsement or a recommendation of any digital assets by it. Users are fully and solely responsible for evaluating whether to stake digital assets.

Sign Up for
Our Newsletter

By submitting this form, you are acknowledging that you have read and agree to our Privacy Notice, which details how we collect and use your information.

PRODUCTS

Institutional StakingYield InfrastructureVaaSSWQOSShredStream

Everstake Validation Services LLC

Hermes Corporate Services Ltd., Fifth Floor, Zephyr House

122 Mary Street, George Town, P.O. Box 31493

Grand Cayman KY1-1206, Cayman Islands

Privacy NoticeTerms of UseCookie Policy

Everstake is a software platform that provides infrastructure tools and resources for users but does not offer investment advice or investment opportunities, manage funds, facilitate collective investment schemes, provide financial services or take custody of, or otherwise hold or manage, customer assets. Everstake does not conduct any independent diligence on or substantive review of any blockchain asset, digital currency, cryptocurrency or associated funds. Everstake’s provision of technology services allowing a user to stake digital assets is not an endorsement or a recommendation of any digital assets by it. Users are fully and solely responsible for evaluating whether to stake digital assets. All metrics displayed on the website, including without limitations value of staked assets, total number of active users, rewards rates, and networks supported, are historical figures and may not represent the actual real-time data.

Copyright © 2026 Everstake