# Required L1 Beacon Node Endpoints for Running a Base Node

> Understand the three essential L1 beacon node endpoints required for running a Base node: ETH RPC beacon and archiver. Learn why each is crucial for your setup.

- Repository: [Base/node](https://github.com/base/node)
- Tags: how-to-guide
- Published: 2026-03-03

---

**A Base node requires three L1 endpoints: `OP_NODE_L1_ETH_RPC` for standard Ethereum JSON-RPC, `OP_NODE_L1_BEACON` for consensus data, and `OP_NODE_L1_BEACON_ARCHIVER` for historical beacon data required for rollups.**

Running a Base node requires connectivity to Ethereum L1 through specific beacon node endpoints. According to the `base/node` repository source code, you must configure three distinct environment variables to enable L2 synchronization and block derivation. These endpoints allow the OP-Node component to fetch both execution-layer state and consensus-layer data from Ethereum mainnet or Sepolia testnet.

## The Three Required L1 Beacon Node Endpoints

The `base/node` repository defines three mandatory environment variables in the [`README.md`](https://github.com/base/node/blob/main/README.md) (lines 21-24) that configure L1 connectivity:

### OP_NODE_L1_ETH_RPC

The **standard L1 JSON-RPC endpoint** handles transaction and state queries against Ethereum's execution layer. This endpoint provides standard Ethereum RPC methods for retrieving blocks, transactions, and account states.

### OP_NODE_L1_BEACON

The **L1 beacon node endpoint** provides consensus-layer data required for block derivation. This endpoint connects to a Beacon API implementation (such as Lighthouse, Prysm, or Teku) to fetch blob data and consensus information necessary for Base L2 operations.

### OP_NODE_L1_BEACON_ARCHIVER

The **beacon archiver endpoint** supplies historical beacon data specifically required for rollup operations. While standard beacon nodes retain recent data, the archiver endpoint ensures access to older consensus data that Base needs to synchronize from L1.

## Configuration and Deployment

### Environment File Setup

Configure these endpoints in the appropriate `.env` file for your target network. The repository provides `.env.mainnet` and `.env.sepolia` templates containing placeholder values for all three L1 beacon node endpoints.

```dotenv

# Required L1 configuration - replace with your endpoints

OP_NODE_L1_ETH_RPC=https://mainnet.infura.io/v3/<PROJECT_ID>
OP_NODE_L1_BEACON=https://beacon.chain.lighthouse.sigp.io
OP_NODE_L1_BEACON_ARCHIVER=https://beacon-archiver.base.org

```

### Docker Compose Integration

The [`docker-compose.yml`](https://github.com/base/node/blob/main/docker-compose.yml) file injects these environment variables directly into the OP-Node container. The `op-node-entrypoint` script reads these values during container startup to initialize the L1 connection.

Launch your node using the configured environment:

```bash

# Mainnet deployment (default .env)

docker compose up --build

# Sepolia testnet deployment

NETWORK_ENV=.env.sepolia docker compose up --build

```

## Source Code Implementation Details

### README Documentation

The [`README.md`](https://github.com/base/node/blob/main/README.md) at the repository root explicitly documents these three L1 beacon node endpoints as required configuration parameters. Lines 21-24 define the environment variable names and their purposes for both mainnet and testnet deployments.

### Container Orchestration

In [`docker-compose.yml`](https://github.com/base/node/blob/main/docker-compose.yml), the orchestration layer maps the environment variables from your selected `.env` file into the OP-Node service container. The `op-node-entrypoint` shell script then processes these variables to construct the node's startup command with appropriate L1 endpoint flags.

You can optionally specify the L1 RPC type using `OP_NODE_L1_RPC_KIND` (defaulting to `debug_geth`), though this does not replace the requirement for the three primary beacon node endpoints.

## Summary

- **Three endpoints are mandatory**: `OP_NODE_L1_ETH_RPC` for execution data, `OP_NODE_L1_BEACON` for consensus data, and `OP_NODE_L1_BEACON_ARCHIVER` for historical rollup data.
- **Configuration files**: Set these in `.env.mainnet` or `.env.sepolia` depending on your target network.
- **Docker integration**: The [`docker-compose.yml`](https://github.com/base/node/blob/main/docker-compose.yml) and `op-node-entrypoint` scripts automatically consume these variables to configure the OP-Node container.
- **Source authority**: These requirements are documented in [`README.md`](https://github.com/base/node/blob/main/README.md) lines 21-24 and implemented in the container orchestration files of the `base/node` repository.

## Frequently Asked Questions

### What happens if I don't configure OP_NODE_L1_BEACON_ARCHIVER?

Without the **beacon archiver endpoint**, your Base node cannot retrieve historical consensus data required for processing older rollup batches. The node will fail to sync past the retention window of standard beacon nodes, typically causing synchronization errors within days of the chain head.

### Can I use the same URL for OP_NODE_L1_BEACON and OP_NODE_L1_BEACON_ARCHIVER?

While technically possible if your beacon node maintains full historical archives, **separate endpoints are recommended**. Standard beacon nodes often prune old data, whereas archiver endpoints retain the full history required for Base's derivation process. Using a dedicated archiver ensures reliable access to historical blob data.

### Where does the Base node source code reference these environment variables?

The [`README.md`](https://github.com/base/node/blob/main/README.md) (lines 21-24) documents these variables as required configuration, while the [`docker-compose.yml`](https://github.com/base/node/blob/main/docker-compose.yml) implements the injection mechanism. The `op-node-entrypoint` script reads these values during container initialization to pass them as command-line arguments to the OP-Node binary.

### Do I need different L1 beacon node endpoints for Base mainnet versus Sepolia?

Yes, you must configure **network-specific endpoints** in the corresponding environment files. Use `.env.mainnet` for mainnet L1 endpoints pointing to Ethereum mainnet beacon nodes, and `.env.sepolia` for Sepolia testnet L1 endpoints. Never mix mainnet and testnet L1 endpoints in the same configuration.