Skip to main content

Overview

User sets up the node via a desktop (Linux, MacOS, Windows) and receives optionally alerts on a smartphone (iOS, Android).

Interaction Overview Diagram

Interaction Overview Diagram


Launcher

The Stereum Launcher GUI is developed using Vue.js for the frontend, which is a JavaScript framework.

Source of Launcher is maintained in ./launcher directory: https://github.com/stereum-dev/ethereum-node/tree/main/launcher

To package and deploy our Stereum Launcher as a standalone Desktop-App we use the Electron Builder. see also:

SSH/login:

The Launcher connects via SSH to a remote host, see how it works here: SSH

Using ssh protocol the Launcher will login into your remote host with the credentials you provided in the login-screen. Then being logged in, it runs commands only users would run, e. g.:

  • Setup of a node: Write service configuration files according to user input (more info)
  • Open SSH ports: Make Grafana, etc. easily accessible to the user

automated-setup:

when logged-in and connected via ssh to your remote-host, stereum-launcher, configures your remote-System based on the choices you made in the installer-menu of the launcher-gui. In Order to do that fully automated, the launcher uses ansible playbooks:

  • ./controls/roles/setup
  • default setup tasks
  • setup ufw firewall
    • ufw firewall settings are made automatic based on your current node arrangements. look it up using this command on your remote-host: sudo ufw status
  • You can find launcher logs here:
    • on Linux: ~/.config/stereum-launcher/logs/main.log
    • on macOS: ~/Library/Logs/stereum-launcher/main.log
    • on Windows: %USERPROFILE%\AppData\Roaming\stereum-launcher\logs\main.log

Services (Docker container)

Stereum uses Docker for managing the different services needed in order to run an Ethereum full node and more. Each of these services managed by Stereum got a configuration file in /etc/stereum/services/ with all parameters needed to run this specific. This enables Stereum to stop and start services for unattended updates & maintenance without the help of Launcher.

Service configuration

Configurations of services are stored in yaml format as files in /etc/stereum/services Different services require different configuration methods and the configuration format supports passing configuration via:

  • Environment variables
  • Command arguments
  • Shell scripts

Configuration files usually get built by Stereum Launcher, but also Ansible roles modify them in case of updates.

Ports

Some docker containers use p2p technology to connect to networks or protocols. In order to give the service the best environment possible to work as expected sometimes ports need to be bound to the host for optimal connectivity. This happens fully automatically until Launcher supports customization of these rules for each service individually.

Volumes

Services need to persist data in order to preserve the state of their workings. There is also a need to share secrets across services, e. g. JWT for bi-directional communication between execution & consensus client, read more on this "The Merge: bi-directional communication for el & cl".