# Geth - Execution Engine

### **Update the system:**

```
sudo apt update && sudo apt upgrade
```

### Update distro (Ubuntu) and autoremove:

```
sudo apt dist-upgrade && sudo apt autoremove
```

## Install Geth

1\) **Check latest version of Geth:**

{% hint style="info" %}
Find the most current update [here](https://github.com/ethereum/go-ethereum/releases).

This code in this guide is updated for v1.10.26 and current as of Jan 5, 2023.
{% endhint %}

**Install Curl**

```
sudo apt install curl
```

2\)  **Change to Home directory:**

```
cd ~
```

3\)  **Use curl to download latest version:**

```
curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.11.2-73b01f40.tar.gz
```

4\) **Extract, Copy, and Clean up:**

```
tar xvf geth-linux-amd64-1.11.2-73b01f40.tar.gz
cd geth-linux-amd64-1.11.2-73b01f40
sudo cp geth /usr/local/bin
cd ~
rm geth-linux-amd64-1.11.2-73b01f40.tar.gz
rm -r geth-linux-amd64-1.11.2-73b01f40

```

## Create service file to run Geth

### Create `geth` user:

```
sudo useradd --no-create-home --shell /bin/false geth
```

### Create `/geth` directory:

```
sudo mkdir -p /var/lib/geth
```

### Assign `goeth` permission to modify `/geth`:

```
sudo chown -R geth:geth /var/lib/geth
```

### Create `geth.service` :

```
sudo nano /etc/systemd/system/geth.service
```

### Paste the following into the file:

```
[Unit]
Description=Geth Execution Client (Mainnet)
After=network.target
Wants=network.target

[Service]
User=geth
Group=geth
Type=simple
Restart=always
RestartSec=5
TimeoutStopSec=600
ExecStart=/usr/local/bin/geth \
  --mainnet \
  --datadir /var/lib/geth \
  --authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex
  
[Install]
WantedBy=default.target
```

{% hint style="info" %}
Use `Ctrl + X` to exit, `Y` to save, then `Enter` to confirm.
{% endhint %}

### Reload the daemon:

```
sudo systemctl daemon-reload
```

### Start `geth.service`:

```
sudo systemctl start geth
```

### Check `geth.service` output:

```
sudo journalctl -f -u geth.service
```

{% hint style="info" %}
This shows running journal entries created by `geth.service`. You can use `Ctrl + C` to close the window, but the program will continue running in the background.

Use `sudo systemctl stop geth` if you need to stop geth.service
{% endhint %}

The node will begin searching for peers, and eventually start downloading/verifying blocks.

### Geth Sync

{% hint style="danger" %}
**Geth data is currently \~875gb and may take \~24 hours to fully sync.**
{% endhint %}

![](https://1909644549-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mf-NdEjHOrQMjMjT9E7%2F-Mf08MijvEfT75Ig4AmH%2F-Mf095qU3RDl2D48l93t%2FScreenshot%20from%202020-11-21%2011-58-33.png?alt=media\&token=cc1fb517-ddb2-49a2-bf48-e52f9915652e)

{% hint style="info" %}
You can check your progress by comparing your block number in Geth to the current block at <https://etherscan.io/>
{% endhint %}

As you wait for the Eth1 node to sync, you can open a new terminal and install Lighthouse - Beacon Node.
