---
sidebar_position: 4
---

# Setting Up

## Pre-Requisites

There are a few things needed before installing.

While logged in as the 'root' or 'admin' user, we add a 'jackal' user and give them root privileges.

### Enable Firewall Rules

Enabling the firewall is important to ensure your hardware remains secure. The following commands will add rules
required for access on both validators and providers:

```sh
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
```

Additional ports are required if you are running a validator:

```sh
sudo ufw allow 26657
sudo ufw allow 26658
```

The only additional port required for a provider is 3333:

```sh
sudo ufw allow 3333
```

If you are running a combined validator/provider, you need to allow all of the above ports. After adding ports to the
rules list, you will need to start the firewall:

```sh
sudo ufw enable
```

After starting the firewall, verify all of the required rules are in place by running:

```sh
sudo ufw status verbose
```

Your output should be similar to the following:

```sh
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
1317                       ALLOW       Anywhere
3333                       ALLOW       Anywhere
26657                      ALLOW       Anywhere
26658                      ALLOW       Anywhere
```

### Create Jackal user

```sh
sudo adduser --gecos "" jackal
sudo usermod -aG sudo jackal
```

Log in as the jackal user to complete the below steps:

```sh
sudo su - jackal
```

### Installing required tools

This will install the necessary tools to build the jackal chain source, along with lz4 compression tool and jquery tool.

```sh
sudo apt update
sudo apt install build-essential lz4 jq
```

### Installing Go

Follow more in-depth instructions to install Go v1.19 or higher [here](https://golang.org/doc/install).

On Ububtu you can install it with:

```sh
GOVER=$(curl https://go.dev/VERSION?m=text)
wget https://golang.org/dl/${GOVER}.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf ${GOVER}.linux-amd64.tar.gz
```

Add the following golang path info to the current users `~/.profile`.

Also add it to the skeleton profile so all new users have it. `/etc/skel/.profile`

```sh
# add environmental variables for Go
if [ -f "/usr/local/go/bin/go" ] ; then
    export GOROOT=/usr/local/go
    export GOPATH=${HOME}/go
    export GOBIN=$GOPATH/bin
    export PATH=${PATH}:${GOROOT}/bin:${GOBIN}
    export GO111MODULE=on
fi
```

Restarting the shell with youre profile settings or just rebasing them like so is required.

```sh
source ~/.profile
```
