Coder Social home page Coder Social logo

stereum-dev / ethereum2-docker-compose Goto Github PK

View Code? Open in Web Editor NEW
84.0 9.0 27.0 17.12 MB

Run different kind of Ethereum 2 staking nodes with monitoring tools and own Ethereum 1 node out of the box!

Home Page: https://stereum.net

License: MIT License

Shell 100.00%
vouch prysm dirk lighthouse monitoring ethereum docker docker-compose

ethereum2-docker-compose's Introduction

Stereum.net's node setups

Run and monitor an Ethereum 2.0 staking node, choose your favorite client and start right away!

Visit us at stereum.net for guides and on Discord for support!

Setups

Setup Beacon Staking Monitoring
Lighthouse yes yes yes
Lodestar yes yes yes
Multiclient with Vouch & Dirk yes yes yes
Nimbus Eth2 yes yes yes
Prysm yes yes yes
Teku yes yes yes

Sorted by name (ascending).

Testnet or Mainnet

You are viewing this repository with configuration for testnet (Pyrmont)

Default is Pyrmont, the long-term testnet for Ethereum 2.0. For running on Mainnet, checkout mainnet branch by executing the following commands after git clone:

git checkout mainnet

Not all setups are available for Mainnet yet.

Run a node

  1. Select a docker-compose from the list above.
  2. Copy the docker-compose.yaml of your choice to the project's root directory (this directory).
  3. Follow the guide included with the docker-compose (README.md of the selected docker-compose).

User id 2000

Some components like grafana and nimbus need folders with special permission and/or owner. To make the setup of ethereum2-docker-compose as simple as possible these necessary permissions will be set on each startup with the user id of 2000.

It's possible (however highly unlikely) that your local system already has a user with the id of 2000. In this case the folders will show the name of your user. We recommend not using a local user with the id 2000 for security reasons.

FAQ

My docker-compose command doesn't work (e. g. ERROR: Version in "./docker-compose.yaml" is unsupported.)

Most linux distributions (including Ubuntu) don't serve recent docker-compose versions in their package management. You can install a compatible version by following official docker.io documentation.

Support us!

This software is provided under MIT license and therefore freely usable without restrictions. Dontations are welcome at gitcoin.co to make use of quadratic funding and make your contribution count even more! With your donation you help us build new features and keep our servers for testnet running. Thank you for every contribution!

ethereum2-docker-compose's People

Contributors

gbayasgalan avatar shamoya avatar stefa2k avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ethereum2-docker-compose's Issues

Lighthouse monitoring

Add monitoring (prometheus, grafana) to lighthouse-standalone and include dashboard.

prysm: node-exporter enhancements

  • use explicit version with .env version tag
  • run with user: "2000"
  • pre-define outsource configuration in ./config/prometheus-node-exporter/... and mount as volume in docker-compose.yaml

multiclient: second vouch container

To prevent missed attestations/blocks when the main beacon of one vouch is not functioning properly we need to introduce a second vouch container and connect it to one of the other beacons as main its main node.

Grafana shows no data

I am following along your docker-compose examples for "lighthouse-only" and everything is working great so far (thanks btw!). Grafana is showing no data in any dashboard though. I see that prometheus is running and I can reach it from the grafana container. I have accessed the prometheus interface directly but none of the queries work - nothing is returned.

I don't know where to start looking for the problem. Logs do not show any obvious hints.

error when used with docker-machine

all other containers booted correctly

ERROR: for prometheus  Cannot start service prometheus: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/home/xyz/Development/ethereum2-docker-compose/config/prometheus/prometheus-p.yaml\\\" to rootfs \\\"/var/lib/docker/overlay2/0859d586e611218284bc2e0a6cc0cb53ef1dba7598b9a9fd54d41d1d36c76993/merged\\\" at \\\"/var/lib/docker/overlay2/0859d586e611218284bc2e0a6cc0cb53ef1dba7598b9a9fd5``4d41d1d36c76993/merged/etc/prometheus/prometheus.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ethereum2-docker-compose on  master [!?] 
⇡0% ➜ docker -v
cokecDocker version 19.03.4-rc1, build 4ba2b1c606

