https://github.com/chadsr/ethereum-node
A dockerized Ethereum related node setup (Geth + Swarm + InfluxDB + Grafana)
https://github.com/chadsr/ethereum-node
armv7 armv8 docker-compose ens ethereum ethereum-blockchain ethereum-node ethereum-swarm ethersphere geth geth-node go-ethereum grafana grafana-influxdb swarm systemd-service
Last synced: 5 months ago
JSON representation
A dockerized Ethereum related node setup (Geth + Swarm + InfluxDB + Grafana)
- Host: GitHub
- URL: https://github.com/chadsr/ethereum-node
- Owner: chadsr
- License: mit
- Created: 2020-02-07T16:01:04.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-02-02T09:52:01.000Z (over 3 years ago)
- Last Synced: 2023-03-03T22:32:51.948Z (over 2 years ago)
- Topics: armv7, armv8, docker-compose, ens, ethereum, ethereum-blockchain, ethereum-node, ethereum-swarm, ethersphere, geth, geth-node, go-ethereum, grafana, grafana-influxdb, swarm, systemd-service
- Homepage:
- Size: 55.7 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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 (1GB 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.
## Requirements
- Adequate storage space (Ideally >300Gb. This is a full-node setup, but could be tweaked otherwise)
- Minimum of 4GB RAM (If you have 4GB, enable a swap partition to avoid issues!)
- `systemd` (or some equivalent such as `supervisord`)
- `docker` (With systemd daemon, or equivalent running)
- `docker-compose`
- An [Ethereum account](https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts#creating-an-account)## Installing
1. Clone this repository:
```
git clone https://github.com/Chadsr/ethereum_node.git
```2. Init and update Git submodules
```
git submodule init
git submodule update
```3. Copy the example config to `.config.env`:
```
cp .config.env.example .config.env
```4. 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](https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts#creating-an-account).**
### 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=alwaysExecStart=/usr/bin/docker-compose -f compose_files/geth.yml -f compose_files/swarm.yml -f compose_files/metrics.yml 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
```3. Start the systemd service:
```
sudo systemctl start ethereum.service
```4. (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.25### Swarm
**Current version:** v0.5.7