From a693542d938ce91cee263fa51c077c69defa9658 Mon Sep 17 00:00:00 2001 From: Edidiong Umana Date: Tue, 6 Oct 2026 08:24:07 +0000 Subject: [PATCH 1/3] docs(operators): sync image versions, Grafana password and snapshot default with the compose repo Align the operator pages with celo-l2-node-docker-compose main (e90c955): - network-config: op-node celo-v2.1.0 -> celo-v2.2.1 and eigenda-proxy v1.8.2 -> v2.6.0 for mainnet and Celo Sepolia (docker-compose.yml); Celo Sepolia snapshot is on by default - monitoring: Grafana admin password is celo (envs/common/grafana.env); op-node metrics on 7300 are scraped inside the compose network, not published to the host - configuration, run-node, archive-node: OP_RETH__SNAPSHOT defaults to true in both network .env files and scripts/start-op-reth.sh - maintenance: IMAGE_TAG__OP_NODE does not pin op-node; its tag is fixed in docker-compose.yml Co-Authored-By: Claude Opus 5.5 --- operate/operators/archive-node.mdx | 2 +- operate/operators/configuration.mdx | 2 +- operate/operators/maintenance.mdx | 2 +- operate/operators/monitoring.mdx | 4 ++-- operate/operators/network-config.mdx | 10 +++++----- operate/operators/run-node.mdx | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/operate/operators/archive-node.mdx b/operate/operators/archive-node.mdx index e43110477a..242def0da2 100644 --- a/operate/operators/archive-node.mdx +++ b/operate/operators/archive-node.mdx @@ -67,7 +67,7 @@ Ensure any datadir you supply is not in use by a running node before proceeding. OP_RETH__SNAPSHOT=true ``` - On first start this downloads the snapshot matching your `NODE_TYPE` (here, the archive snapshot) and continues from there. **On mainnet a snapshot is required** — it provides the pre-L2 (Celo L1) history. On **Celo Sepolia**, which has no pre-L2 history, you can instead leave `OP_RETH__SNAPSHOT=false` and execute every block from genesis. Either way, `NODE_TYPE=archive` is what keeps the full historical state available, and `DATADIR_PATH` must be empty on first start — a datadir written by `op-geth` cannot be reused. + On first start this downloads the snapshot matching your `NODE_TYPE` (here, the archive snapshot) and continues from there. **On mainnet a snapshot is required** — it provides the pre-L2 (Celo L1) history. On **Celo Sepolia**, which has no pre-L2 history, you can instead set `OP_RETH__SNAPSHOT=false` and execute every block from genesis. Either way, `NODE_TYPE=archive` is what keeps the full historical state available, and `DATADIR_PATH` must be empty on first start — a datadir written by `op-geth` cannot be reused. #### Configure Historical RPC Service diff --git a/operate/operators/configuration.mdx b/operate/operators/configuration.mdx index 9bb3f698b4..d1d502c6fe 100644 --- a/operate/operators/configuration.mdx +++ b/operate/operators/configuration.mdx @@ -17,7 +17,7 @@ The variables below configure `op-reth`, Celo's supported execution client. Supp | Variable | Values | Description | |---|---|---| | `NODE_TYPE` | `minimal`, `full` (default), `archive` | Sets the prune profile and the snapshot tier downloaded. A `minimal` node prunes transaction lookups fully and keeps only the most recent receipts, so it serves latest-state RPC on the smallest disk but little history. A `full` node stores historical state only for recent blocks. An `archive` node stores historical state for the entire chain (roughly 10x the storage). All three execute every block. | -| `OP_RETH__SNAPSHOT` | `true`, `false` (default) | When `true`, an empty datadir is bootstrapped from a published snapshot (`snapshots.celo.org`). Required on mainnet, which needs the pre-L2 history; optional on Celo Sepolia, which can sync from genesis. Ignored once the datadir holds data. | +| `OP_RETH__SNAPSHOT` | `true` (default), `false` | When `true`, an empty datadir is bootstrapped from a published snapshot (`snapshots.celo.org`). Required on mainnet, which needs the pre-L2 history; optional on Celo Sepolia, which can sync from genesis. Ignored once the datadir holds data. | `op-reth` syncs by executing every block. A new node starts from an empty datadir (see [Run a node with Docker](/operate/operators/run-node)); datadirs written by `op-geth` cannot be reused. For archive nodes, see [Running an archive node](/operate/operators/archive-node). diff --git a/operate/operators/maintenance.mdx b/operate/operators/maintenance.mdx index cb747a20cb..36101baf8c 100644 --- a/operate/operators/maintenance.mdx +++ b/operate/operators/maintenance.mdx @@ -24,7 +24,7 @@ This pulls the latest changes from GitHub and the latest images from the registr Network hardforks require running a compatible client version *before* the fork block, or your node will stop following the chain. Watch the [Notices](/operate/notices/overview) for each upgrade's required versions and timing. Support for op-geth has ended; a node still running it must migrate to op-reth — see [End of Support for op-geth](/operate/notices/op-geth-deprecation). -To pin a specific image version instead of tracking the latest, set the matching `IMAGE_TAG__*` variable in your `.env` (for example `IMAGE_TAG__OP_RETH` or `IMAGE_TAG__OP_NODE`). +To pin a specific image version instead of tracking the latest, set the matching `IMAGE_TAG__*` variable in your `.env` (for example `IMAGE_TAG__OP_RETH`). The op-node and eigenda-proxy image tags are fixed in `docker-compose.yml` and change only when you `git pull`. ## Restarting and stopping diff --git a/operate/operators/monitoring.mdx b/operate/operators/monitoring.mdx index 708ef00186..f830bea79d 100644 --- a/operate/operators/monitoring.mdx +++ b/operate/operators/monitoring.mdx @@ -21,7 +21,7 @@ This starts four services alongside your node: **Healthcheck**, **Prometheus**, With monitoring enabled, Grafana is available at [http://localhost:3000](http://localhost:3000) (configurable via `PORT__GRAFANA`). - **Username:** `admin` -- **Password:** `optimism` +- **Password:** `celo` The **Simple Node Dashboard** (Dashboards → Manage → Simple Node Dashboard) shows basic node information and sync status. If you run the challenger, the **Succinct Challenger** dashboard shows challenger activity. @@ -33,7 +33,7 @@ The **Simple Node Dashboard** (Dashboards → Manage → Simple Node Dashboard) ## Key metrics to watch -From **op-node** (Prometheus, `http://localhost:7300/metrics`): +From **op-node** (scraped by Prometheus at `op-node:7300` on the compose network; this port is not published to the host, where `localhost:7300` is the healthcheck): - **`op_node_default_refs_number`** — the op-node's current L1/L2 reference block numbers. If it stops increasing, your node is not syncing; if it goes backwards, your node is reorging. - **`op_node_default_peer_count`** — how many peers op-node is connected to. Without peers, op-node cannot sync unsafe blocks and your node will lag behind the sequencer. diff --git a/operate/operators/network-config.mdx b/operate/operators/network-config.mdx index 236cf76825..e7770f4de2 100644 --- a/operate/operators/network-config.mdx +++ b/operate/operators/network-config.mdx @@ -57,13 +57,13 @@ The recommended [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l - Container images: - [op-reth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-reth:celo-v1.0.5) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.1.0) - - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v1.8.2) + - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.2.1) + - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v2.6.0) - [Celo L1 client](https://us-docker.pkg.dev/celo-org/us.gcr.io/geth-all:1.8.9) — legacy archive / historical RPC service ## Celo Sepolia -- op-reth snapshots — published at [`snapshots.celo.org`](https://snapshots.celo.org); optional, enable with `OP_RETH__SNAPSHOT=true` to skip syncing from genesis (see [Run a node](/operate/operators/run-node)) +- op-reth snapshots — published at [`snapshots.celo.org`](https://snapshots.celo.org); optional and on by default (`OP_RETH__SNAPSHOT=true`); set it to `false` to sync from genesis instead (see [Run a node](/operate/operators/run-node)) - [L1 contract addresses](https://storage.googleapis.com/cel2-rollup-files/celo-sepolia/deployment-l1.json) - [rollup.json](https://storage.googleapis.com/cel2-rollup-files/celo-sepolia/rollup.json) - [Genesis](https://storage.googleapis.com/cel2-rollup-files/celo-sepolia/genesis.json) @@ -90,5 +90,5 @@ The recommended [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l - Container images: - [op-reth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-reth:celo-v1.0.5) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.1.0) - - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v1.8.2) + - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.2.1) + - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v2.6.0) diff --git a/operate/operators/run-node.mdx b/operate/operators/run-node.mdx index 3b41d5a913..b168bee56d 100644 --- a/operate/operators/run-node.mdx +++ b/operate/operators/run-node.mdx @@ -76,7 +76,7 @@ Follow these steps to run a full node. If you would like to run an archive node, **On mainnet a snapshot is required** — it provides the pre-L2 (Celo L1) history, which `op-reth` cannot reproduce by executing blocks. - - **From genesis.** On **Celo Sepolia**, which has no pre-L2 history, you can leave `OP_RETH__SNAPSHOT=false` (the default) and execute every block from genesis. This needs no external data but takes considerably longer to reach the chain tip. + - **From genesis.** On **Celo Sepolia**, which has no pre-L2 history, you can set `OP_RETH__SNAPSHOT=false` (the default is `true`) and execute every block from genesis. This needs no external data but takes considerably longer to reach the chain tip. **Datadirs from op-geth cannot be reused** From db81e21cbc40905f66839ddec1d0a917d965acc9 Mon Sep 17 00:00:00 2001 From: Defi Messiah Date: Tue, 6 Oct 2026 17:53:21 +0000 Subject: [PATCH 2/3] docs(operators): address review on #2376 (op-node tag, Grafana warning, snapshot wording, metrics URL) - network-config: op-node celo-v2.2.1 -> celo-v2.2.3 on the mainnet and Celo Sepolia lines, matching compose main 9634d6e4 (2026-10-06); tag confirmed in the registry - monitoring: add a Warning under the Grafana credentials to set GF_SECURITY_ADMIN_PASSWORD in .env or firewall port 3000 - monitoring: the op-node metrics line now says where to read them (Prometheus at localhost:9090 or Grafana) - configuration, run-node: "default" is scoped to the shipped .env files, matching #2345 Co-Authored-By: Claude Fable 5.1 --- operate/operators/configuration.mdx | 2 +- operate/operators/monitoring.mdx | 6 +++++- operate/operators/network-config.mdx | 4 ++-- operate/operators/run-node.mdx | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/operate/operators/configuration.mdx b/operate/operators/configuration.mdx index d1d502c6fe..99ac2f1d22 100644 --- a/operate/operators/configuration.mdx +++ b/operate/operators/configuration.mdx @@ -17,7 +17,7 @@ The variables below configure `op-reth`, Celo's supported execution client. Supp | Variable | Values | Description | |---|---|---| | `NODE_TYPE` | `minimal`, `full` (default), `archive` | Sets the prune profile and the snapshot tier downloaded. A `minimal` node prunes transaction lookups fully and keeps only the most recent receipts, so it serves latest-state RPC on the smallest disk but little history. A `full` node stores historical state only for recent blocks. An `archive` node stores historical state for the entire chain (roughly 10x the storage). All three execute every block. | -| `OP_RETH__SNAPSHOT` | `true` (default), `false` | When `true`, an empty datadir is bootstrapped from a published snapshot (`snapshots.celo.org`). Required on mainnet, which needs the pre-L2 history; optional on Celo Sepolia, which can sync from genesis. Ignored once the datadir holds data. | +| `OP_RETH__SNAPSHOT` | `true` (default in the shipped `.env` files), `false` | When `true`, an empty datadir is bootstrapped from a published snapshot (`snapshots.celo.org`). Required on mainnet, which needs the pre-L2 history; optional on Celo Sepolia, which can sync from genesis. Ignored once the datadir holds data. | `op-reth` syncs by executing every block. A new node starts from an empty datadir (see [Run a node with Docker](/operate/operators/run-node)); datadirs written by `op-geth` cannot be reused. For archive nodes, see [Running an archive node](/operate/operators/archive-node). diff --git a/operate/operators/monitoring.mdx b/operate/operators/monitoring.mdx index f830bea79d..e0b95c64e6 100644 --- a/operate/operators/monitoring.mdx +++ b/operate/operators/monitoring.mdx @@ -23,6 +23,10 @@ With monitoring enabled, Grafana is available at [http://localhost:3000](http:// - **Username:** `admin` - **Password:** `celo` + +These are the compose defaults, and compose publishes Grafana on every host interface (`${PORT__GRAFANA:-3000}:3000`). Before the node is reachable from a network, set `GF_SECURITY_ADMIN_PASSWORD` in `.env` (compose loads `.env` after `grafana.env`, so it takes precedence) or firewall port 3000. + + The **Simple Node Dashboard** (Dashboards → Manage → Simple Node Dashboard) shows basic node information and sync status. If you run the challenger, the **Succinct Challenger** dashboard shows challenger activity. ## Where metrics come from @@ -33,7 +37,7 @@ The **Simple Node Dashboard** (Dashboards → Manage → Simple Node Dashboard) ## Key metrics to watch -From **op-node** (scraped by Prometheus at `op-node:7300` on the compose network; this port is not published to the host, where `localhost:7300` is the healthcheck): +From **op-node** (query in Prometheus at `http://localhost:9090` or in Grafana; the op-node port 7300 is not published to the host, where `localhost:7300` is the healthcheck): - **`op_node_default_refs_number`** — the op-node's current L1/L2 reference block numbers. If it stops increasing, your node is not syncing; if it goes backwards, your node is reorging. - **`op_node_default_peer_count`** — how many peers op-node is connected to. Without peers, op-node cannot sync unsafe blocks and your node will lag behind the sequencer. diff --git a/operate/operators/network-config.mdx b/operate/operators/network-config.mdx index e7770f4de2..0c0d29cc5d 100644 --- a/operate/operators/network-config.mdx +++ b/operate/operators/network-config.mdx @@ -57,7 +57,7 @@ The recommended [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l - Container images: - [op-reth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-reth:celo-v1.0.5) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.2.1) + - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.2.3) - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v2.6.0) - [Celo L1 client](https://us-docker.pkg.dev/celo-org/us.gcr.io/geth-all:1.8.9) — legacy archive / historical RPC service @@ -90,5 +90,5 @@ The recommended [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l - Container images: - [op-reth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-reth:celo-v1.0.5) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.2.1) + - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.2.3) - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v2.6.0) diff --git a/operate/operators/run-node.mdx b/operate/operators/run-node.mdx index b168bee56d..35c878655d 100644 --- a/operate/operators/run-node.mdx +++ b/operate/operators/run-node.mdx @@ -76,7 +76,7 @@ Follow these steps to run a full node. If you would like to run an archive node, **On mainnet a snapshot is required** — it provides the pre-L2 (Celo L1) history, which `op-reth` cannot reproduce by executing blocks. - - **From genesis.** On **Celo Sepolia**, which has no pre-L2 history, you can set `OP_RETH__SNAPSHOT=false` (the default is `true`) and execute every block from genesis. This needs no external data but takes considerably longer to reach the chain tip. + - **From genesis.** On **Celo Sepolia**, which has no pre-L2 history, you can set `OP_RETH__SNAPSHOT=false` (the shipped `.env` files set it to `true`) and execute every block from genesis. This needs no external data but takes considerably longer to reach the chain tip. **Datadirs from op-geth cannot be reused** From ed9184cf4e6e7929400f08129c323095a9e5f7c5 Mon Sep 17 00:00:00 2001 From: Defi Messiah Date: Thu, 8 Oct 2026 09:53:59 +0000 Subject: [PATCH 3/3] docs(operators): Grafana password applies on first start only (review on #2376) Co-Authored-By: Claude Opus 5.5 --- operate/operators/monitoring.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operate/operators/monitoring.mdx b/operate/operators/monitoring.mdx index e0b95c64e6..615ae197cd 100644 --- a/operate/operators/monitoring.mdx +++ b/operate/operators/monitoring.mdx @@ -24,7 +24,7 @@ With monitoring enabled, Grafana is available at [http://localhost:3000](http:// - **Password:** `celo` -These are the compose defaults, and compose publishes Grafana on every host interface (`${PORT__GRAFANA:-3000}:3000`). Before the node is reachable from a network, set `GF_SECURITY_ADMIN_PASSWORD` in `.env` (compose loads `.env` after `grafana.env`, so it takes precedence) or firewall port 3000. +These are the compose defaults, and compose publishes Grafana on every host interface (`${PORT__GRAFANA:-3000}:3000`). Set `GF_SECURITY_ADMIN_PASSWORD` in `.env` before you first start with monitoring enabled: Grafana reads it only when it creates the admin user, and keeps that user in the `grafana_data` volume. If Grafana has already started, change the password in Grafana instead (user icon → **Change Password**). Either way, firewall port 3000 so it is not reachable from the public internet. The **Simple Node Dashboard** (Dashboards → Manage → Simple Node Dashboard) shows basic node information and sync status. If you run the challenger, the **Succinct Challenger** dashboard shows challenger activity.