ethereum2-docker-compose on  master [!?] took 2s 
⇡0% ➜ docker-machine -v
docker-machine version 0.16.0, build 702c267f

no volumes currently

ethereum2-docker-compose on  master [!?] took 3s 
⇡0% ➜ docker volume ls                       
DRIVER              VOLUME NAME

lodestar

integrate lodestar with validator

node exporter crashes from time to time

Hi all,

I'm having the node-exporter docker crash every couple of days.
The log doesn't show anything.
Does anyone have the same issue?
I'm running with prysm only.
Some output

docker-compose ps
Name Command State Ports

ethereum2-docker-compose_beacon_1 /app/beacon-chain/beacon-c ... Up 0.0.0.0:12000->12000/udp,
0.0.0.0:13000->13000/tcp,
127.0.0.1:3500->3500/tcp,
127.0.0.1:4000->4000/tcp,
127.0.0.1:8080->8080/tcp
ethereum2-docker-compose_geth_1 geth --http --http.port=85 ... Up 0.0.0.0:30303->30303/tcp,
0.0.0.0:30303->30303/udp,
127.0.0.1:8545->8545/tcp, 8546/tcp
ethereum2-docker-compose_grafana_1 /run.sh Up 127.0.0.1:3000->3000/tcp
ethereum2-docker-compose_node- /bin/node_exporter Exit 255 9100/tcp
exporter_1
ethereum2-docker-compose_prometheus_1 /bin/prometheus --storage. ... Up 127.0.0.1:9090->9090/tcp
ethereum2-docker-compose_renderer_1 dumb-init -- node build/ap ... Up 8081/tcp
ethereum2-docker-compose_slasher_1 /app/slasher/slasher --con ... Up
ethereum2-docker-compose_validator_1 /app/validator/validator - ... Up 127.0.0.1:7500->7500/tcp,
127.0.0.1:8081->8081/tcp

prysm-only/create-account.yaml # Failing on password req in test setup - how to recover?

So I was trying it out using the TestNet and gave a weak password... Now right before the setup finishes, the loader complaines about password policy:
Could not import accounts: could not initialize wallet: password did not pass validation: password must have at least 8 characters, at least 1 alphabetical character, 1 unicode symbol, and 1 number

Grr - Sure its very good to have that in MainNet.. But now I get stuck and wonder how to proceed from here?

Can I change my existing password to match the requirements or do I need to generate new validator configs?


My steps:

Copy templates:

cd /opt/ethereum2-docker-compose/
cp compose-examples/prysm-only/docker-compose.yaml 
cp compose-examples/prysm-only/create-account.yaml ./

Copy keystore & deposit file:

mkdir -p /opt/ethereum2-docker-compose/launchpad/eth2.0-deposit-cli/validator_keys
cd /opt/ethereum2-docker-compose/launchpad/eth2.0-deposit-cli/validator_keys/
cp /opt/ethereum2-docker-compose/launchpad/deposit_data-XYZ.json ./
cp /opt/ethereum2-docker-compose/launchpad/keystore-m_XYZjson ./

Enter password / Create wallet dir:

cd /opt/ethereum2-docker-compose/
mkdir -p data/prysm/validator/wallets
vim data/prysm/validator/passwords/wallet-password

(saved pw to file)

Try to run it:

cd /opt/ethereum2-docker-compose/
sudo docker-compose -f create-account.yaml run validator-import-launchpad

But sadly it fails:

[2021-02-21 18:03:34] FATAL accounts: 
Could not import accounts: could not initialize wallet: 
password did not pass validation: 
password must have at least 8 characters, 
at least 1 alphabetical character, 1 unicode symbol, and 1 number

teku: prometheus should use user: "2000"

Teku's prometheus container should use user: "2000" instead of user: root, similar to docker-compose.yaml of lighthouse-only setup. This change needs adjustments of stereum-init's mount too!

