Nethermind client can be used for staking on various supported chains. Client installation is always only one, used by services with an individual configuration (different service name, data path and ports in use).
Install Nethermind client
One-page interactive guide to install Nethermind client and configurate it for running on supported chain.
Disclaimer
This guide is for informational purposes only. The author nor website owner does not guarantee accuracy of the information in this guide and is not responsible for any damages or losses incurred by following the guide.
Install Nethermind client
Installing Nethermind client
Nethermind documentation: https://docs.nethermind.io/
-
Find the latest stable version of Nethermind on Github
- Find latest Nethermind version at https://github.com/NethermindEth/nethermind/releases
-
Write latest stable Nethermind version in format such as
1.30.3-87c86379
:
-
Download Nethermind version
1.30.3-87c86379
to your nodecd ~/downloads && curl -LO https://github.com/NethermindEth/nethermind/releases/download/1.30.3/nethermind-1.30.3-87c86379-linux-x64.zip
-
Install package for unzipping
sudo apt-get install -y unzip
-
Unzip the downloaded file
unzip nethermind-1.30.3-87c86379-linux-x64 -d nethermind
-
Copy the client to
/usr/local/bin/
sudo cp -a nethermind /usr/local/bin/nethermind
-
Remove downloaded files
cd ~/downloads && rm nethermind-1.30.3-87c86379-linux-x64.zip && rm -r nethermind
Configurate the service
Create a system user and data directory for Nethermind service
-
Create a user
:sudo useradd --system --no-create-home --shell /bin/false nethermind
-
Create a folder for Nethermind data
:sudo mkdir -p /var/lib/nethermind
-
Set access permission and ownership for the Nethermind data folder
sudo chown -R nethermind:nethermind /var/lib/nethermind
Configurate & Run Nethermind service
-
Choose ports for communication
Change the default ports below if you are going to stake on more chains simultaneously (e.g. Ethereum and Gnosis at once) on the same machine. If you are going to stake only, you can keep the default ports. If you are changing the default ports, be sure that the newly selected port is not already in used. A port in used may be checked with following code:
ss -tuln | grep ':PORT'
- If it returns empty response, the port is free and can be used.
Ports selection
-
(Default port:
30303
) -
(Default port:
8545
) -
(Default port:
8551
)
If needed, check JSON RPC server and fundamentals in Nethermind documentation.
-
Enable ports communication
To allow execution client synchronization, there's need to enable port
30303
reserved for P2P traffic to TCP (allows the node to connect to peers) and UDP (allows node discovery). It may be done with following UFW setup:$ sudo ufw allow 30303
Use this option only if you need operate execution client and beacon client on different machines.
-
Enable port
30303
for P2P trafficTo allow execution client synchronization, there's need to enable port
30303
reserved for P2P traffic to TCP (allows the node to connect to peers) and UDP (allows node discovery). It may be done with following UFW setup:$ sudo ufw allow 30303
- Enable port
8551
for IP of your second machinesudo ufw allow from 192.168.88.0/27 to any port 8551
Note: Be sure you use proper IP of your second machine / proper local network configuration.
-
Enable port
-
Create configuration file for Nethermind service
-
Open Nethermind configuration file
sudo nano /etc/systemd/system/nethermind.service
-
Copy the configuration below into the file. If needed, check flags documentation.
[Unit] Description=Nethermind Execution Client (Ethereum Mainnet) After=network.target Wants=network.target [Service] User=eth-nethermind Group=eth-nethermind Type=simple Restart=always RestartSec=5 WorkingDirectory=/var/lib/nethermind Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind" ExecStart=/usr/local/bin/nethermind/nethermind \ --config mainnet \ --datadir /var/lib/nethermind \ --Sync.SnapSync true \ --Sync.AncientBodiesBarrier 11052984 \ --Sync.AncientReceiptsBarrier 11052984 \ --JsonRpc.JwtSecretFile /var/lib/jwtsecret/ethereum.hex \ --Network.P2PPort 30303 \ --Network.DiscoveryPort 30303 \ --JsonRpc.EnginePort 8551 \ --JsonRpc.Port 8545 [Install] WantedBy=default.target
[Unit] Description=Nethermind Execution Client (Gnosis chain) After=network.target Wants=network.target [Service] User=gno-nethermind Group=gno-nethermind Type=simple Restart=always RestartSec=5 WorkingDirectory=/var/lib/nethermind Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=/var/lib/nethermind" ExecStart=/usr/local/bin/nethermind/nethermind \ --config gnosis \ --datadir /var/lib/nethermind \ --JsonRpc.JwtSecretFile /var/lib/jwtsecret/gnosis.hex \ #--Sync.SnapSync false \ Supported since v 1.28 #--Sync.FastSync true \ --Sync.SnapSync true \ --Network.P2PPort 30303 \ --Network.DiscoveryPort 30303 \ --JsonRpc.EnginePort 8551 \ --JsonRpc.Port 8545 #--Network.ActivePeersMaxCount 25 \ #--Blocks.TargetBlockGasLimit 36000000 [Install] WantedBy=default.target
JsonRpc.JwtSecretFile
, if you use different -
Press
CTRL
+X
thenY
thenENTER
to save and exit the config file.
-
-
Start the Nethermind service
sudo systemctl daemon-reload sudo systemctl start nethermind
-
Check the service
systemctl status nethermind journalctl -fu nethermind
If you see message "Waiting for Forkchoice message from Consensus Layer to set fresh pivot block", you can move on a Consensis Client setup.
-
Start the service automatically on system startup
sudo systemctl enable nethermind
- Open Delayed Start shell
sudo nano /usr/local/bin/delayed-start.sh
Configurate service start inside it
systemctl start nethermind.service
- Be sure,
delayed-start.service
service controllingdelayed-start.sh
is enabled for auto start with system startupsudo systemctl enable delayed-start.service
Configurate Staking Manager util
- Open the configuration file
sudo nano /usr/local/etc/staking/config/clients.conf
If the file is empty, generate it with command
sudo /usr/local/bin/staking.sh init
- Set link to proper services. It should be as follow:
executionClients="nethermind"
executionServices="nethermind.service"
- Open the configuration file
-
Activate service to start automatically on OS startup
- Open Start with delay util
sudo nano /usr/local/bin/delayed-start.sh
- Place or uncomment a command to start the Beacon client(s)
/usr/local/bin/staking.sh start execution
- Verify, that a service `delayed-start.service` exists and is automatically launched on system start.
sudo systemctl enable delayed-start.service
- Open Start with delay util
- Open Delayed Start shell