From 3471ccb395c69e784b71de42bea8b2a61bedbded Mon Sep 17 00:00:00 2001 From: soyboy Date: Wed, 5 Mar 2025 18:26:46 -0600 Subject: [PATCH 1/4] updating node from source tutorials --- pages/operators/node-operators/tutorials.mdx | 9 +- .../node-operators/tutorials/_meta.json | 5 +- .../tutorials/node-from-source.mdx | 32 +-- .../{mainnet.mdx => run-node-from-source.mdx} | 25 +- .../node-operators/tutorials/testnet.mdx | 252 ------------------ public/_redirects | 2 + 6 files changed, 28 insertions(+), 297 deletions(-) rename pages/operators/node-operators/tutorials/{mainnet.mdx => run-node-from-source.mdx} (93%) delete mode 100644 pages/operators/node-operators/tutorials/testnet.mdx diff --git a/pages/operators/node-operators/tutorials.mdx b/pages/operators/node-operators/tutorials.mdx index c2979638f..24911a7d7 100644 --- a/pages/operators/node-operators/tutorials.mdx +++ b/pages/operators/node-operators/tutorials.mdx @@ -10,14 +10,13 @@ import { Card, Cards } from 'nextra/components' # Tutorials -This section provides information on various node operations. It covers running an OP Mainnet node from source, running a node with Docker, building a node from source, and running an OP Sepolia node from source. You'll find tutorials and guides to help you understand and work with these topics. +This section provides information on how to run a node on a Superchain network. It covers running a node with Docker, building a Superchain node from source, and running a Superchain node from source. - - - + + + - diff --git a/pages/operators/node-operators/tutorials/_meta.json b/pages/operators/node-operators/tutorials/_meta.json index cff8f7900..7e846b883 100644 --- a/pages/operators/node-operators/tutorials/_meta.json +++ b/pages/operators/node-operators/tutorials/_meta.json @@ -1,6 +1,5 @@ { "node-from-docker": "Running a node with Docker", - "node-from-source": "Building a node from source", - "mainnet": "Running OP Mainnet from source", - "testnet": "Running OP Sepolia from source" + "node-from-source": "Building a Superchain node from source", + "run-node-from-source": "Running a Superchain node from source" } diff --git a/pages/operators/node-operators/tutorials/node-from-source.mdx b/pages/operators/node-operators/tutorials/node-from-source.mdx index 6515304d8..363fa2f49 100644 --- a/pages/operators/node-operators/tutorials/node-from-source.mdx +++ b/pages/operators/node-operators/tutorials/node-from-source.mdx @@ -1,12 +1,12 @@ --- -title: Building a node from source +title: Building a Superchainnode from source lang: en-US description: Learn how to build your own node without relying on images from Optimism. --- import { Callout, Steps } from 'nextra/components' -# Building a node from source +# Building a Superchain node from source Docker images are the easiest way to run an OP Mainnet node, but you can always build your own node from source code. You might want to do this if you want to run a node on a specific architecture or if you want to inspect the source code of the node you're running. @@ -41,14 +41,7 @@ In this tutorial you will build the `l2geth` implementation of Legacy Geth as fo ## Software dependencies -| Dependency | Version | Version Check Command | -| ------------------------------------------------------------- | -------- | --------------------- | -| [git](https://git-scm.com/) | `^2` | `git --version` | -| [go](https://go.dev/) | `^1.21` | `go version` | -| [node](https://nodejs.org/en/) | `^20` | `node --version` | -| [pnpm](https://pnpm.io/installation) | `^8` | `pnpm --version` | -| [foundry](https://github.com/foundry-rs/foundry#installation) | `^0.2.0` | `forge --version` | -| [make](https://linux.die.net/man/1/make) | `^4` | `make --version` | +Our build environment is managed through a tool called [mise](https://mise.jdx.dev/). Mise provides a convenient way to install and manage all necessary dependencies for building and testing the packages in this repository. You can find the mise configuration in the [`mise.toml`](https://github.com/ethereum-optimism/optimism/blob/develop/mise.toml) in the root of the Optimism Monorepo. ## Build the rollup node @@ -80,28 +73,13 @@ Make sure to read the Releases page carefully to determine the correct branch to Some releases may only be required for the OP Sepolia testnet. -{

