Skip to main content
Routine operational tasks for a running Celo L2 node, using the celo-l2-node-docker-compose setup.

Upgrading your node

To upgrade to the latest client versions:
This pulls the latest changes from GitHub and the latest images from the registry, rebuilds the containers, and restarts the node.
Hardfork upgrades are time-sensitiveNetwork hardforks require running a compatible client version before the fork block, or your node will stop following the chain. Watch the Notices for each upgrade’s required versions and timing. The next major required migration is the move from op-geth to op-reth — see End of Support for op-geth.
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).

Restarting and stopping

docker compose down -v wipes all dataThe -v flag deletes the node’s volumes, including the chaindata. Only use it when you intend to discard everything and re-sync from scratch.

Backing up your data

The chaindata lives in DATADIR_PATH (default ./envs/<network>/datadir). To back it up, stop the node first so the database is in a consistent state, then copy the datadir:

Re-syncing

If you need to rebuild a node, start from an empty DATADIR_PATH — a datadir written by op-geth cannot be reused. Bootstrap from a published snapshot (OP_RETH__SNAPSHOT=true, required on mainnet) or, on Celo Sepolia, execute every block from genesis; see Run a node with Docker. Pre-L2 historical state for archive nodes is served separately — see Running an archive node.