CSM with ETH Docker
VM/Hardware Setup
You will need to prepare your virtual machine (VM) or home staking hardware for all options below. Step-by-step guide below.
Google CloudAssemble your hardwareLido CSM testnet workflow
Video guide
Prepare your VM/Hardware
Create a new Google Cloud account to unlock $300 of free cloud credits.
Create a VM on the Google Cloud Console (or any other cloud provider) with the following machine specifications.
CPU: 2 vCPU
RAM: 8GB
Boot Disk: Ubuntu 24.04 LTS, Balanced persistent disk, 250GB SSD,
Identity & API access: No service account
Firewall: Enable HTTP & HTTPS traffic
Download & configure ETH Docker
SSH into your VM/hardware: Click on the dropdown beside the "SSH" column and select "Open in browser window". Click on "Authorize" when prompted.

Go to Lido's ETH Docker repository and to get and run the installation commands. Run the next 2 commands in sequence.
cd ~ && git clone https://github.com/eth-educators/eth-docker.git && cd eth-dockersudo usermod -aG sudo $USERExit your virtual machine/hardware and re-login to add your host user into the docker user group.
exitAfter logging in again, install ETH Docker.
cd eth-docker
./ethd installAfter the installation is complete, run:
source ~/.profileYou will now be able to call ethd from anywhere in your terminal. Next, configure the ETH Docker service.
ethd configFollow along the prompts in the terminal UI (TUI) to:
Choose
Hoodi Testnet>>Lido-compatible node (Community Staking / Simple DVT)>>[Community Staking] CSM nodeSelect the Nimbus (Consensus) and Nethermind (Execution) for the client choices
Use the default Checkpoint Sync URL, select
yesfor MEV Boost,select allrelays,yesfor Grafana dashboards,defaultGraffiti,yesfor generate validator keysGenerate suitable validator keys to participate in the Lido CSM
Generate
1validator key and set the encryption password for the keySave your 24-word mnemonic
Verify the fee recipient and withdrawal address on the CSM Operator Portal
ETH Docker TUI Navigation
Arrow keys & Tab key: Cycle optionsSpace bar: Select optionEnter: Confirm optionCTRL+C: Exit individual screen monitoring view
Start ETH Docker
ethd startImport validator keys
Change the user permissions of the folder containing your validator keys. Replace <user> with your actual username of your VM.
sudo chown -R $USER:$USER ~/eth-docker/.eth/validator_keysTip: To find username, look to the terminal of your sever/node. Every character before the @ is your username
Next, import the generated validator keys onto your validator client
ethd keys importUpload deposit data
Copy the deposit data generated by the command below for uploading onto the Lido CSM Widget.
Mainnet: https://csm.lido.fi/
Hoodi: https://csm.testnet.fi/
cat ~/eth-docker/.eth/validator_keys/deposit*jsonExample:
[{"pubkey": "b72e61268081e28b583d78876cc1687d72be4c3592de1f9d585c96b4c64b25b49174f04ae6e55eb1e59247cb575c0157", "withdrawal_credentials": "010000000000000000000000f0179dec45a37423ead4fad5fcb136197872ead9", "amount": 32000000000, "signature": "8bb6e8838d15ea0ea23ed5151436ea07b65a0530ccfa9f5154b1fa394827df5add81510cf3463b79a387b0dffbe43ae417ea53b844b43d6a249fbc153fa1deda9fc089f218a845e382aa7455d804650e0e03232d3dad36b180bbdacd908f286c", "deposit_message_root": "8dbda15641eb7be3573f7377d10634c93c2b1dceb9fb6e519ec54ae0286d04c7", "deposit_data_root": "43f215ce19df49591db322bd4966667afc2a226a0a9812e5d60e31c60223991c", "fork_version": "01017000", "network_name": "hoodi", "deposit_cli_version": "2.7.0"}]
View logs
Monitor the logs of your validator node to make sure that it is syncing (or synced) with no errors while you wait for Lido to provision your validator deposit with 32 ETH.
View logs of each docker container.
ethd logs <container_name> -f --tail 20Flags:
-f: Follow along the logs in real time.CTRL+Cto exit monitoring view--tail: Print the last N lines of the logs.
Choose one to replace the <container_name> above.
blackbox-exporter consensus execution json-exporter node-exporter promtail
cadvisor ethereum-metrics-exporter grafana loki prometheus validatorGrafana Dashboards:
Bring down all ETH Docker containers.
ethd downEdit the .env file of ETH Docker.
nano ~/eth-docker/.envScroll down to the GRAFANA_PORT=3000 line and change the number to 443.
CTRL+O, ENTER, CTRL+X to save and exit.
Bring ETH Docker back up.
ethd upTo access your Grafana dashboard, navigate to PUBLIC_IP:443 on your web browser.
Useful commands
Run ethd help to print all available command line options. Common options:
Update all clients & ETH Docker stack:
ethd updateStop ETH Docker:
ethd downRestart ETH Docker:
ethd restartRestart from scratch:
ethd terminate
Mainnet workflow
ETH Docker has an inbuilt TUI workflow for Mainnet setups. Simply follow along but verify the withdrawal and fee recipient addresses.
Mainnet withdrawal_address:
0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293fMainnet fee recipient address:
0x388C818CA8B9251b393131C08a736A67ccB19297
Support
Last updated