CSM with ETH Docker
Last updated
Last updated
You will need to prepare your virtual machine (VM) or home staking hardware for all options below. Step-by-step guide below.
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, 350GB SSD,
Identity & API access: No service account
Firewall: Enable HTTP & HTTPS traffic
Estimated cost per month on Google Cloud = $84, or 3.5 months of free practice time with $300 of cloud credits
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.
Exit your virtual machine/hardware and re-login to add your host user into the docker user group.
After logging in again, install ETH Docker.
After the installation is complete, run:
You will now be able to call ethd
from anywhere in your terminal. Next, configure the ETH Docker service.
Follow along the prompts in the terminal UI (TUI) to:
Choose Holešovice Testnet
>> Lido-compatible node (Community Staking / Simple DVT)
>> [Community Staking] CSM node
Select the Nimbus (Consensus) and Nethermind (Execution) for the client choices
Use the https://checkpoint-sync.holesky.ethpandaops.io
for the Checkpoint Sync URL, select yes
for MEV Boost, select all
relays, yes
for Grafana dashboards, default
Graffiti, yes
for generate validator keys
Generate suitable validator keys to participate in the Lido CSM
Generate 1
validator key and set the encryption password for the key
Save your 24-word mnemonic
Verify the fee recipient and withdrawal address on the CSM Operator Portal
Arrow keys & Tab key
: Cycle options
Space bar
: Select option
Enter
: Confirm option
CTRL+C
: Exit individual screen monitoring view
Change the user permissions of the folder containing your validator keys. Replace <user> with your actual username of your VM.
Tip: 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
Copy the deposit data generated by the command below for uploading onto the Lido CSM Widget.
Mainnet: https://csm.lido.fi/
Holesky: https://csm.testnet.fi/
Example:
[{"pubkey": "b72e61268081e28b583d78876cc1687d72be4c3592de1f9d585c96b4c64b25b49174f04ae6e55eb1e59247cb575c0157", "withdrawal_credentials": "010000000000000000000000f0179dec45a37423ead4fad5fcb136197872ead9", "amount": 32000000000, "signature": "8bb6e8838d15ea0ea23ed5151436ea07b65a0530ccfa9f5154b1fa394827df5add81510cf3463b79a387b0dffbe43ae417ea53b844b43d6a249fbc153fa1deda9fc089f218a845e382aa7455d804650e0e03232d3dad36b180bbdacd908f286c", "deposit_message_root": "8dbda15641eb7be3573f7377d10634c93c2b1dceb9fb6e519ec54ae0286d04c7", "deposit_data_root": "43f215ce19df49591db322bd4966667afc2a226a0a9812e5d60e31c60223991c", "fork_version": "01017000", "network_name": "holesky", "deposit_cli_version": "2.7.0"}]
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.
Flags:
-f
: Follow along the logs in real time. CTRL+C
to exit monitoring view
--tail
: Print the last N lines of the logs.
Choose one to replace the <container_name>
above.
Grafana Dashboards:
Bring down all ETH Docker containers.
Edit the .env
file of ETH Docker.
Scroll 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.
To access your Grafana dashboard, navigate to PUBLIC_IP:443
on your web browser.
Run ethd help
to print all available command line options. Common options:
Update all clients & ETH Docker stack: ethd update
Stop ETH Docker: ethd down
Restart ETH Docker: ethd restart
Restart from scratch: ethd terminate
ETH Docker has an inbuilt TUI workflow for Mainnet setups. Simply follow along but verify the withdrawal and fee recipient addresses.
Mainnet withdrawal_address: 0xB9D7934878B5FB9610B3fE8A5e441e8fad7E293f
Mainnet fee recipient address: 0x388C818CA8B9251b393131C08a736A67ccB19297