Skip to content

Server Setup Guide

This guide is aimed at people not familiar with Linux servers or hosting services.

Running a delegate node does require some technical knowledge, but this guide walks step-by-step through preparing a secure server.

If you get stuck, the community can help you.


Prerequisites

Generate an SSH Key

We strongly recommend using SSH key authentication.

Windows

Use PuTTYgen to create a key pair.

Linux / macOS

ssh-keygen -t rsa -b 4096

This creates:

  • ~/.ssh/id_rsa (private key)
  • ~/.ssh/id_rsa.pub (public key)

Server Requirements

Delegate nodes should be run on a VPS or dedicated server in a data center. Home PCs and residential connections often have higher latency, lower uptime, and bandwidth limits, which can reduce reliability and block production. A server-grade environment helps ensure stable participation in the network.

Requirement Minimum Recommended
OS Ubuntu 22.04 Ubuntu 24.04 LTS
CPU 4 cores 8+ cores
RAM 8 GB 32 GB
Storage 100 GB 1 TB
Bandwidth 100 Mbps 500 Mbps

Info

Estimated blockchain and decentralized database growth is approximately 9 GB per year.

Warning

Minimum requirements are sufficient only at launch. Additional features may require future hardware upgrades.

Choose a Server Provider

Any provider works:

  • Hostinger
  • OVH
  • AWS
  • DigitalOcean
  • Google Cloud

Choose what you're comfortable with.


Install Linux

Install Ubuntu 24.04 LTS from your provider dashboard.

Once installed, note your server IP.


Connect to Your Server

First Login

ssh root@SERVER_IP

Enter the password provided by your host.


Add Your SSH Key

On the server (some providers let you add the key when creating the server):

nano ~/.ssh/authorized_keys

Paste your public key inside.

Set permissions:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

Restart SSH:

systemctl restart ssh

Now login using key:

ssh -i ~/.ssh/id_rsa root@SERVER_IP

Create a Delegate User

Running everything as root is discouraged.

adduser xcash
usermod -aG sudo xcash
su - xcash

Update System

sudo apt update
sudo apt upgrade -y
sudo apt install curl git build-essential -y

Time Sync (Important)

timedatectl

If not synced:

sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd

Optional: Disable Root Login

Once SSH keys work:

sudo nano /etc/ssh/sshd_config

Set:

PermitRootLogin no
PasswordAuthentication no

Restart SSH:

sudo systemctl restart ssh

Optional: Domain Name

Buy a domain and point an A record:

delegate.yourdomain.com → SERVER_IP

Recommended for public delegates.


Final Checklist

  • SSH key login works
  • Logged in as xcash
  • System updated
  • Time synced