A single Docker Compose setup for op-node + reth fullnode sync.
- Keeps one runtime path only:
reth+op-node - Uses one
docker-compose.ymlfor all supported mode templates - Keeps
op-nodesettings in nativeOP_NODE_*env names - Keeps reth settings as flag-aligned env names such as
RETH_CHAINandRETH_ROLLUP_SEQUENCER_HTTP - Validates one of the six supported mode combinations at startup
| Mode | Chain Source | DA Mode | Template |
|---|---|---|---|
custom-ethda |
non-superchain | beacon / blobs | examples/modes/custom-ethda.env |
custom-legacy-da |
non-superchain | generic AltDA | examples/modes/custom-legacy-da.env |
custom-generic-da |
non-superchain | AltDA service | examples/modes/custom-generic-da.env |
superchain-ethda |
superchain | beacon / blobs | examples/modes/superchain-ethda.env |
superchain-legacy-da |
superchain | generic AltDA | examples/modes/superchain-legacy-da.env |
superchain-generic-da |
superchain | AltDA service | examples/modes/superchain-generic-da.env |
The files under examples/modes/*.env are reference templates that describe the supported mode shapes only.
They are not the final delivery config used to run a fullnode.
The model is two-dimensional:
- Chain source:
superchainorcustom - DA mode:
beacon,altda, oraltda-service
reth only cares whether it should launch with --chain=<network> or --chain=/data/genesis.json.
op-node then cares whether DA comes from beacon, generic AltDA, or AltDA service.
-
Open
https://wizard.altlayer.io/. -
Sign in with the email address that was previously registered with AltLayer. If your email has not been registered yet, contact an AltLayer team member first.
-
Find your rollup in the dashboard.
-
In the left sidebar, click
Run a Fullnode. -
Click
Download .envto download the generated environment file for that rollup. -
Place the downloaded file in this repo as
.env. -
Generate a local
jwt.txtfile shared by reth and op-node. This repo does not include a sample JWT secret file.
openssl rand -hex 32 >jwt.txt- Start the stack.
docker compose up -d
docker compose logs -fdocker compose will start a small config-init helper first.
It downloads genesis.json and rollup.json only when the selected mode
provides GENESIS_URL or ROLLUP_CONFIG_URL. In superchain mode it exits
without downloading anything.
- Verify sync.
./scripts/check-sync.shReth itself launches from flags, so the compose file uses a small set of flag-aligned env variables:
RETH_CHAINRETH_ROLLUP_SEQUENCER_HTTPRETH_BOOTNODESRETH_EXTRA_ARGS
For superchain mode:
RETH_CHAIN=your-reth-chain-idRETH_CHAIN is the chain identifier reth accepts for --chain.
It must be set explicitly in superchain mode.
It may differ from OP_NODE_NETWORK depending on how each client names the target network.
For non-superchain mode:
RETH_CHAIN=/data/genesis.json
GENESIS_URL=https://.../genesis.jsonFor optional network-specific reth flags:
RETH_EXTRA_ARGS="--flashblocks-url=ws://xxx --flashblock-consensus"RETH_EXTRA_ARGS is the extension point for reth-only optional flags.
Platform-generated .env should leave room for this field even if most networks keep it empty.
The .env keeps native OP_NODE_* names for op-node settings, for example:
OP_NODE_NETWORKOP_NODE_ROLLUP_CONFIGOP_NODE_L1_ETH_RPCOP_NODE_L1_BEACONOP_NODE_L1_BEACON_IGNOREOP_NODE_ALTDA_ENABLEDOP_NODE_ALTDA_DA_SERVEROP_NODE_ALTDA_DA_SERVICEOP_NODE_P2P_STATICOP_NODE_SYNCMODE
For superchain mode:
OP_NODE_NETWORK=your-op-node-networkOP_NODE_NETWORK is the network name op-node accepts for --network.
It may differ from RETH_CHAIN depending on how each client names the target network.
For non-superchain mode:
OP_NODE_ROLLUP_CONFIG=/data/rollup.json
ROLLUP_CONFIG_URL=https://.../rollup.jsonFor generic AltDA mode:
OP_NODE_L1_BEACON_IGNORE=true
OP_NODE_ALTDA_ENABLED=true
OP_NODE_ALTDA_DA_SERVER=https://...For AltDA service mode:
OP_NODE_L1_BEACON_IGNORE=true
OP_NODE_ALTDA_ENABLED=true
OP_NODE_ALTDA_DA_SERVER=https://...
OP_NODE_ALTDA_DA_SERVICE=trueconfig-initdownloadsgenesis.jsonfromGENESIS_URLwhen custom mode uses/data/genesis.jsonRETH_ROLLUP_SEQUENCER_HTTPis required in this repo for fullnode modeRETH_BOOTNODESis required in this repo for fullnode modeconfig-initdownloadsrollup.jsonfromROLLUP_CONFIG_URLwhen custom mode uses/data/rollup.jsonnode-entrypoint.shvalidates one of the six supported mode combinations:custom/superchainxbeacon/altda/altda-service- AltDA modes require
OP_NODE_ALTDA_ENABLED=true - AltDA modes also require
OP_NODE_ALTDA_DA_SERVERandOP_NODE_L1_BEACON_IGNORE=true - Beacon mode requires
OP_NODE_L1_BEACON op-nodecurrently connects torethoverhttp://reth:8551OP_NODE_P2P_STATICis required in this repo for fullnode mode- Ports currently live in docker-compose.yml. If you want different exposed host ports, edit compose directly instead of
.env.
OP_NODE_RPC_ENABLE_ADMIN is optional.
It is not needed for normal fullnode RPC usage, and only exposes op-node admin RPC methods such as admin_resetDerivationPipeline.
| Service | Port | Purpose |
|---|---|---|
| reth | 8545 | HTTP RPC |
| reth | 8546 | WebSocket RPC |
| reth | 8551 | Engine API |
| reth | 6060 | Metrics |
| reth | 30303 | P2P |
| op-node | 9545 | RPC |
| op-node | 7300 | Metrics |
| op-node | 9003 | P2P |