Validator v0.2.1 Installation
How To Setup a Xandeum DevNet Validator
NOTE: This guide shows commands for text editors nano and vim. A quick search can find a guide or video to operate these text editors more efficiently and make your life easier.
NOTE: If you previously set up your validator on v0.1 or v0.2 then you don't need to complete these steps and can follow the Version Upgrade v0.2.1 instead!
1) Update and setup our user
Start with a fresh instance of Linux as the root user.
These instructions use Ubuntu Server 22.04.2LTS
BEFORE YOU CONTINUE!
Make sure you see your entire drive space as available! Use df -h to see your free space. You want to see that you have all your space in a free partition. Ubuntu will want to default to 100g LVM. The preferance is to eliminate LVM and Raid and use all available space for your / mount point. If you don't show all your disk space, run the Ubuntu installer again and pay attention to the storage section.
Get root user
Run as sudo or root user. If you don't have access to the root user, then you will need to prepend all your requests in this section with sudo.
Notice in the screenshot below I start as user xand change to root user then back to xand.
Root user has ALL the privledges and won't require sudo. But some items NEED to be ran as the xand user (ie rust install, validator build, etc)
Use sudo -i to change to root user and exit to end root user

Update your installation
sudo apt-get update -y &&
sudo apt-get upgrade -yInstall a few apps
sudo apt install -y bzip2 vnstatsudo systemctl enable --now vnstat
Create Xandeum Validator User Account
Skip creating a user if you already have it
sudo adduser xandEnter a password and accept defaults to the following questions:
New password: Retype new password: passwd: password updated successfully Changing the user information for xand Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
Add new user to sudo group
sudo usermod -aG sudo xandChange to the Xandeum User account
su xand
Switch the Xand home directory.
NOTE: If you log in as root and switch to xand it will bring you into the /root dir! So use cd ~ to get to home dir each time you log in!
cd ~Test switching between root user and xand user
Note: When you are root user, your line starts with root and when you are xand user the line starts with xand
sudo -iexit
2) Choose which release you want to install
Go to the Xandeum Binaries repo and download the tar.bz2 file to your server. This guide is using version v0.2.1 You can right-click on the file name to copy the download link. https://github.com/Xandeum/binaries/releases

cd ~
wget https://github.com/Xandeum/binaries/releases/download/v0.2.1/xand-v0.2.1.tar.bz2Create the needed bin folder (Do not create the active_release folder as before...this will be a symbolic link only)
mkdir ~/.local/share/xandeum/install/releases/v0.2.1/bin -pExtract the file into the new bin dir
cd ~
tar -xf xand-v0.2.1.tar.bz2 --directory ~/.local/share/xandeum/install/releases/v0.2.1/binTest a binary by running it in the local folder
cd ~/.local/share/xandeum/install/releases/v0.2.1/bin./xandeum-validator -V
Set our symlink, PATH, and some convenient aliases
Set a symlink from our new release to the active_release folder we will use in our $PATH later. (This command removes an old symlink to active_release if it exists)
Note the subtle difference in not using trailing /.... It will affect the $PATH
rm /home/xand/.local/share/xandeum/install/releases/active_release;
ln -sf /home/xand/.local/share/xandeum/install/releases/v0.2.1/bin /home/xand/.local/share/xandeum/install/releases/active_releaseBackup the old $PATH for reference.
echo $PATH >> ~/PATH.bakUsing your favorite editor to open the bashrc config:
vim ~/.bashrcAdd the following lines at the very bottom and save your changes and exit. (remove the old lines from the previous install)
export PATH="/home/xand/.local/share/xandeum/install/releases/active_release:$PATH"
alias l="ls -a --color=auto"
alias ll="ls -alh --color=auto"
alias xv="xandeum validators --sort skip-rate --reverse"
alias xg="xandeum gossip"
alias xe="xandeum epoch-info"
alias xb="xandeum balance"- Fully exit all shells and come back in. (exit or reboot)
Check your Install of the software
After logging back in as xand user, time to test if everything worked.
- Check Xandeum Software Version:
cd ~
xandeum -V- Results should appear simlar to the following

