Validator 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.
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 solchange to root user then back to sol.
Root user has ALL the privledges and won't require sudo. But some items NEED to be ran as the sol 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 solEnter 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 solChange to the New User account
su sol
Switch the Xand home directory.
NOTE: If you log in as root and switch to sol 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 sol user the line starts with sol
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 v2.2.0-xandeum_c9b4b31d but check for newer releases. You can right-click on the file name to copy the download link. https://github.com/Xandeum/binaries/releases

Set the version and filename variables
ver="v2.2.0-xandeum_b5f66263"
file="v2.2.0-xandeum_b5f66263.tar.gz"
echo -e "\n"
echo version=$ver;
echo filename=$file
echo -e "\n"cd ~
wget https://github.com/Xandeum/binaries/releases/download/$ver/$fileCreate the needed bin folder
mkdir ~/.local/share/xandeum/install/releases/$ver -pExtract the file into the new bin dir
Add a directory for connection info
sudo mkdir -p /var/run/xandeum && chown sol:sol /var/run/xandeum && chmod 755 /var/run/xandeumTest a binary by running it in the local folder
cd ~/.local/share/xandeum/install/releases/$ver/bin./agave-validator -V
Remove downloaded file if binaries are working
rm ~/$fileSet 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)
rm /home/sol/.local/share/xandeum/install/releases/active_release
ln -sf /home/sol/.local/share/xandeum/install/releases/$ver/bin /home/sol/.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.
export PATH="/home/sol/.local/share/xandeum/install/releases/active_release:$PATH"
alias l="ls -a --color=auto"
alias ll="ls -alh --color=auto"
alias sv="solana validators --sort skip-rate --reverse"
alias sg="solana gossip"
alias se="solana epoch-info"
alias sb="solana balance"source ~/.bashrcCheck your Install of the software
As sol user, time to test if everything worked.
cd ~
agave-validator -V- Check Xandeum Software Version:
- Results should appear simlar to the following (check for correct version and src)

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 sol user!
cd ~Create your3 keys...note down all 3 keyphrases before you continue on.
solana-keygen new -o ~/validator-keypair.json
solana-keygen new -o ~/vote-keypair.json
solana-keygen new -o ~/withdraw-keypair.jsonTo view your public key later
solana-keygen pubkey ~/validator-keypair.jsonView your current configuration information
solana config getSwitch to Xandeum cluster
solana config set --url https://api.devnet.xandeum.com:8899Set your new keypair to be used by default.
solana config set --keypair ~/validator-keypair.jsonTesting our work so far.
- Check your connecrtion to the cluster
solana gossip- Request an airdrop from the Xand Faucet
solana airdrop 1 ~/validator-keypair.jsonDo this again 4 more times. (We are also giving you fake SOL tokens to get started.)
- There is a daily limit per wallet...These tokens on TestNet/DevNet are not real.
Check your wallet balance.
solana 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
solana create-vote-account --commission 0 ~/vote-keypair.json ~/validator-keypair.json ~/withdraw-keypair.jsonTo find your Vote Account Pubkey later, use:
solana-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 agave-validator \
--known-validator G6x4w89TJA9oDBSRNcpeanaThqBUJbEv5DJRBZGrQHYV \
--known-validator 5PW1SsXftQqKLF9FU88898BMG1vv3tqYRrVkGkFRwobs \
--known-validator 96wn2RrHFxXNMNJCN64qZCpBPCkHVTuKfWoeRTGrCdDy \
--known-validator DiEyTNni4uPwXaj9AX4pvFWvYFY5FKLEo3RRgN6Q22Lc \
--known-validator 9HKXdh8Veb278efwgPjsRkQtyJEGhyGP8vkbCSmp4HgR \
--entrypoint xand-5.devnet.xandeum.com:8000 \
--entrypoint xand-4.devnet.xandeum.com:8000 \
--entrypoint xand-3.devnet.xandeum.com:8000 \
--entrypoint xand-2.devnet.xandeum.com:8000 \
--entrypoint xand-1.devnet.xandeum.com:8000 \
--expected-shred-version 48698 \
--expected-genesis-hash 7BNTf1Z8KDUb3yCsNiVS5XH1CxfYG3HQP2VeHMVqP7AW \
--snapshot-interval-slots 500 \
--full-snapshot-interval-slots 10000 \
--identity ~/validator-keypair.json \
--vote-account ~/vote-keypair.json \
--ledger ~/ledger/ \
--dynamic-port-range 8000-10000 \
--rpc-port 8899 \
--log ~/validator.log \
--no-poh-speed-test \
--limit-ledger-size 30000000
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 9HKXdh8Veb278efwgPjsRkQtyJEGhyGP8vkbCSmp4HgR xand-2 DiEyTNni4uPwXaj9AX4pvFWvYFY5FKLEo3RRgN6Q22Lc
xand-3 96wn2RrHFxXNMNJCN64qZCpBPCkHVTuKfWoeRTGrCdDy xand-4 5PW1SsXftQqKLF9FU88898BMG1vv3tqYRrVkGkFRwobs xand-5 G6x4w89TJA9oDBSRNcpeanaThqBUJbEv5DJRBZGrQHYV
Make the script you just made executable.
chmod a+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-agave-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 = 2000000
# Increase number of allowed open file descriptors
fs.nr_open = 2000000
EOF"sudo sysctl -p /etc/sysctl.d/21-agave-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=2000000Reload 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-agave-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 2000000
EOF"This section is complete. Exit all shells or reboot to activate changes!
Continue on to Setup System Service