Install Node.js dependencies

} - -Install the Node.js dependencies for the Optimism Monorepo. - -```bash -pnpm install -``` - -{

Build Node.js packages

} - -Build the Node.js packages for the Optimism Monorepo. - -```bash -pnpm build -``` - {

Build op-node

} Build the `op-node` implementation of the Rollup Node. ```bash -make op-node +cd op-node +just ``` diff --git a/pages/operators/node-operators/tutorials/mainnet.mdx b/pages/operators/node-operators/tutorials/run-node-from-source.mdx similarity index 93% rename from pages/operators/node-operators/tutorials/mainnet.mdx rename to pages/operators/node-operators/tutorials/run-node-from-source.mdx index e8e462e51..d776225a8 100644 --- a/pages/operators/node-operators/tutorials/mainnet.mdx +++ b/pages/operators/node-operators/tutorials/run-node-from-source.mdx @@ -1,15 +1,15 @@ --- -title: Running an OP Mainnet node from source +title: Running a Superchain node from source lang: en-US -description: Learn how to run an OP Mainnet node from source code for full nodes and archive nodes. +description: Learn how to run a Superchain node from source code for full nodes and archive nodes. --- import { Callout, Steps } from 'nextra/components' -# Running an OP Mainnet node from source +# Running a Superchain node from source -This tutorial explains how to run an OP Mainnet node from source code for full nodes and archive nodes. -Running an OP Mainnet node from source code is a flexible alternative to using pre-built Docker images. +This tutorial explains how to run an OP Stack node from source code for full nodes and archive nodes. +Running an OP Stack node from source code is a flexible alternative to using pre-built Docker images. ## Building the source code @@ -39,7 +39,9 @@ Based on these trends, node operators should plan for future storage needs and c Geth supports a "freezer" feature to store older chain data on HDDs, saving SSD space. Configure this for OP Mainnet using the `--datadir.ancient` flag. See [Geth docs](https://geth.ethereum.org/docs/fundamentals/databases) and [OP docs](/operators/node-operators/configuration/execution-config#datadirancient) for details. -## Full nodes +## Superchain nodes + +All nodes in the Superchain ecosystem can be run from `op-node` and `op-geth` binaries if they're included in the [Superchain Registry](/superchain/superchain-registry). You can specify the type of node you want to run by configuring the `--network` flag on `op-node` and the `--op-network` flag on `op-geth`. ### Assess blob archiver @@ -86,6 +88,9 @@ You can still start `op-geth` without yet running `op-node`, but the `op-geth` i {