3) Configure your validator instance.
Please observe proper security of your private keys! MainNet Keys should be created on a secure machine, not an unknown remote machine.
Record your 12 words (and bip39 passphrase) in a safe spot. For DevNet it's not critical if you lose them...but if on MainNet, losing the keys equals LOST FUNDS. There is no recovering from lost keys.
- For MainNet, your withdraw authority key should never be on your machine!
Generate your 3 DevNet keys.
NOTE: If you already have created keys on this machine from the previous install, DON'T CREATE NEW ONES! Skip to Switch to Xandeum Cluster instead.
- You can leave the bip39 passphrase empty (only applies to DevNet/TesNet since it is not real money).
- Your 12 words and pubkey are shown immediatly after the prompt for bip39 passphrase.
- Take note of the public key it provides you (copy it down). It will help us help you should there be an issue.
Run as xand user!
cd ~xandeum-keygen new -o ~/validator-keypair.jsonxandeum-keygen new -o ~/vote-keypair.jsonxandeum-keygen new -o ~/withdraw-keypair.jsonTo view your public key later
xandeum-keygen pubkey ~/validator-keypair.jsonView your current configuration information
xandeum config getSwitch to Xandeum cluster
xandeum config set --url https://api.devnet.xandeum.com:8899Set your new keypair to be used by default.
xandeum config set --keypair ~/validator-keypair.jsonTesting our work so far.
- Check your connecrtion to the cluster
xandeum gossip- Request an airdrop from the Xand Faucet
xandeum airdrop 1 ~/validator-keypair.jsonDo this again 4 more times. (We are also giving you fake XNT {Xandeum Native Token} to get started.)
- There is a daily limit per wallet...These tokens on TestNet/DevNet are not real.
Check your wallet balance.
xandeum balanceYou should have ~5 tokens present if you do it 5x's.
Create your vote account.
- Submit a transaction on the blockchain setting up your vote account
xandeum create-vote-account --commission 8 ~/vote-keypair.json ~/validator-keypair.json ~/withdraw-keypair.jsonTo find your Vote Account Pubkey later, use:
xandeum-keygen pubkey ~/vote-keypair.json
4) Configure your Start Script Configuration
Create your validator configuration file using your editor
vim ~/validator-start.sh- There will be nothing in here, so copy and paste in the following configurations. Save and Exit.
#!/bin/bash
exec xandeum-validator \
--known-validator HhuygLTeS6grue95pKKzak2UPuQMXepWbvQv2ToQfbZN \
--known-validator 6vy4sYV6nTLJQ4tBcXUGgPTuGorVh2FJkm6ToVMFSfr2 \
--known-validator 3dZiYo933M7VftTSb7WudJV92cg69QwVYS1s753xRc59 \
--known-validator Hohkf7wGm4MzVNsPTzfudxZwR6MzR9nduPwwzAWE28oZ \
--entrypoint xand-1.devnet.xandeum.com:8000 \
--entrypoint xand-2.devnet.xandeum.com:8000 \
--entrypoint xand-4.devnet.xandeum.com:8000 \
--entrypoint xand-5.devnet.xandeum.com:8000 \
--expected-shred-version 60140 \
--expected-genesis-hash HmvXQCaYhBDtovKc5vFT5KzJA1Yy7QDPMngfSvtMohZX \
--snapshot-interval-slots 300 \
--full-snapshot-interval-slots 3000 \
--identity ~/validator-keypair.json \
--vote-account ~/vote-keypair.json \
--ledger ~/ledger/ \
--dynamic-port-range 8000-10000 \
--rpc-port 8899 \
--log ~/xand-validator.log \
--no-poh-speed-test \
--limit-ledger-size 10000000
Note: Every trailing \ is important! Any commented lines # must be at the bottom of the script. This is to save a command that may be needed later but not used now.
Note: Change the location of ledger in the script to your second drive if you aren't using raid0
Here are the known-validators:
xand-1 HhuygLTeS6grue95pKKzak2UPuQMXepWbvQv2ToQfbZN xand-2 6vy4sYV6nTLJQ4tBcXUGgPTuGorVh2FJkm6ToVMFSfr2 xand-4 3dZiYo933M7VftTSb7WudJV92cg69QwVYS1s753xRc59 xand-5 Hohkf7wGm4MzVNsPTzfudxZwR6MzR9nduPwwzAWE28oZ
Make the script you just made executable.
chmod +x ~/validator-start.sh
5) System Tuning
Run as root user, use sudo -i
Optimize sysctl knobs (copy block and paste into teminal, press return)
sudo bash -c "cat >/etc/sysctl.d/21-xandeum-validator.conf <<EOF
# Increase UDP buffer sizes
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
# Increase memory mapped files limit
vm.max_map_count = 1000000
# Increase number of allowed open file descriptors
fs.nr_open = 1000000
EOF"sudo sysctl -p /etc/sysctl.d/21-xandeum-validator.confOpen the file /etc/systemd/system.conf in your editor
sudo vim /etc/systemd/system.confAdd the following to the [Manager] section. Save and exit.
DefaultLimitNOFILE=1000000Reload the daemon
sudo systemctl daemon-reloadIncrease process file desriptor count limit. (copy block and paste into teminal, press return)
sudo bash -c "cat >/etc/security/limits.d/90-xandeum-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
EOF"This section is complete. Exit all shells or reboot to activate changes!
Continue on to Setup System Service