Hardware specs
Per-role hardware for the public testnet (chain-id 473374). These are testnet baselines — scale disk with state growth. Mainnet sizing is the same shape, but move all validators to datacenter baremetal (the slashing/uptime math dominates).
Per-role matrix
| Role | vCPU / cores | RAM | Disk | AWS | Baremetal |
|---|---|---|---|---|---|
| Validator (signs blocks) | 4 | 16 GB | 500 GB NVMe (pruned) | c6i.xlarge / m6i.xlarge + gp3 | 4-core x86-64, 16 GB, 500 GB NVMe |
RPC / full node (L5) (serves eth_getProof to edge/light clients) | 8 | 32 GB | 1–2 TB NVMe (pruned; archive = larger) | m6i.2xlarge + gp3/io2 1–2 TB | 8-core, 32–64 GB, 2 TB NVMe |
| Seed / bootnode (peer discovery) | 2 | 8 GB | 100 GB SSD | t3.large / m6i.large | 2-core, 8 GB, 100 GB SSD |
Disk. Pruned (--full) is the default for validators and seeds. RPC nodes serving deep historical proofs run archive (EL_SYNC_MODE= empty), which grows much larger — provision 1–2 TB and expect to expand. The EL state under DATA_DIR/el grows continuously; watch free space.
Network. ≥100 Mbps stable, low-latency connectivity. P2P ports must be reachable from the internet (see Ports & firewall). Validators keep RPC on loopback; RPC nodes expose 8545 only behind a VPN/WireGuard, never a public IP.
Memory. Tune EL_MEM_LIMIT / CL_MEM_LIMIT per role in .env (presets: validator 12g EL / 6g CL, RPC 24g EL / 6g CL, seed 6g EL / 3g CL). Under-provisioning the EL causes OOM evictions which, on a validator, contribute to chain halts.
NVMe is REQUIRED for the execution layer
bera-reth stores state in an MDBX database with heavy random-write / fsync patterns. On slow or wear-prone storage (SD cards, network EBS below gp3, spinning disk) MDBX corrupts or wears out the volume and the EL dies. Use local NVMe on baremetal; on AWS use gp3 (or io2 for RPC/archive) — never standard / sc1 / st1. The DATA_DIR mount must be the NVMe volume.
Cost & cheapest-baremetal options
The real cost driver is not raw specs (testnet specs are modest) — it is the uptime + static-IP requirement, which differs by role. Cheapest-first by category (provider-agnostic; verify current pricing yourself — it moves):
| Option (category) | Rel. cost | Best for | Notes |
|---|---|---|---|
| Home — single-board (Raspberry Pi 5 8 GB + USB3 UASP SSD) | one-time HW, ~negligible power | seed · RPC-for-self · edge (light) | The Pi is the turnkey edge-image appliance. Runs a pruned non-validating full node too. Residential IP/uptime → use a VPN tunnel. |
| Home — mini-PC (Intel N100/N305, 16 GB + NVMe) | one-time HW, low power | any role incl. validator (low-stakes testnet) · edge (light) | More headroom than a Pi; real NVMe on board. A light node runs here too (build the client; no SD image). Same residential-IP caveat. |
| Budget dedicated server (auction/used-dedicated tier) | low monthly | validator · shared seed/RPC | Cheapest 24/7 datacenter baremetal with real NVMe + public static IP + bandwidth. The right choice when others rely on the node. |
| Entry dedicated (current-gen budget line) | low–mid monthly | RPC/L5 · archive | More disk/RAM for the eth_getProof fleet. |
| Hyperscaler (AWS, the instances above) | highest | when you need cloud ops/IaC | Convenient + elastic, but priciest per-unit. |
Two hard rules that override "cheapest"
- Real NVMe, always. Avoid ultra-cheap, oversubscribed "VPS/dedicated" tiers whose storage is slow or shared — MDBX will corrupt / fall behind. Genuine NVMe is non-negotiable for the EL.
- Match uptime to role. A non-validating node (seed / RPC / edge) tolerates restarts and a residential line — run it cheapest, at home. A validator must be 24/7 with a stable public IP: downtime has a consensus cost now and a slashing / inactivity cost on mainnet, which dwarfs any hardware saving.
Levers to cut cost further:
- Co-locate roles on one capable box (e.g. a seed + one or two full nodes). Do not stack multiple validators on one host for production — it destroys fault-independence.
- Residential reachability: behind dynamic IP / CGNAT, expose the node via a WireGuard/Tailscale address (
EXT_IP/RPC_HOST) instead of paying for a static IP — fine for non-validating roles. - Prune, don't archive, unless a node specifically serves deep historical
eth_getProof.
Bottom line. Run most of the fleet (seeds, RPC, edge) cheapest on home single-board / mini-PCs with a VPN tunnel; put the validators on a budget dedicated server for uptime. On mainnet later, move all validators to datacenter baremetal.
See also
- Prerequisites · Ports & firewall
- Edge node (verifying light client) — the Pi is the turnkey appliance; the client also runs on other hardware.