Integration with Rocketpool.
RocketPool node and Eth Docker solo staking, it's like peanut butter and jelly. Both use docker, and they integrate seamlessly.
I'll be showing two configurations: Chain databases in Rocketpool, and chain databases in Eth Docker.
This should work for any client that Rocketpool supports.
Configuration A: Chain databases in RocketPool
For this example, the consensus client (beacon/eth2) and execution client (eth1) will run in RocketPool, and Eth Docker will run just a validator client, but not "consensus" or "execution" containers.
Configure RocketPool
If you are not running RocketPool already, install it following their instructions. When you get to the step where you configure RocketPool:
rocketpool service config and choose Locally Managed, any local Execution Client (Geth, Erigon, etc) and any Consensus Client.
Run rocketpool service start, and everything should come up.
You can continue following the Rocketpool instructions at this point.
Configure Eth Docker
If you are not running Eth Docker already, grab it with git clone https://github.com/ethstaker/eth-docker.git && cd eth-docker.
With remote Prysm
Configure Eth Docker with ./ethd config. Make sure to choose the same Ethereum PoS network as RocketPool, and a "Validator client only" to match the Consensus client in RocketPool. Choose "eth2:5053" (note no "http://") as your "remote consensus client" if your solo validator client is Prysm, and "http://eth2:5052" as your "remote consensus client" if your solo validator client is anything else. Doppelganger protection works for Prysm and Nimbus VCs towards a Prysm CL. Any other VC requires Doppelganger to be off.
For any other remote CL
Configure Eth Docker with ./ethd config. Make sure to choose the same Ethereum PoS network as RocketPool, and a "Validator client only" to match the Consensus client in RocketPool. Choose "http://eth2:5052" as your "remote consensus client".
Lighthouse and Teku are mutually compatible, they can be mixed and matched
Start and cleanup
If you had previously already imported keys to Eth Docker, restart Eth Docker with ./ethd restart.
Optional cleanup: If you had chain databases in Eth Docker previously, do a docker volume ls and then docker volume rm the consensus/beacon and eth1/ec volumes, e.g. eth-docker_geth-eth1-data and eth-docker_lhbeacon-data.
Import solo staking keys
If you haven't already imported validator keys to Eth Docker, do so now. You will need the keystore-m files and their
password.
- Copy
keystore-mfiles to.eth/validator_keysin theeth-dockerdirectory - From the
eth-dockerdirectory, start Eth Docker:./ethd up - Import keys and follow prompts:
./ethd keys import - Verify keys came in:
./ethd keys list
Check logs
You expect ./ethd logs -f validator to show a successful connection.
rocketpool service logs validator should show the validator connecting to its own consensus client.
docker ps should show rocketpool_eth1 and rocketpool_eth2 containers, but no consensus or execution containers for Eth Docker.
Configuration B: Chain databases in Eth Docker
For this example, the consensus client (beacon/eth2) and execution client (eth1) will run in Eth Docker, as well as the solo staking validator client, and RocketPool will run its own validator client as well as its node container, but not "eth1" or "eth2" containers.
Configure RocketPool
If you are not running RocketPool already, install it following their instructions. When you get to the step where you configure RocketPool:
rocketpool service configand chooseExternally Managedfor the Execution Client, and as your http URL usehttp://execution:8545and as the websocket URL usews://execution:8546. ChooseNonefor your fallback client. ChooseExternally Managedfor the Consensus Client, and choose the client you want to run in Eth Docker. As the http URL usehttp://consensus:5052. If you are using Prysm, useconsensus:4000instead.
Set up Eth Docker next before following the rest of the Rocketpool instructions.
Configure Eth Docker
If you are not running Eth Docker already, grab it with git clone https://github.com/ethstaker/eth-docker.git && cd eth-docker, and configure it with ./ethd config. Choose an Ethereum node deployment. Make sure to choose the same Ethereum PoS network and consensus layer client as you chose in RocketPool.
Of note, the Prysm validator client in RocketPool only works with the Prysm consensus layer client in Eth Docker. Other clients can be mixed and matched to an extent, e.g. a Lighthouse validator client in RocketPool to a Teku consensus layer client in Eth Docker.
Connect Eth Docker to RocketPool's docker network.
nano .envand add:ext-network.ymltoCOMPOSE_FILE- Make sure that
DOCKER_EXT_NETWORK=rocketpool_netin the same.envfile - Save the
.envfile with Ctrl-X ./ethd upor, if you already have Eth Docker running,./ethd updatefollowed by./ethd uprocketpool service startand Rocketpool should come up
You can continue following the Rocketpool instructions at this point.
Import solo staking keys
If you haven't already imported validator keys to Eth Docker, do so now. You will need the keystore-m files and their
password.
- Copy
keystore-mfiles to.eth/validator_keysin the eth-docker directory - From the eth-docker directory, start Eth Docker:
./ethd up - Import keys and follow prompts:
./ethd keys import - Verify keys came in:
./ethd keys list
Check logs
./ethd logs -f consensus should show it starting up, ditto ./ethd logs -f execution, and after consensus is up, you expect
./ethd logs -f validator to show a successful connection. Solo staking is (still) working.
rocketpool service logs validator should show the validator connecting to your consensus client.
docker ps should show no rocketpool_eth1 or rocketpool_eth2 containers.