Nimbus beacon

Goal: docker-compose.yaml example file with nimbus beacon and eth1 geth

Prysm: wrong alerts for slashing

User reported issue with getting alerts, but they are not correct. Validators are not slashed and node works as intended (source beaconcha.in). Validator public keys/indexes won't be posted here to keep the user's funds anonymous.
image

grafana - prometheus connection incorrectly configured with basic auth

the grafana provisioning-p configuration sets its prometheus datasource as having basic auth

# <bool> enable/disable basic auth
basicAuth: true
# <string> basic auth username
basicAuthUser: admin
# <string> basic auth password
basicAuthPassword: admin

as i understand it prometheus does not natively support basic auth and it is not otherwise setup by this docker configuration
this misconfiguration prevents grafana from reaching prometheus, resulting in logging like

error="Could not find datasource Data source not found" 

Could not open wallet: no wallet found

I tried to run the prysm-only process, and I got this error on the validator container:

time="2020-11-20 10:26:45" level=warning msg="Running on ETH2 Mainnet" prefix=flags
time="2020-11-20 10:26:45" level=error msg="could not open wallet: no wallet found. You can create a new wallet with validator wallet create.If you already did, perhaps you created a wallet in a custom directory, which you can specify using --wallet-dir=/path/to/my/wallet" prefix=main

What am I missing?

Docker-Images: prysm

Build a secure docker image for prysm:

  • beacon-chain
  • validator
  • slasher

Docker image features:

  • Using non-priviledged user
  • Apparmor or similar
  • No package managers
  • Automized and triggered builds

Metrics not loading in Grafana

Hello,

I was able to successfully run the docker compose file, adding user 1000 to grifana and it looks like the Overview New dashboard is not loading any metrics:
image

It looks like the only metrics that seem to be available are the scrape metrics:
image

I wanted to get the dashboard metrics working before I stake anything.

Here are the latest bits of logs for each service:

Geth seems to be sync'd to the head of the chain:
image

Beacon_1 seems ok also:
image

Validator_1 maybe an issue
image

slasher_1 gives me some errors, any idea why?
image

Grafana_1 successfil login:
image

All in all, I really like this setup and thank you for all of your work,

-bp

nimbus: prometheus should use user: "2000"

Nimbus' prometheus container should use user: "2000" instead of user: root, similar to docker-compose.yaml of lighthouse-only setup. This change needs adjustments of stereum-init's mount too!

Could not initialize wallet: password did not pass validation (prysm-only)

I am trying to follow the prysm-only to create the node.
I am getting this error:

[root@master-0 ethereum2-docker-compose]# docker-compose -f create-account.yaml run validator-import-launchpad

Prysmatic Labs Terms of Use

By downloading, accessing or using the Prysm implementation (“Prysm”), you (referenced herein
as “you” or the “user”) certify that you have read and agreed to the terms and conditions below.

TERMS AND CONDITIONS: https://github.com/prysmaticlabs/prysm/blob/master/TERMS_OF_SERVICE.md


Type "accept" to accept this terms and conditions [accept/decline]: (default: decline):
accept
[2020-11-20 11:34:56]  WARN flags: Running on ETH2 Mainnet
[2020-11-20 11:34:56] FATAL accounts: Could not import accounts: could not initialize wallet: password did not pass validation: password must have at least 8 characters, at least 1 alphabetical character, 1 unicode symbol, and 1 number

I think that I followed the instructions correctly. I have the the wallet password file here:

[root@master-0 ethereum2-docker-compose]# ll data/prysm/validator/wallets/
total 4
-rw-r--r--. 1 root root 15 Nov 20 12:12 wallet-password
[root@master-0 ethereum2-docker-compose]# ll data/prysm/validator/passwords/
total 4
-rw-r--r--. 1 root root 15 Nov 20 12:34 wallet-password

(both are the same, and both are the same as was used during launchpad)

I already finished the launchpad process, so I paid my 32 GETH. Any suggestions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.