Arbitrum Nitro node, built on Offchain Labs' own official image.
274
Maintainer: [email protected]
This Docker image provides Arbitrum Nitro, built on top of Offchain Labs' own published offchainlabs/nitro-node
image rather than compiled from source, the one exception to how
every other image on this account is built. Nitro is the node software that powers Arbitrum One and other Arbitrum
chains. The code can be viewed on the
Fiftysix Github.
latest: Points to the latest version of Nitro.<version>: Points to a specific Offchain Labs release, tagged as they tag it (version plus commit), for example
3.11.4-7d5ac27.Nitro's own build is a 20+ stage Go/Rust/WASM toolchain that ends by downloading dozens of historical "consensus machine" WASM binaries, each pinned to an on-chain module-root hash, and validating the freshly-compiled prover against them - these are what the network's fraud-proof system checks a validator's computation against. Offchain Labs' own official Dockerfile builds from a past official release image to source machine files for older consensus versions it can no longer regenerate standalone. Reproducing that independently risks a validator/prover mismatch that would be invisible until it mattered. Building on their published, multi-arch image guarantees the module roots match what the network expects.
Nitro is licensed under the Business Source License 1.1, not a permissive open-source license. Its Additional Use Grant appears to cover running a node against Arbitrum's own chains. Review the license yourself before relying on this image for your use case.
"Arbitrum Nitro is the software that powers Arbitrum chains... it combines the security benefits of Ethereum's Geth client with the speed and cost efficiency of Optimistic Rollups." Unlike an Ethereum execution or consensus client, Nitro is a single monolithic process - there is no separate execution/consensus split and no JWT secret of its own. It reads execution data from an Ethereum L1 over plain JSON-RPC, and blob data from an L1 beacon node's REST API.
Nitro needs an Ethereum L1 execution RPC endpoint and an L1 consensus (beacon) endpoint that can serve blob
sidecars. Since the Fusaka upgrade, a default L1 beacon node cannot serve blobs at all - see
Fiftysix's Ethereum image and its --blob-serving support if you are
pairing this with a Fiftysix-built L1.
docker pull fiftysix/nitro
docker run --name nitro -d fiftysix/nitro \
--chain.id 42161 \
--parent-chain.id 1 \
--parent-chain.connection.url <your-l1-execution-rpc-url> \
--parent-chain.blob-client.beacon-url <your-l1-beacon-url>
This starts a mainnet Arbitrum One node. For Arbitrum Sepolia, use --chain.id 421614 --parent-chain.id 11155111
against a Sepolia L1.
Note: without a real snapshot or an existing database, this syncs from genesis, which is impractically slow. See Snapshot Downloading below.
In this Docker image, the following directories are used:
/node/nitro/data): Where Nitro stores its L2 chain data. This directory is specified in the
Dockerfile and should be mounted if you want to persist data across container restarts./node/nitro/scripts): Contains the entrypoint script (nitro-entrypoint.sh).The base image's own non-root user (user, uid 1000) is reused as-is.
Mounting the Data Directory:
docker run --name nitro -v /path/to/local/data:/node/nitro/data -d fiftysix/nitro \
--chain.id 42161 --parent-chain.id 1 \
--parent-chain.connection.url <your-l1-execution-rpc-url> \
--parent-chain.blob-client.beacon-url <your-l1-beacon-url>
Official Arbitrum snapshots are published at snapshot.arbitrum.foundation. Rather than downloading and extracting manually, let Nitro do it:
docker run --name nitro -v /path/to/local/data:/node/nitro/data fiftysix/nitro \
--chain.id 42161 --parent-chain.id 1 \
--parent-chain.connection.url <your-l1-execution-rpc-url> \
--parent-chain.blob-client.beacon-url <your-l1-beacon-url> \
--init.latest pruned --init.then-quit
This downloads, verifies and initialises the latest pruned snapshot, then exits. Remove --init.latest/--init.then-quit
for subsequent runs so the node starts normally against the initialised database. --init.latest also accepts
archive and genesis.
docker logs nitro --tail 100
8547: HTTP-RPC server (Nitro's own default; distinct from the 8545 every Ethereum L1 execution client in this
account uses)8548: WebSocket-RPC server9642: Sequencer feed relayFor support, please contact [email protected].
Fiftysix is committed to making blockchain technology accessible, efficient, and reliable through robust decentralization. Learn more at fiftysix.tech.
Content type
Image
Digest
sha256:79273c990…
Size
1.3 GB
Last updated
5 days ago
docker pull fiftysix/nitro