Setup
Set up your Ethereum node
1. Create the shared JWT secret
The execution and consensus clients talk over the authenticated Engine API, with a secret both of them read:
sudo mkdir -p /var/lib/ethereum
openssl rand -hex 32 | sudo tee /var/lib/ethereum/jwt.hex
2. Start an execution client
Geth, Nethermind, Besu, Erigon and Reth all work; with Geth, keep the Engine API and JSON-RPC on localhost:
geth --datadir /var/lib/ethereum/geth \
--authrpc.addr 127.0.0.1 --authrpc.port 8551 --authrpc.jwtsecret /var/lib/ethereum/jwt.hex \
--http --http.addr 127.0.0.1
3. Start a consensus client with checkpoint sync
Lighthouse, Teku, Nimbus, Prysm and Lodestar all work; with Lighthouse, point it at the execution client and at a checkpoint sync endpoint you trust:
lighthouse bn --network mainnet \
--execution-endpoint http://127.0.0.1:8551 --execution-jwt /var/lib/ethereum/jwt.hex \
--checkpoint-sync-url https://checkpoint.example
Run both as systemd services. For a validator, keep the keys on a remote signer with slashing protection, and never run the same keys on two machines.