Full Ethereum archive node with complete receipt history from genesis.
Uses Paradigm's official snapshot from snapshots.reth.rs to avoid
a multi-week resync from scratch.
| Component | Image | Purpose |
|---|---|---|
| Reth | ghcr.io/paradigmxyz/reth | Execution layer (EL) |
| Lighthouse | sigp/lighthouse | Consensus layer (CL) |
| Prometheus | prom/prometheus (optional) | Metrics collection |
| Grafana | grafana/grafana (optional) | Metrics dashboard |
| Data | Size |
|---|---|
| Snapshot download | ~170 GB |
| Reth archive data | ~2 TB |
| Lighthouse beacon | ~100 GB |
| Total needed | ~2.3 TB |
# 1. Configure your data paths
nano .env
# 2. Create directories + JWT secret
chmod +x setup.sh
./setup.sh init
# 3. Download archive snapshot (~170GB, takes a few hours)
./setup.sh snapshot
# 4. Start the node
./setup.sh start
# 5. Check status
./setup.sh status
# 6. Test historic receipt availability
./setup.sh test-receipt# Download snapshot
docker compose --profile snapshot run --rm snapshot
# Start node
docker compose up -d reth lighthouse
# Watch logs
docker compose logs -f reth
docker compose logs -f lighthouse
# Stop
docker compose down
# Start with monitoring
docker compose --profile monitoring up -d| Port | Protocol | Service |
|---|---|---|
| 8545 | HTTP | Reth JSON-RPC |
| 8546 | WS | Reth WebSocket RPC |
| 8551 | HTTP | Engine API (internal) |
| 30303 | TCP/UDP | Reth P2P |
| 5052 | HTTP | Lighthouse API |
| 9000 | TCP/UDP | Lighthouse P2P |
| 9001 | HTTP | Reth metrics |
| 5054 | HTTP | Lighthouse metrics |
| 9090 | HTTP | Prometheus |
| 3000 | HTTP | Grafana |
On startup, check logs for:
Pruner initialized prune_config=PruneConfig { ... receipts: None ... }
receipts: None = full archive receipt history retained ✅
If you see receipts: Some(Distance(...)) — check config/reth.toml.
curl -s -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0","id":1,
"method":"eth_getTransactionReceipt",
"params":["0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060"]
}' | jq .resultThis is the first ever Ethereum transaction (block 46147, Aug 2015). If it returns a receipt object, your archive is fully intact.