Start op-geth

} + + If you want to run an archive node, you will need to set `--gcmode=archive`. If you want to run an OP Mainnet archive node, please refer to the [OP Mainnet archive nodes](#op-mainnet-archive-nodes) section. + Use the following command to start `op-geth` in a default configuration. The JSON-RPC API will become available on port 8545. Refer to the `op-geth` [configuration documentation](/operators/node-operators/configuration/execution-config) for more detailed information about available options. @@ -99,7 +104,7 @@ You can still start `op-geth` without yet running `op-node`, but the `op-geth` i --authrpc.jwtsecret=./jwt.txt \ --verbosity=3 \ --rollup.sequencerhttp=https://mainnet-sequencer.optimism.io/ \ - --op-network=op-mainnet \ + --op-network=op-sepolia \ --datadir=$DATADIR_PATH ``` @@ -156,7 +161,7 @@ Once you've started `op-geth`, you can start `op-node`. --l1.beacon=$L1_BEACON_URL \ --l2=ws://localhost:8551 \ --l2.jwt-secret=./jwt.txt \ - --network=op-mainnet \ + --network=op-sepolia \ --syncmode=execution-layer \ --l2.enginekind=geth ``` @@ -225,7 +230,7 @@ There are two stages on `op-geth` for snap sync: #### Full sync -You will need access to the migrated OP Mainnet database to run a full node with full sync. +For OP Mainnet you will need access to the migrated database to run a full node with full sync. You can [migrate your own data directory](https://web.archive.org/web/20240110231645/https://blog.oplabs.co/reproduce-bedrock-migration/) or follow the options available for [archive nodes](#get-the-migrated-data-directory). @@ -255,7 +260,7 @@ INFO [06-26|14:02:12.976] Chain head was updated number=4,068, INFO [06-26|14:02:12.982] Starting work on payload id=0x5542117d680dbd4e ``` -## Archive nodes +## OP Mainnet archive nodes You only need an archive node if you need the historical state. Most node operators should default to full nodes. diff --git a/pages/operators/node-operators/tutorials/testnet.mdx b/pages/operators/node-operators/tutorials/testnet.mdx deleted file mode 100644 index a386b727c..000000000 --- a/pages/operators/node-operators/tutorials/testnet.mdx +++ /dev/null @@ -1,252 +0,0 @@ ---- -title: Running an OP Sepolia node from source -lang: en-US -description: Learn how to run an OP Sepolia node from source code. ---- - -import { Callout, Steps } from 'nextra/components' - -# Running an OP Sepolia node from source - -This tutorial explains how to run an OP Sepolia node from source code. -Running an OP Sepolia node from source code is a flexible alternative to using pre-built Docker images. - -## Building the source code - -You'll need to build `op-node` and `op-geth` from their respective source repositories before you can run a node. -Make sure to follow the instructions on [Building a Node from Source](./node-from-source) before continuing. - -## Hardware requirements - -Hardware requirements for OP Sepolia nodes can vary depending on the type of node you plan to run. -Archive nodes generally require significantly more resources than full nodes. -Below are suggested minimum hardware requirements for each type of node. - -* 8GB RAM -* 60 GB SSD (full node) or 200 GB SSD (archive node) -* Reasonably modern CPU - -## Assess blob archiver - -Assess if you need to configure a blob archiver service by reading the -[Configure a Blob Archiver documentation](/operators/node-operators/management/blobs#configure-a-blob-archiver-archive-nodes). - -## Create a JWT secret - -`op-geth` and `op-node` communicate over the engine API authrpc. -This communication is secured using a shared secret. -You will need to generate a shared secret and provide it to both `op-geth` and `op-node` when you start them. -In this case, the secret takes the form of a 32 byte hex string. - -Run the following command to generate a random 32 byte hex string: - -```bash -openssl rand -hex 32 > jwt.txt -``` - -## Start `op-geth` - -It's generally easier to start `op-geth` before starting `op-node`. -You can still start `op-geth` without yet running `op-node`, but the `op-geth` instance will simply not receive any blocks until `op-node` is started. - - - -{

Navigate to your op-geth directory

} - -Find the directory where you built the `op-geth` binary. - -{

Copy in the JWT secret

} - -Copy the JWT secret you generated in a previous step into the `op-geth` directory. - -```bash -cp /path/to/jwt.txt . -``` - -{

Set environment variables

} - -Set the following environment variables (if not already set): - -```bash -export DATADIR_PATH=... # Path to the folder where geth data will be stored -``` - -{

Start op-geth

} - -Use the following command to start `op-geth` in a default configuration. -The JSON-RPC API will become available on port 8545. -Refer to the `op-geth` [configuration documentation](/operators/node-operators/configuration/execution-config) for more detailed information about available options. - - -* Set `--syncmode=execution-layer` on `op-node` if you don't set `--syncmode=full` here on op-geth. -* For archive nodes, set `--syncmode=full` and `--gcmode=archive` on `op-geth`. -* The default settings are for full nodes. - - -```bash -./build/bin/geth \ - --http \ - --http.port=8545 \ - --http.addr=localhost \ - --authrpc.addr=localhost \ - --authrpc.jwtsecret=./jwt.txt \ - --verbosity=3 \ - --rollup.sequencerhttp=https://sepolia-sequencer.optimism.io/ \ - --op-network=op-sepolia \ - --datadir=$DATADIR_PATH -``` - -
- -## Start `op-node` - -Once you've started `op-geth`, you can start `op-node`. -`op-node` will connect to `op-geth` and begin synchronizing the OP Sepolia state. -`op-node` will begin sending block payloads to `op-geth` when it derives enough blocks from Sepolia. - - - -{

