Nimbus
Installing and configuring the Nimbus Beacon Node.
Nimbus
Nimbus is a research-driven Ethereum client designed for efficiency and resource-constrained devices. It is written in Nim and is optimized to perform well even on lightweight hardware like Raspberry Pis or mobile devices, making it an incredibly robust choice for institutional setups that prioritize low overhead.
🛡️ Role: Nimbus combines the Beacon Node and Validator Client into a single binary (though they can be run separately). This guide configures it primarily as a Beacon Node to drive your Execution Client.
1. Install Dependencies
Nimbus requires a few standard libraries to handle cryptographic operations and networking.
Bash
# Update repositories
sudo apt update
# Install build tools and libraries
sudo apt install -y curl build-essential libpcre3-dev2. Download & Install
We will download the latest pre-built binary from the official Status.im repository.
A. Create the Application Directory
Bash
# Create a folder for the binary
sudo mkdir -p /usr/local/lib/nimbus
# Download the latest Linux release (Check https://github.com/status-im/nimbus-eth2/releases)
# Example for v24.2.1:
sudo wget https://github.com/status-im/nimbus-eth2/releases/download/v24.2.1/nimbus-eth2_Linux_amd64_24.2.1_d38964e7.tar.gz -O nimbus.tar.gz
# Extract the archive
sudo tar -xvzf nimbus.tar.gz -C /usr/local/lib/nimbus --strip-components=1
# Cleanup
rm nimbus.tar.gzB. Set Permissions Ensure the ethereum user owns the directory.
Bash
sudo chown -R ethereum:ethereum /usr/local/lib/nimbus3. Configure Systemd Service
We will configure Nimbus to run as a background service.
⚡ Checkpoint Sync: Nimbus handles checkpoint sync efficiently. We use the
--trusted-node-urlflag to point to a public beacon node for instant syncing.
Create the service file:
Bash
sudo nano /etc/systemd/system/nimbus.servicePaste the following configuration:
Ini, TOML
[Unit]
Description=Nimbus Consensus Client
After=network.target
[Service]
User=ethereum
Group=ethereum
Type=simple
Restart=always
RestartSec=5
# Execution Command
ExecStart=/usr/local/lib/nimbus/run-mainnet-beacon-node.sh \
--data-dir=/home/ethereum/consensus \
--web3-url=http://127.0.0.1:8551 \
--jwt-secret=/home/ethereum/jwt/jwt.hex \
--trusted-node-url=https://beaconstate.info \
--rest \
--rest-address=0.0.0.0 \
--rest-port=5052 \
--metrics \
--metrics-address=0.0.0.0 \
--metrics-port=8008
# Resource Limits
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target🔍 Flag Explanation:
--web3-url: The connection to Geth/Nethermind/Besu (Engine API).--trusted-node-url: Trusted endpoint to perform a fast Checkpoint Sync.--rest: Enables the REST API (Essential for checking sync status).--metrics: Enables Prometheus metrics.
Note: Nimbus uses a helper script (
run-mainnet-beacon-node.sh) included in the release to simplify setting default mainnet flags.
4. Start the Service
Reload the systemd daemon and start the beacon node.
Bash
# Reload systemd configuration
sudo systemctl daemon-reload
# Enable Nimbus to start on boot
sudo systemctl enable nimbus
# Start the service
sudo systemctl start nimbus5. Verify Status
Check the logs to ensure Nimbus is syncing and connected.
Bash
sudo journalctl -fu nimbusExpected Output:
Eth1 Chain:
Eth1 chain monitored(Success! It found your EL).Syncing:
Syncing in progressorSlot processed.Peers:
Peers: 50indicates a healthy network connection.
Last updated