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

> 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/linea-besu.md](https://docs.linea.build/network/how-to/run-a-node/linea-besu.md).

# Linea Besu

Linea Besu is a Besu distribution with Linea-specific plugins bundled and configured through profiles in the [Linea Besu package](https://github.com/Consensys/linea-monorepo/tree/main/linea-besu/package). Advanced profiles enable extra Linea features such as `linea_estimateGas`.

warning

The `advanced` profile option doesn't currently support macOS/ARM. Please use Linux/ARM or Windows/X86_64.

We recommend using Linea Besu over standard Besu if you intend to run a node to interact with the blockchain, rather than just following it. Use Linea Besu if:

-   You are responsible for operating nodes as a service for others to use.
-   You want to use Linea with a personal, private RPC endpoint.

## Run using Docker

### Prerequisites

-   [Docker](https://docker.com/products/docker-desktop/)
-   Linux/ARM or Windows/X86_64

### Step 1. Download the relevant `docker-compose.yaml` file

To run a Linea Besu node, access the [`/docker` directory](https://github.com/Consensys/linea-monorepo/tree/main/linea-besu/package/docker) in the Linea Besu repository. This directory is the source of truth for Linea Besu compose profiles. Each profile supports different Linea Besu plugin configurations depending on your use case.

-   Mainnet
-   Linea Sepolia

Download the appropriate `.yaml` file for your use case:

-   [`basic-mainnet`](https://github.com/Consensys/linea-monorepo/blob/main/linea-besu/package/docker/docker-compose-basic-mainnet.yaml): Creates a basic follower node on Linea Mainnet with no plugins enabled.
-   [`advanced-mainnet`](https://github.com/Consensys/linea-monorepo/blob/main/linea-besu/package/docker/docker-compose-advanced-mainnet.yaml): Creates an advanced node on Linea Mainnet with plugins that enable support for `linea_estimateGas` and the `finalized` block parameter tag.

Download the appropriate `.yaml` file for your use case:

-   [`basic-sepolia`](https://github.com/Consensys/linea-monorepo/blob/main/linea-besu/package/docker/docker-compose-basic-sepolia.yaml): Creates a basic follower node on Linea Sepolia with no plugins enabled.
-   [`advanced-sepolia`](https://github.com/Consensys/linea-monorepo/blob/main/linea-besu/package/docker/docker-compose-advanced-sepolia.yaml): Creates an advanced node on Linea Sepolia with plugins that enable support for `linea_estimateGas` and the `finalized` block parameter tag.

### Step 2. Update IP address

In the `.yaml` file you downloaded, adjust the `--p2p-host` command with your public IP address:

```yaml
--p2p-host=103.10.10.10
```

tip

You can use [this page](https://whatismyip.com/) to find your public IP address.

### Step 3. Start the Linea Besu node

-   Mainnet
-   Linea Sepolia

In a terminal, navigate to your `.yaml` file's directory. Then start the node by running `docker compose`:

```bash
docker compose -f ./your-file-path/docker-compose-advanced-mainnet.yaml up
```

Alternatively, you can run a node without downloading a `.yaml` file with a `docker run` command. For example:

```bash
docker run -e BESU_PROFILE=advanced-mainnet consensys/linea-besu-package:latest
```

Adjust the `BESU_PROFILE` to match one of the profiles listed in step 1, and replace the image name with a more recent version from the releases page.

In a terminal, navigate to your `.yaml` file's directory. Then start the node by running `docker compose`:

```bash
docker compose -f ./your-file-path/docker-compose-advanced-sepolia.yaml up
```

Alternatively, you can run a node without downloading a `.yaml` file with a `docker run` command. For example:

```bash
docker run -e BESU_PROFILE=advanced-sepolia consensys/linea-besu-package:beta-v4.0-rc11-20251004063519-a5c4c31
```

Adjust the `BESU_PROFILE` to match one of the profiles listed in step 1, and replace the image name with a more recent version from the releases page.

## Alternative: Run using the binary distribution

### Step 1. Download the Linea Besu package

[Download the latest version](https://github.com/Consensys/linea-monorepo/releases) of the Linea Besu package from the releases page.

note

Find the **Assets** subheading on the latest release and download the file named `linea-besu-package-<version>.tar.gz`.

### Step 2. Extract the package contents

The `linea-besu-package-<version>.tar.gz` is a compressed file; move it to the directory of your choice and extract it.

```bash
tar -xzvf linea-besu-package-<version>.tar.gz
```

### Step 3. Define disk space volume (optional)

Define a volume size appropriate to your expected usage. Besu nodes use:

-   Full node: Total size 508.88 GB; increasing by 8.98 MB daily
-   Archive node: Total size 3.87 TB; increasing by 2.84 GB daily

_Last updated: Nov 3, 2025_

Use these figures as a basis to determine the extent to which you want to future-proof your node.

Ensure you mount the `data-path` to the custom volume when you start the node.

note

Blockchain clients can take up a lot of disk space. By defining the amount of disk space you're willing to dedicate to your client (and the block data that it will be syncing), you can ensure that you still have enough room on your disk for whatever else you need.

Select the relevant operating system for the steps on how to create a custom volume.

Ubuntu

-   Open Terminal
-   Use the `df -h` command to check the available disk space
-   Choose a maximum size for the volume. We'll use 100GB for this example.
-   Use `fallocate` to create a file of the desired size, e.g. `fallocate -l 100G myfile.img`
-   Use `mkfs.ext4` to format the file as an ext4 filesystem. e.g. `mkfs.ext4 myfile.img`
-   Mount the file using `mount`, e.g. `mount -o loop myfile.img /mnt/myvolume`
-   The contents will now be available in `/mnt/myvolume`, up to a maximum of 100GB

MacOS

-   Open Terminal
-   Use the `df -h` command to check the available disk space
-   Choose a maximum size for the volume. We'll use 100GB for this example.
-   Use `hdiutil` to create a sparse image of the desired size, e.g. `hdiutil create -size 100g -type SPARSE -fs HFS+X myfile.dmg`
-   Mount the image using `hdiutil`, e.g. `hdiutil attach myfile.dmg`
-   The contents will now be available mounted under `/Volumes`, up to a maximum of 100GB

Windows

Without Windows Subsystem Linux

-   Open Command Prompt as Administrator
-   Use the `dir` command to check available disk space on the volume you want to create the disk image
-   Choose a maximum size for the volume. We'll use 100GB for this example.
-   Use the `fsutil` command to create a sparse file of the desired size, e.g. `fsutil file createnew myfile.img 107374182400` (for a 100GB file)
-   Initialize the disk image using `diskpart`:
    -   `diskpart`
    -   `select vdisk file="myfile.img"`
    -   `create vdisk maximum=100000`
    -   `attach vdisk`
    -   `exit`
-   Format the volume using `format`, e.g. `format F: /FS:NTFS /A:64K /Q`
-   The new volume will now be available as drive letter F:, up to the maximum 100GB size

To mount an existing disk image:

-   Open Command Prompt as Administrator
-   Use `diskpart`
    -   `select vdisk file="myfile.img"`
    -   `attach vdisk`
-   The disk image will be mounted and accessible under the assigned drive letter

With Windows Subsystem Linux

-   Open WSL
-   Use the `df -h` command to check the available disk space
-   Choose a maximum size for the volume. We'll use 100GB for this example.
-   Use `fallocate` to create a file of the desired size, e.g. `fallocate -l 100G myfile.img`
-   Use `mkfs.ext4` to format the file as an ext4 filesystem. e.g. `mkfs.ext4 myfile.img`
-   Mount the file using `mount`, e.g. `mount -o loop myfile.img /mnt/myvolume`
-   The contents will now be available in `/mnt/myvolume`, up to a maximum of 100GB

### Step 4. Select a profile

In the extracted directory, find `profiles`. The `.toml` configuration files in this folder define the parameters for each possible profile you can select for your Linea Besu node.

-   Mainnet
-   Linea Sepolia

Select one according to your preferences:

-   `basic-mainnet`: Creates a basic follower node on Linea Mainnet with no plugins enabled.
-   `advanced-mainnet`: Creates an advanced node on Linea Mainnet with plugins that enable support `linea_estimateGas` and the `finalized` block parameter tag.

Select one according to your preferences:

-   `basic-sepolia`: Creates a basic follower node on Linea Sepolia with no plugins enabled.
-   `advanced-sepolia`: Creates an advanced node on Linea Sepolia with plugins that enable support `linea_estimateGas` and the `finalized` block parameter tag.

### Step 5. Start the Linea Besu client

In a terminal, navigate to the `linea-besu-package-<version>` directory, where the `bin`, `profiles` etc. directories are.

Now run Linea Besu, specifying your preferred profile. The `--plugin-linea-l1-rpc-endpoint` must only be defined if you are running an `advanced` node, since this is needed to query finalization on L1.

-   Mainnet
-   Linea Sepolia

```bash
bin/besu --profile=advanced-mainnet --plugin-linea-l1-rpc-endpoint=YOUR_L1_RPC_ENDPOINT
```

```bash
bin/besu --profile=advanced-sepolia --plugin-linea-l1-rpc-endpoint=YOUR_L1_RPC_ENDPOINT
```

The node will attempt to find peers to begin synchronizing and to download the world state.

## Note on profiles and genesis

Profiles already embed the Linea network and do not require a genesis file. See the [Linea Besu package README](https://github.com/Consensys/linea-monorepo/blob/main/linea-besu/package/README.md).
