Setup Guides
...
Validator Home
Install Validator Software
how to setup a xandeum devnet validator (build from source) 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\) installation of the needed binaries start with a fresh instance of linux as the root user these instructions use ubuntu server 24 04lts https //ubuntu com/download/server 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 sol change 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 cli sudo apt get update y && sudo apt get upgrade y install prerequestite packages cli sudo apt y install sudo curl git build essential pkg config libssl dev libudev dev zlib1g dev llvm clang cmake make libprotobuf dev protobuf compiler tmux vnstat press ok to restart services if prompted enable vnstat to monitor your bandwidth usage on your machine cli sudo systemctl enable now vnstat note research vnstat to find many different ways to view information on your bandwidth usage create xandeum validator account cli sudo adduser sol enter 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 cli sudo usermod ag sudo sol change to the sol user account cli su sol switch the sol home directory cli cd install rust, cargo, and restmft run as sol user without sudo privledges cli curl https //sh rustup rs ssf | sh take care to select option #1 when prompted to dont forget to set the source for cargo cli source $home/ cargo/env add rustfm cli rustup component add rustfmt cli rustup update set to compile using native cpu flags cli export rustflags=" o c target cpu=native" special note if you run into issues w/ rust compiling, or if you receive illegal instruction errors upon starting your validator (usually only if running on a hypervisor), replace the export command with the export below this will generally impact antsle owners (and some other virtualization software/hardware) where cpus will show up as westmere e56xx/l56xx/x56xx (nehalem c) also if your cpu doesn't support avx2 instruction set you may need this additional rust flag check if your cpu supports avx2 using this command lscpu | grep color=always i avx2 and avx2 should show up in red if its supported may serverly limit efficiency of the binaries only use if on a system without avx2 export rust reed solomon erasure arch=native clone the xandeum validator repo cli cd git clone https //github com/xandeum/xandeum agave git cd into new repo dir cli cd xandeum agave choose which release you want to compile cli git checkout v2 2 0 munich build (compile) the validator software cli /cargo build release error toolchain can be ignored, missing toolchains will be installed to use less processor, try adding jobs limit with j 2 this process is going to take some time get a beverage, walk the dog, take the kids to the pool 10 40 minutes typical depending on cpu 2\) after build completes run as sol user in home dir (use cd ) create directories and parent folders p for the validator files cli mkdir $home/data/compiled/x2 2 0 munich/bin/ p move the newly created binary (application files) to the appropriate release folder cli cd /xandeum agave/target/release cli rsync aha / $home/data/compiled/x2 2 0 munich/bin/ create symlinks (shortcuts) to the directories this will allow us to change the version that is loaded by creating a symlink to a newer set of binaries cli ln sf $home/data/compiled/x2 2 0 munich/bin $home/data/compiled/active release verify the symlonk was created properly cli ls la $home/data/compiled/ backup the old $path for reference cli echo $path >> /path bak using your favorite editor to open the bashrc config nano nano / bashrc vim vim / bashrc add the following lines at the very bottom and save your changes and exit text export path="$home/data/compiled/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" fully exit all shells and come back in fully exit all shells and come back in (logout / login to server) check your install of the software after logging back in as sol user, time to test if everything worked check solana version cli cd solana v more accutatly, check the version of agave validator client agave validator v results should appear simlar to the following if you are working on a virtual machine, now would be the ideal time to take a snapshot & backup your work just in case you have any issues beyond this point it is also advisable for bare metal too 3\) configure your validator instance please observe proper security of your private keys! 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 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! cli mkdir /keys/ cd /keys cli solana keygen new o /keys/validator keypair json solana keygen new o /keys/vote keypair json solana keygen new o /keys/withdraw keypair json solana keygen pubkey /keys/validator keypair json to view your public key later cli solana keygen pubkey /keys/validator keypair json view your current configuration information cli solana config get switch to xandeum cluster cli solana config set url https //api devnet xandeum com 8899 set your new keypair to be used by default cli solana config set keypair /validator keypair json testing our work so far check your connecrtion to the cluster solana gossip request an airdrop from the xand faucet cli solana airdrop 1 /validator keypair json do this again 4 more times (we are also giving you fake xand/sol to get started ) there is a daily limit per wallet these tokens on testnet/devnet are not real check your wallet balance cli solana balance you 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 cli solana create vote account /vote keypair json /validator keypair json /withdraw keypair json to find your vote account pubkey later, use cli solana keygen pubkey /vote keypair json 4\) configure your start script configuration create your validator configuration file using your editor nano nano /validator start sh vim vim /validator start sh there will be nothing in here, so copy and paste in the following configurations save and exit text #!/bin/bash exec solana validator \\ \ known validator hhuygltes6grue95pkkzak2upuqmxepwbvqv2toqfbzn \\ \ known validator 6vy4syv6ntljq4tbcxuggptugorvh2fjkm6tovmfsfr2 \\ \ known validator cyqcxrcrsng2xuim42tp6butbwzzedmtnawhbg5hsloo \\ \ known validator 3dziyo933m7vfttsb7wudjv92cg69qwvys1s753xrc59 \\ \ known validator 2x8dqyb88vac5yznkvzz6jxogwzsehjbfnz7uhbqms1i \\ \ known validator 2ww2dycyegurwxc44funmmdp7ttyu38jfvuukrzyylmw \\ \ entrypoint xand 1 devnet xandeum com 8000 \\ \ entrypoint xand 2 devnet xandeum com 8000 \\ \ entrypoint xand 3 devnet xandeum com 8000 \\ \ entrypoint xand 4 devnet xandeum com 8000 \\ \ expected shred version 46090 \\ \ expected genesis hash 9mjobeegzjh9kjqnzmcrdupnfuwjtanbeegpwgagy4vl \\ \ 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 \\ \ limit ledger size 50000000 \\ \# expected bank hash 3uqbgcnj3s5jfgkva1jhqyxypv6anm4padbzdmcky3ht \\ \# wait for supermajority 610426 \\ \# no snapshot fetch \\ \# no genesis fetch \\ 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 xand1 known validator hhuygltes6grue95pkkzak2upuqmxepwbvqv2toqfbzn \ xand2 known validator 6vy4syv6ntljq4tbcxuggptugorvh2fjkm6tovmfsfr2 \ xand3 known validator cyqcxrcrsng2xuim42tp6butbwzzedmtnawhbg5hsloo \ xand4 known validator 3dziyo933m7vfttsb7wudjv92cg69qwvys1s753xrc59 \ t3chie known validator 2x8dqyb88vac5yznkvzz6jxogwzsehjbfnz7uhbqms1i \ bernie known validator 2ww2dycyegurwxc44funmmdp7ttyu38jfvuukrzyylmw \\ make the script you just made executable cli 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) cli sudo bash c "cat >/etc/sysctl d/21 solana 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" cli sudo sysctl p /etc/sysctl d/21 solana validator conf open the file /etc/systemd/system conf in your editor nano sudo nano /etc/systemd/system conf vim sudo vim /etc/systemd/system conf add the following to the \[manager] section save and exit cli defaultlimitnofile=1000000 reload the daemon cli sudo systemctl daemon reload increase process file desriptor count limit (copy block and paste into teminal, press return) cli sudo bash c "cat >/etc/security/limits d/90 solana 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 docid\ kfv3d5prtdndrjbocbbmb