Navigate to your op-node directory

} - -Find the directory where you built the `op-node` binary. - -{

Copy in the JWT secret

} - -Both `op-geth` and `op-node` need to use the same JWT secret. -Copy the JWT secret you generated in a previous step into the `op-node` directory. - -```bash -cp /path/to/jwt.txt . -``` - -{

Set environment variables

} - -Set the following environment variables: - -```bash -export L1_RPC_URL=... # URL for the L1 node to sync from. If your L1 RPC is a local node, the most common URL is http://127.0.0.1:8545 -export L1_RPC_KIND=... # RPC type (alchemy, quicknode, infura, parity, nethermind, debug_geth, erigon, basic, any) -export L1_BEACON_URL=... # URL address for the L1 Beacon-node HTTP endpoint to use. If your L1 Beacon is a local node, the most common URL is http://127.0.0.1:3500 -``` - -{

Start op-node

} - -Use the following command to start `op-node` in a default configuration. -Refer to the `op-node` [configuration documentation](/operators/node-operators/configuration/consensus-config) for more detailed information about available options. - - - The `op-node` RPC should not be exposed publicly. If left exposed, it could - accidentally expose admin controls to the public internet. - - - -Sync mode is set to `--syncmode=execution-layer` to enable [snap sync](/operators/node-operators/management/snap-sync). - - -```bash -./bin/op-node \ - --l1=$L1_RPC_URL \ - --l1.rpckind=$L1_RPC_KIND \ - --l1.beacon=$L1_BEACON_URL \ - --l2=ws://localhost:8551 \ - --l2.jwt-secret=./jwt.txt \ - --network=op-sepolia \ - --syncmode=execution-layer -``` - - -Some L1 nodes, like Erigon, do not support the `eth_getProof` RPC method that the `op-node` uses to load L1 data for certain processing steps. -If you are using an L1 node that does not support `eth_getProof`, you will need to include the `--l1.trustrpc` flag when starting `op-node`. -Note that this flag will cause `op-node` to trust the L1 node to provide correct data as it will no longer be able to independently verify the data it receives. - - -
- -### Synchronization verification - -Once you've started `op-geth` and `op-node` you should see the two begin to -communicate with each other and synchronize the OP Mainnet chain. - -#### Snap sync (default) - -Initial synchronization can take several hours to complete. You will see these -`op-node` logs at the start of snap sync: - -```text -INFO [03-06|10:56:55.602] Starting EL sync -INFO [03-06|10:56:55.615] Sync progress reason="unsafe payload from sequencer while in EL sync" l2_finalized=000000..000000:0 l2_safe=000000..000000:0 l2_pending_safe=000000..000000:0 l2_unsafe=4284ab..7e7e84:117076319 l2_time=1,709,751,415 l1_derived=000000..000000:0 -INFO [03-06|10:56:57.567] Optimistically inserting unsafe L2 execution payload to drive EL sync id=4ac160..df4d12:117076320 -``` - -`Starting EL sync` is shown once and the **sync progress / inserting logs** should be repeated until done. - -`op-node` will log the following when done: - -```text -lvl=info msg="Finished EL sync" sync_duration=23h25m0.370558429s finalized_block=0x4f69e83ff1407f2e2882f2526ee8a154ac326590799889cede3af04a7742f18d:116817417 -``` - -There are two stages on `op-geth` for snap sync: - - - {

