This repo provides a base template to use Docker images to run LUKSO node validator nodes).
Note: it has been tested on Ubuntu 22.04. It won't work on macOS (because of network_mode: host
).
LUKSO network configs are fetched from: lukso-network/network-configs.
It is provided "as is" and you are encouraged to adjust the configuration files for your own needs. The most important configuration files are the genesis files:
genesis.ssz
genesis.json
They can be found in our lukso-network/network-configs
repo.
For more information, check the LUKSO Docs.
-
Log into your node.
-
Install docker. Here is a tutorial for Ubuntu 22.04
-
Clone the repo.
git clone git@github.com:lukso-network/network-docker-containers.git
cd network-docker-containers
- Download the config files from
lukso-network/network-configs
repo.
mkdir configs
wget -O ./configs/genesis.ssz https://raw.githubusercontent.com/lukso-network/network-configs/main/mainnet/shared/genesis.ssz
wget -O ./configs/genesis.json https://raw.githubusercontent.com/lukso-network/network-configs/main/mainnet/shared/genesis.json
wget -O ./configs/config.yaml https://raw.githubusercontent.com/lukso-network/network-configs/main/mainnet/shared/config.yaml
- IMPORTANT: Create
.env
file and adjust the values in.env
file (node name, fee recipient address, etc.).
cp .env.mainnet .env
-
Copy your
keystore-xxx.json
files in the./keystores/
folder. -
Write your keystore password in a temporary txt file:
echo "yourPassword" > /tmp/secrets/password.txt
NOTE 1: This password will also be used for the validator wallet.
NOTE 2: You can set your keystore password differently by changing the configuration in the docker-compose.yml
file for the prysm_validator_import
service.
- Start the services:
docker compose up
# To run in the background, use detached mode with -d flag
An example docker compose file for erigon is provided in docker-compose.erigon.yml
. It only supports erigon execution engine. You will need to run an execution engine for your node to work properly. This file is provded "as is" and you can reuse it in the main docker-compose.yml
file if you wish to use erigon client instead of geth.
Check the status of the containers:
docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 1ffeefcbcfb4 prysmaticlabs/prysm-validator:v4.2.1 "/app/cmd/validator/…" About a minute ago Up About a minute prysm_validator
# 1dff26d8026a prysmaticlabs/prysm-beacon-chain:v4.2.1 "/app/cmd/beacon-cha…" About a minute ago Up About a minute prysm_beacon
# b3e2c814ddb5 ethereum/client-go:v1.13.15 "geth --config /conf…" About a minute ago Up About a minute geth
Check the logs to make sure everything is running fine:
docker compose logs -f geth
# You can see the logs of each service:
# docker compose logs -f prysm_validator
# ...
We provide another repo which can help you set up monitoring for your node: lukso-network/network-docker-monitoring
.
To add your node on the execution stats page, fill out this form to receive the secret.
You will then need to update these values in the .env
file:
NODE_NAME=myNodeName
ETH_STATS_SECRET=xxx
This repo is using the following docker images:
- Geth: ethereum/client-go
- Erigon: thorax/erigon
- Nethermind: nethermind/nethermind
- Besu: hyperledger/besu
- Prysm: prysmaticlabs/prysm-beacon-chain
- Lighthouse: sigp/lighthouse
- Teku: consensys/teku
- Prysm validator: prysmaticlabs/prysm-validator
- macht/eth2stats-client