# How to Run a Node

## Hardware Requirements

Please visit the [Minimum hardware configuration](https://docs.arbitrum.io/run-arbitrum-node/run-full-node#minimum-hardware-configuration) for checking the hardware requirements for running a orbit chain node.

## Prerequisites

* [Docker Engine](https://docs.docker.com/engine/install)
* [Docker Compose](https://docs.docker.com/compose/install)

## Configuration

### Set up your environment

Create a directory for your node and enter it:

```sh
mkdir plume-node
cd plume-node
```

### Initialize the configuration

{% tabs %}
{% tab title="Plume Mainnet" %}
Create your `plume-mainnet.yaml` file with the below configuration.

#### **Docker Compose Snippet**

<pre class="language-yaml" data-title="plume-mainnet.yaml" data-line-numbers><code class="lang-yaml">services:
  plume-mainnet:
    image: offchainlabs/nitro-node:v3.9.5-66e42c4-validator
    container_name: plume-mainnet
    restart: unless-stopped
    ports:
      - "8547:8547"
      - "6070:6070"
    command:
      - --chain.id=98866
      - --chain.name=conduit-orbit-deployer
      - --http.addr=0.0.0.0
      - --http.corsdomain=*
      - --http.vhosts=*
      - --ws.expose-all
      - --ws.rpcprefix=/
      - --ws.port=8547
      - --ws.addr=0.0.0.0
      - --ws.origins=*
      - --http.api=net,web3,eth,txpool,debug,admin,arb,arbdebug,arbtrace
      - --ws.api=net,web3,eth,txpool,debug
      - --chain.info-json=[{"chain-id":98866,"parent-chain-id":1,"chain-name":"conduit-orbit-deployer","chain-config":{"chainId":98866,"homesteadBlock":0,"daoForkBlock":null,"daoForkSupport":true,"eip150Block":0,"eip150Hash":"0x0000000000000000000000000000000000000000000000000000000000000000","eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0,"istanbulBlock":0,"muirGlacierBlock":0,"berlinBlock":0,"londonBlock":0,"clique":{"period":0,"epoch":0},"arbitrum":{"EnableArbOS":true,"AllowDebugPrecompiles":false,"DataAvailabilityCommittee":true,"InitialArbOSVersion":32,"InitialChainOwner":"0x5Ec32984332eaB190cA431545664320259D755d8","GenesisBlockNum":0}},"rollup":{"bridge":"0x35381f63091926750F43b2A7401B083263aDEF83","inbox":"0x943fc691242291B74B105e8D19bd9E5DC2fcBa1D","sequencer-inbox":"0x85eC1b9138a8b9659A51e2b51bb0861901040b59","rollup":"0x4eD3F488a5a4417839BbC39712EB76D8Aaee6eE8","validator-wallet-creator":"0x0A5eC2286bB15893d5b8f320aAbc823B2186BA09","deployed-at":21887008,"stake-token":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}}]
      - --node.data-availability.enable=true
      - --node.data-availability.rest-aggregator.enable=true
      - --node.data-availability.rest-aggregator.urls=https://das-plume-mainnet-1.t.conduit.xyz
<strong>      - --node.data-availability.parent-chain-node-url=&#x3C;ETH_RPC_URL>
</strong>      - --execution.forwarding-target=https://rpc.plume.org
      - --execution.caching.archive
<strong>      - --parent-chain.connection.url=&#x3C;ETH_RPC_URL>
</strong><strong>      - --parent-chain.blob-client.beacon-url=&#x3C;ETH_BEACON_RPC_URL>
</strong>      - --node.staker.enable=false
      - --node.feed.input.url=wss://relay-plume-mainnet-1.t.conduit.xyz
      - --node.sequencer=false
      - --execution.rpc.tx-fee-cap=100
      - --execution.rpc.gas-cap=500000000
      - --metrics
      - --metrics-server.addr=0.0.0.0
      - --metrics-server.port=6070
      - --metrics-server.update-interval=5s
</code></pre>

{% hint style="warning" %}
Replace `ETH_RPC_URL` and `ETH_BEACON_RPC_URL` with your RPC URLs.

* ETH\_RPC\_URL = execution layer client like Geth, Erigon, Nethermind, or Reth
* ETH\_BEACON\_RPC\_URL = consensus layer client like Lighthouse, Prysm, Nimbus, or Teku
  {% endhint %}
  {% endtab %}

{% tab title="Plume Testnet" %}
Create your `plume-testnet.yaml` file with the below configuration.

#### **Docker Compose Snippet**

<pre class="language-yaml" data-title="plume-testnet.yaml" data-line-numbers><code class="lang-yaml">services:
  plume-testnet:
    image: offchainlabs/nitro-node:v3.9.5-66e42c4-validator
    container_name: plume-testnet
    restart: unless-stopped
    ports:
      - "8547:8547"
      - "6070:6070"
    command:
      - --chain.id=98867
      - --chain.name=conduit-orbit-deployer
      - --http.addr=0.0.0.0
      - --http.corsdomain=*
      - --http.vhosts=*
      - --ws.expose-all
      - --ws.rpcprefix=/
      - --ws.port=8547
      - --ws.addr=0.0.0.0
      - --ws.origins=*
      - --http.api=net,web3,eth,txpool,debug,admin,arb,arbdebug,arbtrace
      - --ws.api=net,web3,eth,txpool,debug
      - --chain.info-json=[{"chain-id":98867,"parent-chain-id":11155111,"chain-name":"conduit-orbit-deployer","chain-config":{"chainId":98867,"homesteadBlock":0,"daoForkBlock":null,"daoForkSupport":true,"eip150Block":0,"eip150Hash":"0x0000000000000000000000000000000000000000000000000000000000000000","eip155Block":0,"eip158Block":0,"byzantiumBlock":0,"constantinopleBlock":0,"petersburgBlock":0,"istanbulBlock":0,"muirGlacierBlock":0,"berlinBlock":0,"londonBlock":0,"clique":{"period":0,"epoch":0},"arbitrum":{"EnableArbOS":true,"AllowDebugPrecompiles":false,"DataAvailabilityCommittee":true,"InitialArbOSVersion":32,"InitialChainOwner":"0x09a24DD120676EA4034cD47BfA4432a6a87A8a42","GenesisBlockNum":0}},"rollup":{"bridge":"0xC55b89c17d7a35877FA4ea818fea2a70d5765f1c","inbox":"0xb48cdff890199f5De31514024B95F8664F8Af222","sequencer-inbox":"0xbCa991f1831bE1F1E7e5576d5F84A645e70F3E4d","rollup":"0x3B37BeD1c38c6283A56E60340FE813C0BBA031C3","validator-wallet-creator":"0x684A827456373a0C0379B1C82BA31Ee5E4F88F62","deployed-at":7889627,"stake-token":"0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9"}}]
      - --node.data-availability.enable=true
      - --node.data-availability.rest-aggregator.enable=true
      - --node.data-availability.rest-aggregator.urls=https://das-plume-testnet-1.t.conduit.xyz
<strong>      - --node.data-availability.parent-chain-node-url=&#x3C;ETH_SEPOLIA_RPC_URL>
</strong>      - --execution.forwarding-target=https://testnet-rpc.plume.org
      - --execution.caching.archive
<strong>      - --parent-chain.connection.url=&#x3C;ETH_SEPOLIA_RPC_URL>
</strong><strong>      - --parent-chain.blob-client.beacon-url=&#x3C;ETH_SEPOLIA_BEACON_RPC_URL>
</strong>      - --node.staker.enable=false
      - --node.feed.input.url=wss://relay-plume-testnet-1.t.conduit.xyz
      - --node.sequencer=false
      - --execution.rpc.tx-fee-cap=100
      - --execution.rpc.gas-cap=500000000
      - --metrics
      - --metrics-server.addr=0.0.0.0
      - --metrics-server.port=6070
      - --metrics-server.update-interval=5s
</code></pre>

{% hint style="warning" %}
Replace `ETH_SEPOLIA_RPC_URL` and `ETH_SEPOLIA_BEACON_RPC_URL` with your RPC URLs.

* ETH\_SEPOLIA\_RPC\_URL = execution layer client like Geth, Erigon, Nethermind, or Reth
* ETH\_SEPOLIA\_BEACON\_RPC\_URL = consensus layer client like Lighthouse, Prysm, Nimbus, or Teku
  {% endhint %}
  {% endtab %}
  {% endtabs %}

### Start the Node

Run the following command to start your Plume node:

{% tabs %}
{% tab title="Plume Mainnet" %}

```sh
docker-compose -f plume-mainnet.yaml up -d
```

{% endtab %}

{% tab title="Plume Testnet" %}

```sh
docker-compose -f plume-testnet.yaml up -d
```

{% endtab %}
{% endtabs %}

### Verify Operations

Check the logs to ensure the node is syncing successfully:

{% tabs %}
{% tab title="Plume Mainnet" %}

```bash
docker logs plume-mainnet
```

{% endtab %}

{% tab title="Plume Testnet" %}

```bash
docker logs plume-testnet
```

{% endtab %}
{% endtabs %}

## Node Snapshot

To speed up syncing your node, you can use the latest Plume mainnet snapshot instead of syncing from genesis. Download and extract the snapshot from the link below before starting your node:

> [Latest Snapshot](https://storage.googleapis.com/conduit-networks-snapshots/plume-mainnet-1/latest.tar)

This provides a fast, reliable starting point and ensures your node is aligned with the current Plume mainnet state.

***

## Troubleshooting

#### Running on MacOS (Apple Silicon)/Linux

If you are running this setup on an Apple Silicon (M1/M2/M3)/Linux machine, Docker usually handles emulation automatically. However, if you encounter platform errors, you can force the platform by adding the following line to the `plume-mainnet` service in your YAML file:

```yaml
platform: linux/amd64
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.plume.org/plume/developers/how-to-guides/how-to-run-a-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
