> For the complete documentation index, see [llms.txt](https://scribcode.gitbook.io/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://scribcode.gitbook.io/home/testnet/kyve/server-setup.md).

# Server Setup

We would like to extend our sincere thanks to: [88Mikhail88](https://github.com/88Mikhail88)

<figure><img src="/files/B89bAIQhSsGlc5xX5bU2" alt=""><figcaption></figcaption></figure>

### Minimum Hardware Requirements

```
4CPU 8RAM 250GB
```

### Recommended Hardware Requirements

```
8CPU 16RAM 500GB
```

[Rent On Hetzner](https://hetzner.cloud/?ref=dYKZk3JiQYo2) | [Rent On OVH](https://www.ovhcloud.com/en/vps)<br>

## Manual Server Setup

```bash
#CREATING YOUR OPENSSH KEY IF YOU DON'T ALREADY HAVE IT ON YOUR LOCAL MACHINE

ssh-keygen -t ed25519 -C "name"

#THEN COPY PUBLIC SSH KEY TO YOUR SERVER

ssh-copy-id -i ~/.ssh/name_id_ed25519.pub Username@000.000.000

```

#### Update System and Installation of Basic Validator Package

```bash
# Login to the server as "root user" and add a new admin user

adduser "new_user"

# Add your new user to sudo group

usermod -aG sudo "new_user"

# Then swicth from your root to the new User you created

su "new_user"
cd #to go back to home directory

# upgrade system packages

sudo apt-get update && sudo apt upgrade -y

sudo apt install mc tmux curl wget smartmontools


# disable root login, disable password authentication, use ssh keys only

sudo sed -i 's|^PermitRootLogin .*|PermitRootLogin no|' /etc/ssh/sshd_config
sudo sed -i 's|^ChallengeResponseAuthentication .*|ChallengeResponseAuthentication no|' /etc/ssh/sshd_config
sudo sed -i 's|^#PasswordAuthentication .*|PasswordAuthentication no|' /etc/ssh/sshd_config
sudo sed -i 's|^#PermitEmptyPasswords .*|PermitEmptyPasswords no|' /etc/ssh/sshd_config
sudo sed -i 's|^#PubkeyAuthentication .*|PubkeyAuthentication yes|' /etc/ssh/sshd_config

sudo systemctl restart sshd


# install and configure firewall
sudo apt install -y ufw
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow "new_ssh_port"
sudo ufw allow 9100
sudo ufw allow 26656
sudo ufw allow 26657

# make sure you expose ALL necessary ports, only after that enable firewall
sudo ufw enable

# install fail2ban
sudo apt install -y fail2ban


# now you can logout (exit) and login again using ssh "new_username"@IP_ADDRESS


```
