Full Ethereum mainnet node with both execution and consensus layers. You get your own private RPC endpoints for real-value transactions.
Why Docker?
I run everything in containers, and honestly it just makes life easier. A few reasons why I prefer this setup:
- Resource limits in one place. You can cap CPU and memory directly in the
docker-compose.ymlwithout touching any system config. No surprises when one service decides to eat all your RAM. - Easy to manage. Start, stop, restart, update. It’s all just
docker composecommands. No messing around with systemd units or manual process management. - Nginx fits in naturally. Putting Nginx in front as a reverse proxy works great with this setup. You get SSL, IP whitelisting, and rate limiting without much extra effort.
- Isolated and clean. Each client runs in its own container. If something breaks, you can tear it down and bring it back up without affecting the rest of the system.
It’s not the only way to run an Ethereum node, but it’s the way I keep coming back to.
Client Comparison
| Nethermind + Lighthouse | Geth + Prysm | ||
|---|---|---|---|
| Storage | ~954 GB | ~1 TB+ | |
| Initial Sync | ~6 hours | ~6-12 hours | |
| Memory Usage | Lower | Higher |
Note
Storage and sync times vary based on hardware, network speed, and current chain size. Figures above are estimates from real-world usage and may differ in your environment.