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