# 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).
