Skip to content
A dockerized Ethereum related node setup (Geth + Swarm + InfluxDB + Grafana)
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
go-ethereum @ 6a62fe3 Update geth and swarm versions Feb 23, 2020
grafana-provisioning init grafana provisioning Feb 14, 2020
swarm @ 5ccfd99 Update geth and swarm versions Feb 23, 2020
.config.env.example Added syncmod option for geth Feb 28, 2020
.gitignore init Feb 11, 2020
.gitmodules
LICENSE Initial commit Feb 7, 2020
README.md Update geth and swarm versions Feb 23, 2020
docker-compose.yml Added syncmod option for geth Feb 28, 2020
env.grafana init Feb 11, 2020
env.influxdb Disable influxdb reporting Feb 28, 2020

README.md

Dockerized Ethereum / Swarm Node

A dockerized Ethereum related node setup, using docker-compose.

Warning(s):

  • The docker-compose setup builds images locally, since official docker images are only built for x86_64 and I wanted this to compile onto ARM variants as well. Make sure the system has enough resources to do the compilation (500MB of RAM should do).
  • This setup was designed for running on locally networked hardware. I take no responsibility if services are exposed to the Internet and you are not adequately firewalled.

Config

Secrets are handled through environment variables, which can be set by renaming .config.env.example to .config.env and changing account values to your own.

Grafana default credentials are admin:admin. Change them as soon as Grafana is up and running.

Installing

  1. Clone this repository:
git clone https://github.com/Chadsr/ethereum_node.git
  1. Init and update Git submodules
git submodule init
git submodule update
  1. Copy the example config to .config.env:
cp .config.env.example .config.env
  1. Edit the values in .config.env to your preference.

Note: An Ethereum account will NOT automatically be generated. It is assumed that you have already created one.

systemd installation

An example systemd unit file:

[Unit]
Description=Ethereum Dockerized Services
Requires=docker.service
After=docker.service

[Service]
EnvironmentFile=/path/to/ethereum_node/.config.env
WorkingDirectory=/path/to/ethereum_node
Restart=always

ExecStart=/usr/bin/docker-compose up --build

ExecStop=/usr/bin/docker-compose down

[Install]
WantedBy=multi-user.target
  1. Write the above to a file named /etc/systemd/system/ethereum.service and update the working directory to point to the cloned repository.

  2. Enable the systemd service:

sudo systemctl enable ethereum.service
  1. Start the systemd service:
sudo systemctl start ethereum.service
  1. (Optionally) monitor the output of your newly running service:
sudo journalctl -f -u ethereum.service

Notes

Architecture Support

Since this setup is designed to build the docker images locally, it should work on any common CPU architecture. I am personally running it on aarch64 (ARMv8).

Geth

Current version: v1.9.11

Swarm

Current version: v0.5.7

You can’t perform that action at this time.