Managing Clients

🔧 Systemd

⚙️

Start/Stop/Enable services

Systemd Services
📝 Configure

✏️

Edit client parameters

Changing Parameters
🔄 Update

📦

Upgrade via APT

Updating Clients
📊 Monitor

📈

Grafana dashboards

Monitoring Dashboards

Systemd Services

All clients use Systemd services for running. Systemd takes care of the processes and automatically restarts them in case something goes wrong. It can enable a service to automatically start it on boot as well.

Systemd command systemctl manages all operations related to the services. The available options are as follows:

  • Enable: Activate the service to start on boot

  • Disable: Remove the service from boot start

  • Start: Start the client process

  • Stop: Stop the client process

  • Restart: Restart the clients process

The general syntax is:

sudo systemctl enable|disable|start|stop|restart service_name

Note

You need the sudo command as root permissions are necessary. Type your etherereum user password.

For instance, to enable Nethermind client on boot and start it, type:

sudo systemctl enable nethermind
sudo systemctl start nethermind

Nethermind will now start in the background and run automatically on next boot.

These are the list of services available for all clients:

Geth
sudo systemctl start geth
Nethermind
sudo systemctl start nethermind
Erigon
sudo systemctl start erigon
Reth
sudo systemctl start reth
Besu
sudo systemctl start besu
EthRex
sudo systemctl start ethrex
Lighthouse
sudo systemctl start lighthouse-beacon
sudo systemctl start lighthouse-validator
Prysm
sudo systemctl start prysm-beacon
sudo systemctl start prysm-validator
Nimbus
sudo systemctl start nimbus-beacon
sudo systemctl start nimbus-validator
Teku
sudo systemctl start teku-beacon
sudo systemctl start teku-validator
Lodestar
sudo systemctl start lodestar-beacon
sudo systemctl start lodestar-validator
Grandine
sudo systemctl start grandine-beacon

Changing Parameters

Systemd services read client variables from /etc/ethereum directory files. If you want to change any client parameter you have to edit the correspondent config file. For instance, this is the /etc/ethereum/geth.conf content:

ARGS="--metrics --metrics.expensive --pprof --http --authrpc.jwtsecret=/etc/ethereum/jwtsecret"

Edit the file by running a text editor (vim, nano):

sudo vim /etc/ethereum/geth.conf

For instance, let’s change the P2P port to 30304. Add it to the ARGS line and save it:

ARGS="--metrics --metrics.expensive --pprof --http --authrpc.jwtsecret=/etc/ethereum/jwtsecret --port 30304"

For changes to take effect, you need to restart the client:

sudo systemctl restart geth

Note

All clients have its own config files in /etc/ethereum except Nethermind that has an additional conf directory located in /opt/nethermind/configs/

Tip

Read the clients official documentation in order to learn the specific parameters of each client.

Updating Clients

APT repository

Note

If you see this warning running APT:

Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details

run the following command:

wget -q -O - http://apt.ethereumonarm.com/eoa.apt.keyring.gpg| sudo tee
/etc/apt/trusted.gpg.d/eoa.apt.keyring.gpg > /dev/null

Ethereum on ARM comes with a custom APT repository which allows users to easily update the Ethereum software. For instance, to update the Geth client run:

sudo apt update
sudo apt install geth

If you want to run the new version, restart the service by running:

sudo systemctl restart geth

You can downgrade a client as well by setting a specific version. This is particularly useful if a bug is found in the current version and you need to keep running the client. For example:

sudo apt install geth=1.9.25-2

The APT repository is browsable so you can download a package manually:

https://apt.ethereumonarm.com/pool/main

Available Packages

Browse all available packages organized by category. Click any package to view its detailed documentation.

Optimism
  • op-geth

  • op-node

  • op-reth

Arbitrum
IPFS
Swarm

Note

The APT command will install the last version available in the repository. Most clients provide binaries for ARM64 architecture so this is just a package to handle the software.

See our developer guide section if you want to build you own packages.

Getting Logs

You can get clients info by using Systemd journalctl command. For instance, to get the Geth output, run:

sudo journalctl -u geth -f

You can of course take a look at /var/log/syslog:

sudo tail -f /var/log/syslog

Monitoring Dashboards

We configured Grafana Dashboards to let users monitor both Execution and Consensus clients. To access the dashboards just open your browser and type your Raspberry_IP followed by the 3000 port:

http://replace_with_your_IP:3000
user: admin
passwd: ethereum

Validator Metrics

The Ethereum Validator Metrics Exporter allows you to track your validator’s performance, balance, and status using data from Beaconcha.in.

Installation

sudo apt install ethereum-validator-metrics-exporter

Configuration

The service requires a configuration file located at /etc/ethereum/validator-metrics-exporter.yaml. You need to edit this file to add your Beaconcha.in API Key and your Validator Public Keys.

sudo nano /etc/ethereum/validator-metrics-exporter.yaml

Obtaining Beaconcha.in API Key:

  1. Sign up for a free account at beaconcha.in.

  2. Go to your account settings and generate an API key.

  3. Add it to the config file under beaconcha_in.apikey.

Finding your Validator Public Key:

If you are running a local validator client (e.g., Nimbus, Prysm), you can find your public key in your validator keys directory or in the service logs.

For Nimbus:

ls /home/ethereum/.nimbus-beacon/validators
# Or check logs:
sudo journalctl -u nimbus-beacon | grep "Local validator attached"

Add your public keys to the validators list in the config file.

Restarting the Service:

After saving your changes, restart the service:

sudo systemctl restart ethereum-validator-metrics-exporter