Install Erigon client

One-page interactive guide to install Erigon client and configurate it for running on supported chain.

Disclaimer

This guide is for informational purposes only. The author nor website owner does not guarantee accuracy of the information in this guide and is not responsible for any damages or losses incurred by following the guide.

Erigon client can be used for staking on various supported chains. Client installation is always only one, used by services with an individual configuration (different service name, data path and ports in use).

Install Erigon client

Installing Erigon client

Erigon documentation: https://erigon.gitbook.io/erigon

  1. Find the latest stable version of Erigon on Github

  2. Download Erigon version 2.61.0

    cd ~/downloads && curl -LO https://github.com/erigontech/erigon/releases/download/v2.61.0/erigon_v2.61.0_linux_amd64v2.tar.gz
  3. Verify hash of donwnloaded file

    Get hash of downloaded file and compare it with official hashes
    sha256sum erigon_v2.61.0_linux_amd64v2.tar.gz
    And check it compare to the provided hash for the file from https://github.com/erigontech/erigon/releases/download/v2.61.0/erigon_v2.61.0_checksums.txt (Note: The link links at 2.61.0 version )
  4. Extract the downloaded package

    tar xvf erigon_v2.61.0_linux_amd64v2.tar.gz
  5. Copy extracted Erigon library

    sudo cp -a erigon_v2.61.0_linux_amd64v2 /usr/local/bin/erigonlib
  6. Remove downloaded files

    cd ~/downloads && rm -r erigon_v2.61.0_linux_amd64v2.tar.gz && rm -r erigon_v2.61.0_linux_amd64v2

Configurate the service

Create a system user and data directory for Erigon service

  • Create a user

    :
    sudo useradd --system --no-create-home --shell /bin/false erigon
  • Create a folder for Erigon data on network

    :
    sudo mkdir -p /var/lib/erigon
  • Set access permission and ownership for the Erigon data folder

    sudo chown -R erigon:erigon /var/lib/erigon

Configurate & Run Erigon Service

  • Choose ports for communication

    Change the default ports below if you are going to stake on more chains simultaneously (e.g. Ethereum and Gnosis at once) on the same machine. If you are going to stake only, you can keep the default ports. If you are changing the default ports, be sure that the newly selected port is not already in used. A port in used may be checked with following code:

    ss -tuln | grep ':PORT'
    • If it returns empty response, the port is free and can be used.

    Ports selection

    • (Default port: 30303)
    • (Default port: 8545)
    • (Default port: 8551)
  • Enable ports communication

    To allow execution client synchronization, there's need to enable port 30303 reserved for P2P traffic to TCP (allows the node to connect to peers) and UDP (allows node discovery). It may be done with following UFW setup:

    $ sudo ufw allow 30303

    Use this option only if you need operate execution client and beacon client on different machines.

    • Enable port 30303 for P2P traffic

      To allow execution client synchronization, there's need to enable port 30303 reserved for P2P traffic to TCP (allows the node to connect to peers) and UDP (allows node discovery). It may be done with following UFW setup:

      $ sudo ufw allow 30303
    • Enable port 8551 for IP of your second machine
      sudo ufw allow from 192.168.88.0/27 to any port 8551

      Note: Be sure you use proper IP of your second machine / proper local network configuration.

  • Create configuration file for Erigon service

    1. Open configuration file
      sudo nano /etc/systemd/system/erigon.service
    2. Copy the configuration below into the file
      [Unit]
      Description=Erigon Execution Client (Ethereum Mainnet)
      After=network.target
      Wants=network.target
      [Service]
      User=eth-erigon
      Group=eth-erigon
      Type=simple
      Restart=always
      RestartSec=5
      ExecStart=/usr/local/bin/erigonlib/erigon \
        --chain=mainnet \
        --datadir=/var/lib/erigon \
        --authrpc.jwtsecret=/var/lib/jwtsecret/ethereum.hex \
      #  --externalcl \
        --prune=htcr
      #  --private.api.addr= \
      #  --prune.r.before=11052984 
      [Install]
      WantedBy=default.target
      [Unit]
      Description=Erigon Execution Client (Gnosis Chain)
      After=network.target
      Wants=network.target
      [Service]
      User=gno-erigon
      Group=gno-erigon
      Type=simple
      Restart=always
      RestartSec=5
      ExecStart=/usr/local/bin/erigonlib/erigon \
        --chain=gnosis \
        --datadir=/var/lib/erigon \
        --authrpc.jwtsecret=/var/lib/jwtsecret/gnosis.hex \
      #  --externalcl \
        --prune=htcr
      #  --private.api.addr= \
      #  --prune.r.before=11052984 
      [Install]
      WantedBy=default.target
      *Note: Update JsonRpc.JwtSecretFile, if you use different
    3. Press CTRL + X then Y then ENTER to save and exit the config file.
  • Start the service

    sudo systemctl daemon-reload
    sudo systemctl start erigon
  • Check the service

    systemctl status erigon
    journalctl -fu erigon
  • Start the service on system startup

    sudo systemctl enable erigon
    • Open Delayed Start shell
      sudo nano /usr/local/bin/delayed-start.sh

      Configurate service start inside it

      systemctl start erigon.service
    • Be sure, delayed-start.service service controlling delayed-start.sh is enabled for auto start with system startup
      sudo systemctl enable delayed-start.service
    1. Configurate Staking Manager util

      • Open the configuration file
        sudo nano /usr/local/etc/staking/config/clients.conf

        If the file is empty, generate it with command sudo /usr/local/bin/staking.sh init

      • Set link to proper services. It should be as follow:
        executionClients="erigon"
        executionServices="erigon.service"
    2. Activate service to start automatically on OS startup

      • Open Start with delay util
        sudo nano /usr/local/bin/delayed-start.sh
      • Place or uncomment a command to start the Beacon client(s)
        /usr/local/bin/staking.sh start execution
      • Verify, that a service `delayed-start.service` exists and is automatically launched on system start.
        sudo systemctl enable delayed-start.service