Downloading the headers

} - `op-geth` log something like this as it is downloading the headers: - - ```text - lvl=info msg="Syncing beacon headers" downloaded=116775778 left=1162878 eta=53.182s - ``` - - {

Sync progress

} - - For the second stage, `op-geth` will log the following: - - ```text - lvl=info msg="Syncing: state download in progress" synced=99.75% state="191.33 GiB" accounts=124,983,227@25.62GiB slots=806,829,266@165.16GiB codes=78965@566.74MiB eta=-2m7.602s - ``` - - ```text - msg="Syncing: chain download in progress" synced=100.00% chain="176.01 GiB" headers=116,817,399@45.82GiB bodies=116,817,286@52.87GiB receipts=116,817,286@77.32GiB eta=77.430ms - ``` - - All the while, `op-geth` will also log the forkchoice update: - - ```text - Forkchoice requested sync to new head number=117,076,468 hash=e3884c..bf4e2b - ``` - -
- -#### Full sync - -Initial full synchronization can take several days to complete. - -During this time, you will initially observe `op-node` deriving blocks from Ethereum without sending these blocks to `op-geth`. -This means that `op-node` is requesting blocks from Ethereum one-by-one and determining the corresponding OP Mainnet blocks that were published to Ethereum. -You should see logs like the following from `op-node`: - -```text -INFO [06-26|13:31:20.389] Advancing bq origin origin=17171d..1bc69b:8300332 originBehind=false -``` - -Once the `op-node` has derived enough blocks from Ethereum, it will begin sending these blocks to `op-geth`. -You should see logs like the following from `op-node`: - -```text -INFO [06-26|14:00:59.460] Sync progress reason="processed safe block derived from L1" l2_finalized=ef93e6..e0f367:4067805 l2_safe=7fe3f6..900127:4068014 l2_unsafe=7fe3f6..900127:4068014 l2_time=1,673,564,096 l1_derived=6079cd..be4231:8301091 -INFO [06-26|14:00:59.460] Found next batch epoch=8e8a03..11a6de:8301087 batch_epoch=8301087 batch_timestamp=1,673,564,098 -INFO [06-26|14:00:59.461] generated attributes in payload queue txs=1 timestamp=1,673,564,098 -INFO [06-26|14:00:59.463] inserted block hash=e80dc4..72a759 number=4,068,015 state_root=660ced..043025 timestamp=1,673,564,098 parent=7fe3f6..900127 prev_randao=78e43d..36f07a fee_recipient=0x4200000000000000000000000000000000000011 txs=1 update_safe=true -``` - -You should then also begin to see logs like the following from `op-geth`: - -```text -INFO [06-26|14:02:12.974] Imported new potential chain segment number=4,068,194 hash=a334a0..609a83 blocks=1 txs=1 mgas=0.000 elapsed=1.482ms mgasps=0.000 age=5mo2w20h dirty=2.31MiB -INFO [06-26|14:02:12.976] Chain head was updated number=4,068,194 hash=a334a0..609a83 root=e80f5e..dd06f9 elapsed="188.373ยตs" age=5mo2w20h -INFO [06-26|14:02:12.982] Starting work on payload id=0x5542117d680dbd4e -``` - -## Next steps - -* If you've already got your node up and running, check out the [Node Metrics and Monitoring Guide](/operators/node-operators/management/metrics) to learn how to keep tabs on your node and make sure it keeps running smoothly. -* If you run into any problems, please visit the [Node Troubleshooting Guide](/operators/chain-operators/management/troubleshooting) for help. diff --git a/public/_redirects b/public/_redirects index c75670996..84cabe701 100644 --- a/public/_redirects +++ b/public/_redirects @@ -77,6 +77,8 @@ /builders/node-operators/configuration/* /operators/node-operators/configuration/:splat /builders/node-operators/network-upgrades/* /operators/node-operators/network-upgrades /builders/node-operators/* /operators/node-operators/:splat +/operators/node-operators/tutorials/mainnet /operators/node-operators/tutorials/run-node-from-source +/operators/node-operators/tutorials/testnet /operators/node-operators/tutorials/run-node-from-source # ---------------------------------------------------------------------------- # Stack Documentation Migration From 3769db5aee8ae9c537cde2630f37b588f76840da Mon Sep 17 00:00:00 2001 From: soyboy Date: Wed, 5 Mar 2025 18:27:58 -0600 Subject: [PATCH 2/4] fixing linter --- pages/operators/node-operators/rollup-node.mdx | 4 ++-- pages/operators/node-operators/tutorials/node-from-source.mdx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/operators/node-operators/rollup-node.mdx b/pages/operators/node-operators/rollup-node.mdx index 32bc050a1..bf4be061c 100644 --- a/pages/operators/node-operators/rollup-node.mdx +++ b/pages/operators/node-operators/rollup-node.mdx @@ -68,8 +68,8 @@ Now, you will run your node and set your node debugging log level for more granu The tutorial [Building a Node from Source](/operators/node-operators/tutorials/node-from-source) is a **pre-requisite** to running your node from source and must be completed first.
- * **Option 1:** Follow the [Running an OP Sepolia Node from Source](/operators/node-operators/tutorials/testnet) tutorial. - * **Option 2:** Follow the [Running an OP Mainnet Node from Source](/operators/node-operators/tutorials/mainnet) tutorial, if you plan to run a full node or archive node. + * **Option 1:** Follow the [Running an OP Sepolia Node from Source](/operators/node-operators/tutorials/run-node-from-source) tutorial. + * **Option 2:** Follow the [Running an OP Mainnet Node from Source](/operators/node-operators/tutorials/run-node-from-source) tutorial, if you plan to run a full node or archive node. {

Update Node Log Level

} diff --git a/pages/operators/node-operators/tutorials/node-from-source.mdx b/pages/operators/node-operators/tutorials/node-from-source.mdx index 363fa2f49..058fcf1d5 100644 --- a/pages/operators/node-operators/tutorials/node-from-source.mdx +++ b/pages/operators/node-operators/tutorials/node-from-source.mdx @@ -1,5 +1,5 @@ --- -title: Building a Superchainnode from source +title: Building a Superchain node from source lang: en-US description: Learn how to build your own node without relying on images from Optimism. --- From 6c8b74e0f001c523d8543e52883e472a5f7b8116 Mon Sep 17 00:00:00 2001 From: soyboy Date: Wed, 5 Mar 2025 18:30:33 -0600 Subject: [PATCH 3/4] fixing broken links --- pages/operators/node-operators/rollup-node.mdx | 7 +++---- .../node-operators/tutorials/node-from-source.mdx | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pages/operators/node-operators/rollup-node.mdx b/pages/operators/node-operators/rollup-node.mdx index bf4be061c..827e9d5b7 100644 --- a/pages/operators/node-operators/rollup-node.mdx +++ b/pages/operators/node-operators/rollup-node.mdx @@ -116,10 +116,9 @@ It is important to regularly monitor your node, and you can optionally configure | Tutorial Name | Description | Difficulty Level | | ----------------------------------------------------------- | ------------------------------------------------------ | ---------------- | -| [Running a Node With Docker](tutorials/node-from-docker) | Learn how to run a node with Docker. | ๐ŸŸข Easy | -| [Building a Node From Source](tutorials/node-from-source) | Learn how to compile node components from source code. | ๐ŸŸข Easy | -| [Running an OP Mainnet Node from Source](tutorials/mainnet) | Learn how to run an OP Mainnet node from source code. | ๐ŸŸก Medium | -| [Running an OP Sepolia Node from Source](tutorials/testnet) | Learn how to run an OP Sepolia node from source code. | ๐ŸŸก Medium | +| [Running a node with docker](tutorials/node-from-docker) | Learn how to run a node with Docker. | ๐ŸŸข Easy | +| [Building a Superchain node from source](tutorials/node-from-source) | Learn how to compile node components from source code. | ๐ŸŸข Easy | +| [Running a Superchain node from source](tutorials/run-node-from-source) | Learn how to run a Superchain node from source code. | ๐ŸŸก Medium | ## Next steps diff --git a/pages/operators/node-operators/tutorials/node-from-source.mdx b/pages/operators/node-operators/tutorials/node-from-source.mdx index 058fcf1d5..101d71632 100644 --- a/pages/operators/node-operators/tutorials/node-from-source.mdx +++ b/pages/operators/node-operators/tutorials/node-from-source.mdx @@ -152,6 +152,5 @@ make ## Next steps -* Click here to [Run an OP Mainnet Node from Source Code](mainnet) -* Click here to [Run an OP Sepolia Node from Source Code](testnet) +* Click here to [Run a Superchain node from source code](run-node-from-source) * If you run into any problems, please visit the [Node Troubleshooting Guide](/operators/chain-operators/management/troubleshooting) for help. From 8dbfe229888a93292213659edcc717fa7844117d Mon Sep 17 00:00:00 2001 From: soyboy Date: Wed, 5 Mar 2025 18:30:53 -0600 Subject: [PATCH 4/4] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- .../operators/node-operators/rollup-node.mdx | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/pages/operators/node-operators/rollup-node.mdx b/pages/operators/node-operators/rollup-node.mdx index 827e9d5b7..d0cc780b5 100644 --- a/pages/operators/node-operators/rollup-node.mdx +++ b/pages/operators/node-operators/rollup-node.mdx @@ -31,7 +31,7 @@ Before building your node, you will learn fundamental aspects of OP Stack rollup Now, you are ready to build your OP Stack rollup node. You have two options for this: * **Option 1:** Follow the [Running a Node with Docker](/operators/node-operators/tutorials/node-from-docker) tutorial, which gets your OP Stack rollup node up and running without having to build it from source. - * **Option 2:** Follow the [Building a Node from Source](/operators/node-operators/tutorials/node-from-source) tutorial, if you need to use a specific architecture or want to inspect the source code of your OP Stack rollup node. + * **Option 2:** Follow the [Building a Node from Source](/operators/node-operators/tutorials/node-from-source) tutorial, if you need to use a specific architecture or want to inspect the source code of your OP Stack rollup node. ## Configure your node @@ -46,9 +46,9 @@ OP Stack rollup nodes can be configured for individual needs. The following step * Configure `op-node` using the [base configuration](/operators/node-operators/configuration/base-config#working-base-configuration-1). {

