On-page actions for Lodestar client
Lodestar 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).
One-page interactive complete guide to configurate and operate Lodestar client.
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.
Lodestar 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).
Node Version Manager (NVM) is a piece of shell code that allows you to easily install and maintain different versions of Node.js and its associated packages.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
NVM will be installed with permissions of a user that processing that request (you). NVM is installed to user account, specifically to "~/.bashrc" directory.
nvm
for an option to use itsource ~/.bashrc
nvm list-remote
Selected version: v
nvm install v20.11.0
Node.js is installed with permissions of a user that processing that request (you)
node -v
If o version is selected, use nvm use 20.11.0
sudo apt-get install build-essential -y
corepack enable
corepack prepare yarn@stable --activate
yarn help
cd ~/downloads && git clone -b stable https://github.com/chainsafe/lodestar.git
cd lodestar && yarn install
yarn run build
./lodestar -v
/usr/local/bin
directorysudo cp -a ~/downloads/lodestar /usr/local/bin
$ sudo useradd --system --no-create-home --shell /bin/false lodestarbeacon
sudo usermod -aG myserveruser lodestarbeacon
sudo mkdir -p /var/lib/lodestar/beacon
sudo chown -R lodestarbeacon:lodestarbeacon /var/lib/lodestar/beacon
Each service on the server needs a custom port for communication. Through ports, consensus client communicates with other peers in the network as well as other services running on the server, such as validator clients. There is an IPv4 and IPv6 variant, depending on the ISP support / preference. Each protocol version needs custom port. If you are not sure what to select, continue with default IPv4 port.
9000
ss -tuln | grep ':9000'
If it returns empty response, the port 9000
is free and can be used.
$ sudo ufw allow 9000
sudo ufw status numbered
9000 (V6)
and
remove it with the following line
sudo ufw delete <Number>
9001
ss -tuln | grep ':9001'
If it returns empty response, the port 9001
is free and can be used.
5052
ss -tuln | grep ':5052'
If it returns empty response, the port 5052
is free and can be used.
9090
ss -tuln | grep ':9090'
If it returns empty response, the port 9090
is free and can be used.
$ sudo ufw allow 9090
sudo ufw status numbered
9090
and
remove it with the following line
sudo ufw delete <Number>
9091
ss -tuln | grep ':9091'
If it returns empty response, the port 9091
is free and can be used.
sudo nano /etc/systemd/system/lodestarbeacon.service
:
This can be get with command $ node version
[Unit]
Description=Lodestar Consensus Beacon Client (Ethereum mainnet)
Wants=network-online.target
After=network-online.target
[Service]
User=lodestarbeacon
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/usr/local/bin/lodestar
Environment="PATH=/home/myserveruser/.nvm/versions/node/v20.11.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/usr/local/bin/lodestar/lodestar beacon \
--network mainnet \
--dataDir /var/lib/lodestar/beacon \
--execution.urls http://127.0.0.1:8551 \
--jwt-secret /var/lib/jwtsecret/ethereum.hex \
--port 9000 \
--port6 9090
#--suggestedFeeRecipient 0x.........................
[Install]
WantedBy=multi-user.target
[Unit]
Description=Lodestar Consensus Beacon Client (Gnosis Chain)
Wants=network-online.target
After=network-online.target
[Service]
User=lodestarbeacon
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/usr/local/bin/lodestar
Environment="PATH=/home/myserveruser/.nvm/versions/node/v20.11.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/usr/local/bin/lodestar/lodestar beacon \
--network gnosis \
--dataDir /var/lib/lodestar/beacon \
--execution.urls http://127.0.0.1:8551 \
--jwt-secret /var/lib/jwtsecret/gnosis.hex \
--port 9000 \
--port6 9090
#--suggestedFeeRecipient 0x.........................
[Install]
WantedBy=multi-user.target
jwt-secret
, if you use different
Check all available flags.
CTRL
+ X
then Y
then ENTER
to save and exit the config file.sudo systemctl daemon-reload
sudo systemctl start lodestarbeacon
systemctl status lodestarbeacon
journalctl -fu lodestarbeacon
sudo systemctl enable lodestarbeacon
Do you want to create a new validation instance or extend exisiting instance for more validators?
sudo mkdir -p /var/lib/lodestar/vi1
/var/lib/lodestar/vi1
for server user myserveruser
sudo chown -R myserveruser:myserveruser /var/lib/lodestar/vi1
/var/lib/lodestar/vi1
cd /usr/local/bin/lodestar
./lodestar validator import --network mainnet --importKeystores $HOME/keystores/ddk_i1 --dataDir /var/lib/lodestar/vi1
./lodestar validator import --network gnosis --importKeystores $HOME/keystores/ddk_i1 --dataDir /var/lib/lodestar/vi1
sudo useradd --system --no-create-home --shell /bin/false lodestar-vi1
/var/lib/lodestar/vi1
to lodestar-vi1
usersudo chown -R lodestar-vi1:lodestar-vi1 /var/lib/lodestar/vi1
NodeJs
for user lodestar-vi1
sudo usermod -aG myserveruser lodestar-vi1
lodestar-vi1
serviceOpen the configuration file
sudo nano /etc/systemd/system/lodestar-vi1.service
Copy the configuration below into the file.
:
This can be get with command $ node version
[Unit]
Description=Lodestar Validator Instance (Ethereum Mainnet)
Wants=network-online.target
After=network-online.target
[Service]
User=lodestar-vi1
Group=lodestar-vi1
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/usr/local/bin/lodestar
Environment="PATH=/home/myserveruser/.nvm/versions/node/v20.11.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/usr/local/bin/lodestar/lodestar validator \
--network mainnet \
--dataDir /var/lib/lodestar/validators/i1 \
--suggestedFeeRecipient 0xXXXXXXXXXXXXXXXX \
# ToDo: Add Beacon API URL
--force \
--graffiti "Nethermind+Lodestar"
[Install]
WantedBy=multi-user.target
[Unit]
Description=Lodestar Validator Instance (Gnosis Network)
Wants=network-online.target
After=network-online.target
[Service]
User=lodestar-vi1
Group=lodestar-vi1
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/usr/local/bin/lodestar
Environment="PATH=/home/myserveruser/.nvm/versions/node/v20.11.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/usr/local/bin/lodestar/lodestar validator \
--network gnosis \
--dataDir /var/lib/lodestar/validators/i1 \
--suggestedFeeRecipient 0xXXXXXXXXXXXXXXXX \
# ToDo: Add Beacon API URL
--force \
--graffiti "Nethermind+Lodestar"
[Install]
WantedBy=multi-user.target
CTRL
+ X
then Y
then ENTER
to save and exit the config file.
If you use a staking manager client, add the new instance into it.
lodestar-vi1
sudo systemctl stop lodestar-vi1
/var/lib/lodestar/validators/i1
for new keystores./lodestar validator import --network mainnet --importKeystores $HOME/keystores/ddk_i1 --dataDir /var/lib/lodestar/vi1
./lodestar validator import --network gnosis --importKeystores $HOME/keystores/ddk_i1 --dataDir /var/lib/lodestar/vi1
sudo systemctl daemon-reload
sudo systemctl start lodestar-vi1
systemctl status lodestar-vi1
journalctl -fu lodestar-vi1
$ sudo systemctl enable lodestar-vi1
Log monitor service monitors the service log and process defined action (fixes) in a case of any issue detected.
/usr/local/bin/logmonitor.sh version
If the util is not installed, install Lodestar validator Log monitor from GitHub.
sudo nano /usr/local/etc/lodestarvalidator_tracking_records.txt
If not available, download it from GitHub. You can also modifiy it, if needed.
lodestar-vi1
, see guide on Github.Our guide uses a custom util for launching services. It has following benefits:
Starting all services through the Staking Manager util and its command /usr/local/bin/staking.sh start execution
prevents a human error when there is forgotten set of sudo systemctl enable ...
for any staking-related service.
There's a Start with delay
util to manage this.
sudo nano /usr/local/bin/delayed-start.sh
lodestar-vi1
lodestar-vi1_logmonitor
lodestar-vi1
into clients.conf file that is used by Staking Manager.
sudo nano /usr/local/etc/staking/config/clients.conf
Bulk exit of all validators under the instance (within a directory)
/usr/local/bin
./lodestar validator voluntary-exit --network mainnet --yes --dataDir /var/lib/lodestar/vi1
./lodestar validator voluntary-exit --network gnosis --yes --dataDir /var/lib/lodestar/vi1
cd /usr/local/bin/lodestar
./lodestar -v
cd ~/downloads && sudo rm -r lodestar
cd ~/downloads && git clone -b stable https://github.com/chainsafe/lodestar.git
cd lodestar && yarn install
yarn run build
./lodestar -v
Stop Lodestar Beacon service and all validators-based services
sudo systemctl stop lodestarbeacon
sudo systemctl stop lodestar-vi...
sudo systemctl stop lodestar-vi...
...
Stop cosnsensus services
/usr/local/bin/staking.sh stop consensus
Check cosnsensus services status
/usr/local/bin/staking.sh check consensus
sudo rm -r /usr/local/bin/lodestar
/usr/local/bin
directorysudo cp -a ~/downloads/lodestar /usr/local/bin
Start Lodestar Beacon service and all validators-based services
sudo systemctl start lodestarbeacon
sudo systemctl start lodestar-vi...
sudo systemctl start lodestar-vi...
...
/usr/local/bin/staking.sh start consensus
systemctl status lodestarbeacon lodestar-vi.. lodestar-vi..
journalctl -fu lodestarbeacon
journalctl -f -u lodestar-vi.. -u lodestar-vi..
/usr/local/bin/staking.sh check consensus
/usr/local/bin/staking.sh monitor consensus