Deployment
Production Images
Section titled “Production Images”Production runs are best served by the published Docker image, which is built from base/base:
docker pull ghcr.io/base/node-reth:latestThis image bundles both vanilla Reth and Base Reth and can be toggled with the NODE_TYPE environment variable:
# Run Base Rethdocker run ghcr.io/base/node-reth -e NODE_TYPE=base
# Run vanilla Rethdocker run ghcr.io/base/node-reth -e NODE_TYPE=vanillaPinning a Release with NODE_TAG
Section titled “Pinning a Release with NODE_TAG”The root docker-compose.yml in base/base pulls ghcr.io/base/node:latest unless you say otherwise. To run one specific published release without compiling anything, name its tag:
NODE_TAG=v1.3.0 docker compose upA pinned tag bypasses the source build completely, so the node starts once the pull finishes. Leave --build off when you pin. Passing it triggers a local compile that takes precedence over the tag you asked for.
Note that v1.3.0 is the earliest release published to ghcr.io/base/node out of base/base. Tags older than that were never pushed to this image path, so they are not reachable by pin.
Compose Variables
Section titled “Compose Variables”A handful of variables let you retune the compose file from your shell or a .env file, so you never have to edit the file itself:
| Variable | Default | Purpose |
|---|---|---|
NODE_TAG | latest | Tag pulled from ghcr.io/base/node. Give it a release tag such as v1.3.0 to pin. |
NETWORK_ENV | .env.mainnet | Env file loaded by the execution and node services. Use .env.sepolia for testnet. |
HOST_DATA_DIR | ./reth-data | Host directory bind-mounted to /data in the execution container. Repoint it at an external volume if you need to. |
PROFILE | release | Cargo profile applied when you pass --build. It matches the profile behind the published image. |
Running docker compose up --build compiles whatever is in your base/base checkout through the base target of etc/docker/Dockerfile.rust-services. That is the same target the published ghcr.io/base/node image comes from, so a local build and a pinned image lay out their binaries identically.
Building from Source for Deployment
Section titled “Building from Source for Deployment”If you need a custom build:
# Standard release buildjust build releaseOne profile now covers production. The workspace dropped its separate maxperf profile, so release is what the published image is built from and what a local --build reproduces. It sets opt-level = 3, lto = "thin", codegen-units = 16, and strips symbols.
If you need to profile a deployed binary, build the release-symbols variant instead. It keeps release codegen untouched and only restores the symbol table:
cargo build --profile release-symbols --package base-reth-node --bin base-reth-nodeA release build leaves the binary at target/release/base-reth-node. See Configuration for the full profile table.
Hardware Requirements
Section titled “Hardware Requirements”Base Reth Node requires:
- CPU: Multi-core processor (4+ cores recommended)
- Memory: 16 GB+ RAM
- Storage: NVMe SSD with sufficient space for chain state
- Network: Stable, high-bandwidth connection
Configuration
Section titled “Configuration”See the Configuration Reference for all available options, or run:
./target/release/base-reth-node --help