Enable Snap Sync

} - - * Enable [snap sync](/operators/node-operators/management/snap-sync) for your node to significantly improve the experience and speed of syncing an OP Stack node. - This is an **optional** feature but highly recommended for node providers. + + * Enable [snap sync](/operators/node-operators/management/snap-sync) for your node to significantly improve the experience and speed of syncing an OP Stack node. + This is an **optional** feature but highly recommended for node providers. Additional configuration options exist for [`op-geth`](/operators/node-operators/configuration/execution-config) and [`op-node`](/operators/node-operators/configuration/consensus-config), respectively. @@ -62,7 +62,7 @@ Now, you will run your node and set your node debugging log level for more granu {

Run Your Node From Source

} - You will now run your node from source for your Superchain network. Here are your options. + You will now run your node from source for your Superchain network. Here are your options. The tutorial [Building a Node from Source](/operators/node-operators/tutorials/node-from-source) is a **pre-requisite** to running your node from source and must be completed first. @@ -91,13 +91,12 @@ It is important to regularly monitor your node, and you can optionally configure {

Setup Prometheus & Grafana

} - The following steps are intended for `go-ethereum`, so it must be tweaked to work for rollup nodes running within the Superchain. + The following steps are intended for `go-ethereum`, so it must be tweaked to work for rollup nodes running within the Superchain. * Setup [influxdb](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-influxdb) to hold metrics data. * Setup [prometheus](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-prometheus) to read your endpoint. * Setup your [grafana dashboard](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-grafana) to provide UI for metrics. -
## Follow node updates @@ -114,11 +113,11 @@ It is important to regularly monitor your node, and you can optionally configure Head over to GitHub to [suggest a new tutorial](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=tutorial%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_tutorial.yaml\&title=%5BTUTORIAL%5D+Add+PR+title).
-| Tutorial Name | Description | Difficulty Level | -| ----------------------------------------------------------- | ------------------------------------------------------ | ---------------- | -| [Running a node with docker](tutorials/node-from-docker) | Learn how to run a node with Docker. | ๐ŸŸข Easy | -| [Building a Superchain node from source](tutorials/node-from-source) | Learn how to compile node components from source code. | ๐ŸŸข Easy | -| [Running a Superchain node from source](tutorials/run-node-from-source) | Learn how to run a Superchain node from source code. | ๐ŸŸก Medium | +| Tutorial Name | Description | Difficulty Level | +| ----------------------------------------------------------------------- | ------------------------------------------------------ | ---------------- | +| [Running a node with docker](tutorials/node-from-docker) | Learn how to run a node with Docker. | ๐ŸŸข Easy | +| [Building a Superchain node from source](tutorials/node-from-source) | Learn how to compile node components from source code. | ๐ŸŸข Easy | +| [Running a Superchain node from source](tutorials/run-node-from-source) | Learn how to run a Superchain node from source code. | ๐ŸŸก Medium | ## Next steps