Node Troubleshooting
This guide covers the most common issues operators hit when running a Base node from the official Docker setup, with steps to diagnose and resolve each one.
General troubleshooting
Section titled “General troubleshooting”Before chasing specific issues, work through these baseline checks.
-
Inspect container logs. Tail the relevant container with
docker compose logs -f <service_name>:- L2 client (Reth):
docker compose logs -f execution - Rollup node:
docker compose logs -f node. Look for errors, warnings, or repeated messages.
- L2 client (Reth):
-
Check container status. Confirm the right containers are running with
docker compose ps. Restart loops or exited containers warrant a log review. -
Watch resource usage. CPU, RAM, disk I/O, and network usage are common bottlenecks.
htop,iostat, andiftopare useful starting points. -
Verify RPC endpoints. Use
curlto confirm the L2 client’s RPC is responding (see running a Base node). Confirm L1 endpoints are correct and reachable from the node host. -
Check the L1 node. Ensure the configured L1 execution and consensus clients are fully synced, healthy, and accessible. L1 issues block L2 sync.
Common issues
Section titled “Common issues”Setup and configuration
Section titled “Setup and configuration”-
Issue: The Docker command (
docker compose up ...) fails.- Check: Is Docker (and Docker Compose) installed and the daemon running?
- Check: Are you in the correct directory (the cloned
nodedirectory containingdocker-compose.yml)? - Check: Command syntax — typos in
NETWORK_ENVorCLIENTare common.
-
Issue: A container fails to start with
.envor environment variable errors.- Check: Did you set the L1 endpoints (
OP_NODE_L1_ETH_RPC,OP_NODE_L1_BEACON) in the right.envfile (.env.mainnetor.env.sepolia)? - Check: Is
OP_NODE_L1_BEACON_ARCHIVERset if your configuration or L1 node requires it? - Check: Is
OP_NODE_L1_RPC_KINDset correctly for your L1 provider? - Check: (Reth) Are
RETH_CHAINandRETH_SEQUENCER_HTTPcorrectly configured in.env?
- Check: Did you set the L1 endpoints (
-
Issue: JWT secret or auth errors between
op-nodeand the L2 client.- Check: Avoid hand-editing
OP_NODE_L2_ENGINE_AUTHor the JWT file path ($OP_NODE_L2_ENGINE_AUTH) unless you know what you are doing —docker-composehandles this automatically.
- Check: Avoid hand-editing
-
Issue: Permission errors against the data volume (
./reth-data).- Check: The user running
docker composemust have write access to the cloned repo so Docker can write into./reth-data. Avoidsudo-running Docker commands; instead, add your user to thedockergroup.
- Check: The user running
Syncing
Section titled “Syncing”-
Issue: The node never starts syncing or block height stalls.
- Check:
op-nodelogs for L1 endpoint or L2 client connection errors. - Check: Execution client logs for Engine API issues on port
8551or P2P errors. - Check: L1 node health — is it accessible and fully synced?
- Check: System time. Run
ntporchrony; significant clock drift breaks P2P.
- Check:
-
Issue: Sync is unusually slow.
- Check: Hardware against the performance tuning recommendations, especially RAM and NVMe SSD. Disk I/O is usually the bottleneck.
- Check: L1 RPC responsiveness. A slow L1 node throttles L2 sync.
- Check: Network bandwidth and connection quality.
- Check:
op-nodeand L2 client logs for performance warnings or errors.
-
Issue:
optimism_syncStatus(port7545onop-node) reports a large time delta or errors.- Action: Inspect rollup node and L2 execution client logs around the time of the check to identify the cause (often L1 connectivity or L2 client problems).
-
Issue:
Error: nonce has already been usedwhen sending transactions.- Cause: The node is still catching up to the chain head.
- Action: Wait for full sync. Track progress via
optimism_syncStatusor logs.
Performance
Section titled “Performance”- Issue: High CPU, RAM, or disk I/O usage.
- Check: Hardware against the performance tuning recommendations, and upgrade if needed. Local NVMe SSDs are critical.
- Check: Client logs for specific bottlenecks or errors.
Snapshot restoration
Section titled “Snapshot restoration”Refer to the Snapshots guide for the canonical procedure.
-
Issue:
wgetfails or the snapshot download is corrupted.- Check: Network connectivity.
- Check: Available disk space.
- Action: Retry the download and verify the URL.
-
Issue:
tarextraction fails.- Check: Downloaded file integrity.
- Check: Available disk space — extraction needs much more than the download itself.
- Check:
tarcommand syntax.
-
Issue: The node fails to start after restoring a snapshot, with database errors or missing files.
- Check: Did you run
docker compose downbefore touching the data directory? - Check: Did you remove the contents of the old data directory (
./reth-data/*) before extracting and moving the new data? - Check: Is the chain data directly inside
./reth-datarather than in a nested folder (for example,./reth-data/reth/...)? Verify the structure.
- Check: Did you run
-
Issue: Out of disk space during download or extraction.
- Action: Free space or attach a larger volume. Use the storage formula:
(2 * chain_size + snapshot_size + 20% buffer)
- Action: Free space or attach a larger volume. Use the storage formula:
Networking and connectivity
Section titled “Networking and connectivity”-
Issue: RPC or WS connection refused (e.g.,
curl localhost:8545fails).- Check: Is the L2 client container running (
docker compose ps)? - Check: Are you using the correct port (
8545HTTP,8546WS by default)? - Check: L2 client logs — did the RPC server fail to start?
- Check: Are
--http.addrand--ws.addrset to0.0.0.0in the client config or entrypoint so external connections work within the Docker network?
- Check: Is the L2 client container running (
-
Issue: Low peer count.
- Check: P2P port accessibility. Ensure
30303(TCP/UDP) and9222(TCP/UDP for Reth discv5) are not blocked by firewalls on the host or upstream network. - Check: Node logs for P2P errors.
- Action: Behind NAT, set
--nat=extip:<your-ip>viaADDITIONAL_ARGSin.env(see advanced configuration).
- Check: P2P port accessibility. Ensure
-
Issue: Port conflicts in logs or
docker compose upfails.- Check: Other host services using the default ports (
8545,8546,8551,6060,7545,30303):Terminal window sudo lsof -i -P -n | grep LISTENsudo netstat -tulpn | grep LISTEN - Action: Stop the conflicting service or remap the Base container ports in
docker-compose.yml, then update the related variables ($RPC_PORT,$WS_PORT, etc.) in.env.
- Check: Other host services using the default ports (
Getting more help
Section titled “Getting more help”If you have worked through this guide and the issue persists:
- Discord: Join the Base Discord and post in
#node-operatorswith details of your setup, the issue, and relevant logs. - GitHub: Browse the Base Node repository issues, or open a new one if you suspect a bug.