Managing Clients¶
⚙️
Start/Stop/Enable services
✏️
Edit client parameters
📦
Upgrade via APT
📈
Grafana 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:
sudo systemctl start geth
sudo systemctl start nethermind
sudo systemctl start erigon
sudo systemctl start reth
sudo systemctl start besu
sudo systemctl start ethrex
sudo systemctl start lighthouse-beacon
sudo systemctl start lighthouse-validator
sudo systemctl start prysm-beacon
sudo systemctl start prysm-validator
sudo systemctl start nimbus-beacon
sudo systemctl start nimbus-validator
sudo systemctl start teku-beacon
sudo systemctl start teku-validator
sudo systemctl start lodestar-beacon
sudo systemctl start lodestar-validator
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:
Available Packages¶
Browse all available packages organized by category. Click any package to view its detailed documentation.
vero
vouch
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:
Sign up for a free account at beaconcha.in.
Go to your account settings and generate an API key.
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