# Build Dependencies

## Network settings

These following ports must be exposed to the public internet:

* Port 22: for SSH
* Port 5050: for TCP and UDP traffic
* A custom port can be used with `--port <port>` flag when run your node.

## **Set up non-root user**

If there is already a non-root user available, you can skip this step.

```bash
# SSH into your machine
(local)$ ssh root@{IP_ADDRESS}
# Update the system
$ sudo apt-get update && sudo apt-get upgrade -y
# Create a non-root user
$ USER={USERNAME}
$ sudo mkdir -p /home/$USER/.ssh
$ sudo touch /home/$USER/.ssh/authorized_keys
$ sudo useradd -d /home/$USER $USER
$ sudo usermod -aG sudo $USER
$ sudo chown -R $USER:$USER /home/$USER/
$ sudo chmod 700 /home/$USER/.ssh
$ sudo chmod 644 /home/$USER/.ssh/authorized_keys
```

Make sure to paste your public SSH key into the **authorized\_keys** file of the newly created user in order to be able to log in via SSH.

```bash
# Enable sudo without password for the user
$ sudo vi /etc/sudoers
```

Add the following line to the end of the file:

```bash
{USERNAME} ALL=NOPASSWD: ALL
```

Now close the root SSH connection to the machine and log in as your newly created user:

```bash
# Close the root SSH connection
$ exit
# Log in as new user
(local)$ ssh {USERNAME}@{IP_ADDRESS}
```

## Install required tools

First, install the required build tools:

```bash
# Install build-essential
$ sudo apt-get install -y build-essential
```

Then install Go:

```bash
# Install go
$ wget <https://go.dev/dl/go1.19.3.linux-amd64.tar.gz>
$ sudo tar -xvf go1.19.3.linux-amd64.tar.gz
$ sudo mv go /usr/local
```

Export the required Go paths:

```bash
# Export go paths
$ vi ~/.bash_aliases
# Append the following lines
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
```

Finally, validate your Go installation by checking its version:

```bash
$ go version
go version go1.19.3 linux/amd64
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.u2u.xyz/network/build-dependencies.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
