<!-- Canonical: https://docs.linea.build/network/how-to/run-a-node -->

> For the complete Linea documentation index, see [llms.txt](/llms.txt).
> Agents can fetch this page as Markdown at [https://docs.linea.build/network/how-to/run-a-node.md](https://docs.linea.build/network/how-to/run-a-node.md).

# Run a Linea node

Linea follows Ethereum’s dual-layer design. Every Linea node runs:

-   Maru for consensus
-   An execution layer client of your choice

The following table lists the clients covered in this guide, and whether they provide direct access to Linea-specific features.

| Name | Description | Runs Linea-specific features? |
| --- | --- | --- |
| [Besu](/network/how-to/run-a-node/besu) | An Java-based open-source Ethereum client that can be extended using plugins. | ❌ |
| [Linea Besu](/network/how-to/run-a-node/linea-besu) | Besu client with plugins that implement Linea-specific features, such as [API methods](/api/reference) and a [finalized](/network/overview/transaction-finality#use-the-finalized-tag) tag. | ✅ |
| [Geth](/network/how-to/run-a-node/geth) | The most widely used open-source Ethereum client, written in Go. | ❌ |
| [Erigon](/network/how-to/run-a-node/erigon) | A Go-based Ethereum client focused on performance and saving disk space. Until a published Erigon `v3.5` or later image is available, build the image from the Linea support merge commit. | ❌ |

## Docker Compose quickstart

Docker Compose is the recommended method to run a node. For binaries or build-from-source and client-specific instructions, see the individual guides, or keep reading for a general guide.

Use Docker Compose as the default path. The canonical compose files live in the Linea monorepo:

-   Mainnet: [`/docs/getting-started/linea-mainnet/docker-compose.yml`](https://github.com/Consensys/linea-monorepo/blob/main/docs/getting-started/linea-mainnet/docker-compose.yml)
-   Linea Sepolia: [`/docs/getting-started/linea-sepolia/docker-compose.yml`](https://github.com/Consensys/linea-monorepo/blob/main/docs/getting-started/linea-sepolia/docker-compose.yml)

Quick steps:

1.  Pick your network (mainnet or Linea Sepolia) and download the compose file above.
2.  From that directory, run Docker Compose to start Maru plus your execution client.
3.  For Linea-specific APIs such as `linea_estimateGas` and the `finalized` tag, use the Linea Besu compose example.

Next actions:

-   Default compose examples: [Linea Besu](/network/how-to/run-a-node/linea-besu) and [Maru](/network/how-to/run-a-node/maru).
-   Alternative EL clients: [Besu](/network/how-to/run-a-node/besu), [Geth](/network/how-to/run-a-node/geth), or [Erigon](/network/how-to/run-a-node/erigon) to follow the chain. Erigon currently requires a locally built image until a published Erigon `v3.5` or later release is available.
-   Upgrades: see [upgrade guides](/network/how-to/run-a-node/beta-v4-migration).
-   Bootnodes: see [bootnodes](/network/how-to/run-a-node/bootnodes) if you need to override defaults.

## Canonical sources

-   Compose files in the Linea monorepo (paths above) are the source of truth for images and versions.
-   **Linea Besu** (basic and advanced profiles): use the [`linea-besu/package/docker`](https://github.com/Consensys/linea-monorepo/tree/main/linea-besu/package/docker) compose profiles.
-   **All other execution layer clients** (Besu, Geth, etc.): use the compose files under [`docs/getting-started/`](https://github.com/Consensys/linea-monorepo/tree/main/docs/getting-started).

## Alternative paths

Binaries or build-from-source are supported. Each client page documents its binary path as an alternative if Docker Compose does not fit your environment.

There are no financial incentives for running a Linea node, and there is currently no option to vote on blocks as part of the consensus mechanism or [fork-choice](https://eth2book.info/capella/part3/forkchoice/#whats-a-fork-choice) like on Ethereum.
