# How to Run a Full Node for an Orbit Chain

This section provides step-by-step instructions for running an Orbit node on your local machine.

## Prerequisites

* **Latest Docker Image**: `offchainlabs/nitro-node:v3.2.1-d81324d` (You can find the latest image [here](https://github.com/OffchainLabs/nitro/releases))

## Minimum Hardware Configuration

* **RAM**: 8-16 GB
* **CPU**: 2-4 core CPU (e.g., AWS t3.xLarge)
* **Storage**: Depends on the Orbit chain and its traffic over time

## Required Parameters

### 1. Parent Chain Parameters

The `--parent-chain.connection.url` argument requires a standard RPC endpoint for an EVM node, whether self-hosted or obtained from a node service provider:

```sh
--parent-chain.connection.url=<Parent chain RPC URL>
```

### 2. Child Chain Parameters

In the Arbitrum Orbit context, the child chain is an L2 or an L3 Orbit chain. The required parameters are `chain.info-json` and `chain.name`.

`chain.info-json` A JSON string that contains required information about the Orbit chain.

```sh
--chain.info-json=<Orbit Chain's chain info>
```

`chain.name` A mandatory flag that needs to match the chain name used in --chain.info-json:

````
```sh
--chain.name=<Orbit Chain's name>
```
````

3\. AnyTrust Chains For AnyTrust chains, add the following flags to the command or configuration:

```sh
--node.data-availability.enable
--node.data-availability.rest-aggregator.urls=<A list of DAS REST endpoints>
```

Or

```sh
--node.data-availability.rest-aggregator.online-url-list=<A URL that returns a list of the DAS REST endpoints>
```

### 4. Important Ports

| Protocol       | Port |
| -------------- | ---- |
| RPC/http       | 8547 |
| RPC/websocket  | 8548 |
| Sequencer Feed | 9642 |

For the RPC/websocket protocol, use the following flags:

```sh
--ws.port=8548
--ws.addr=0.0.0.0
--ws.origins=\*
```

### 5. Putting it all together

When running a Docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the Docker image should be /home/user/.arbitrum.

Example:

```sh
docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.3.4-b4cc111 --parent-chain.connection.url=<Parent chain RPC URL> --chain.id=<OrbitChainId> --chain.name=<My Arbitrum Orbit Chain> --http.api=net,web3,eth --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --chain.info-json=<Orbit Chain's chain info>
```

Ensure that /some/local/dir/arbitrum already exists; otherwise, the directory might be created with root as the owner, and the Docker container won't be able to write to it.

When using the flag `--chain.info-json=<Orbit Chain's chain info>, replace <Orbit Chain's chain info>` with the specific chain info JSON string of the Orbit chain for which you wish to run the node.

Example:

```sh
    --chain.info-json="[{\"chain-id\":94692861356,\"parent-chain-id\":421614,\"chain-name\":\"My Arbitrum L3 Chain\",\"chain-config\":{\"chainId\":94692861356,\"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\":false,\"InitialArbOSVersion\":10,\"InitialChainOwner\":\"0xAde4000C87923244f0e95b41f0e45aa3C02f1Bb2\",\"GenesisBlockNum\":0}},\"rollup\":{\"bridge\":\"0xde835286442c6446E36992c036EFe261AcD87F6d\",\"inbox\":\"0x0592d3861Ea929B5d108d915c36f64EE69418049\",\"sequencer-inbox\":\"0xf9d77199288f00440Ed0f494Adc0005f362c17b1\",\"rollup\":\"0xF5A42aDA664E7c2dFE9DDa4459B927261BF90E09\",\"validator-utils\":\"0xB11EB62DD2B352886A4530A9106fE427844D515f\",\"validator-wallet-creator\":\"0xEb9885B6c0e117D339F47585cC06a2765AaE2E0b\",\"deployed-at\":1764099}}]"
```

### Further Reading

For more detailed instructions and additional configuration options, please refer to the Arbitrum documentation [here](https://docs.arbitrum.io/node-running/how-tos/running-an-orbit-node).


---

# 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://devdocs.educhain.xyz/educhain/how-to-run-a-full-node-for-an-orbit-chain.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.
