Managing Clients
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:
Client |
Systemd Service |
---|---|
Geth |
geth |
Nethermind |
nethermind |
Erigon |
erigon |
Reth |
reth |
Hyperledger Besu |
besu |
Client |
Systemd Services |
---|---|
Lighthouse |
lighthouse-beacon lighthouse-validator |
prysm |
prysm-beacon prysm-validator |
Nimbus |
nimbus-beacon nimbus-validator |
Teku |
teku-beacon teku-validator |
Lodestar |
lodestar-beacon lodestar-validator |
Grandine |
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
These are the available packages:
L1 clients
Execution Layer clients
geth
nethermind
erigon
besu
reth
Consensus Layer clients
lighthouse
prysm
teku
nimbus
lodestar
grandine
L2 clients
Polygon
polygon-heimdall
polygon-bor
Optimism
optimism-l2geth
optimism-op-geth
optimism-op-node
Arbitrum
arbitrum-nitro
Starknet
papyrus
juno
Web 3
bee
kubo
status
Infra
staking-deposit-cli
mev-boost
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