Solana Validator configuration
This documentation guide you on how to bootstrap a Solana Validator with our ansible playbook.
Requirements
ansible
git
Our Ansible playbooks
We choose ansible to automate the validator setup. You can find playbooks here.
It's good practice to read the source code before executing it.
Quick start
For simplicity, we execute our ansible directly on the validator node.
Install solana-boot
For Stock Solana mainnet-beta
Bootstrap mainnet-beta validator
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger
To see the complete list of args.
./scripts/init_validator.sh -h
For Stock Solana testnet
Bootstrap testnet validator
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
-c testnet
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
-c testnet
To see the complete list of args.
./scripts/init_validator.sh -h
For Jito Solana mainnet-beta
Bootstrap mainnet-beta validator with Amsterdam Block Engine
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://amsterdam.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://amsterdam.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 74.118.140.240:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://amsterdam.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://amsterdam.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 74.118.140.240:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
To see the complete list of args.
./scripts/init_validator.sh -h
Bootstrap mainnet-beta validator with Frankfurt Block Engine
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://frankfurt.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://frankfurt.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 145.40.93.84:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://frankfurt.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://frankfurt.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 145.40.93.84:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
To see the complete list of args.
./scripts/init_validator.sh -h
Bootstrap mainnet-beta validator with New York Block Engine
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://ny.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://ny.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 141.98.216.96:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://ny.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://ny.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 141.98.216.96:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
To see the complete list of args.
./scripts/init_validator.sh -h
Bootstrap mainnet-beta validator with Tokyo Block Engine
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://tokyo.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://tokyo.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 202.8.9.160:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://tokyo.mainnet.block-engine.jito.wtf \
--jito-relayer-url http://tokyo.mainnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 202.8.9.160:1002 \
--jito-tip-payment-program-pubkey T1pyyaTNZsKv2WcRAB8oVnk93mLJw2XzjtVYqCsaHqt \
--jito-distribution-program-pubkey 4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500
To see the complete list of args.
./scripts/init_validator.sh -h
For Jito Solana testnet
Bootstrap testnet validator with Dallas Block Engine
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://dallas.testnet.block-engine.jito.wtf \
--jito-relayer-url http://dallas.testnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 147.28.154.132:1002 \
--jito-tip-payment-program-pubkey DCN82qDxJAQuSqHhv2BJuAgi41SPeKZB5ioBCTMNDrCC \
--jito-distribution-program-pubkey F2Zu7QZiTYUhPd7u9ukRVwxh7B71oA3NMJcHuCHc29P2 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500 \
-c testnet
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://dallas.testnet.block-engine.jito.wtf \
--jito-relayer-url http://dallas.testnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 147.28.154.132:1002 \
--jito-tip-payment-program-pubkey DCN82qDxJAQuSqHhv2BJuAgi41SPeKZB5ioBCTMNDrCC \
--jito-distribution-program-pubkey F2Zu7QZiTYUhPd7u9ukRVwxh7B71oA3NMJcHuCHc29P2 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500 \
-c testnet
To see the complete list of args.
./scripts/init_validator.sh -h
Bootstrap testnet validator with New York Block Engine
The init_validator.sh script is a wrapper to install some ansible dependencies and pass args to the playbook.
Go to the solana-bootstrap directory
cd solana-boot
We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account False \
--swap-file-size-gb 256 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://nyc.testnet.block-engine.jito.wtf \
--jito-relayer-url http://nyc.testnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 136.144.58.40:1002 \
--jito-tip-payment-program-pubkey DCN82qDxJAQuSqHhv2BJuAgi41SPeKZB5ioBCTMNDrCC \
--jito-distribution-program-pubkey F2Zu7QZiTYUhPd7u9ukRVwxh7B71oA3NMJcHuCHc29P2 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500 \
-c testnet
For a validator with 512GB or more, we recommend putting accounts on ramdisk.
sudo ./scripts/init_validator.sh \
--use-ramdisk-for-account True \
--swap-file-size-gb 512 \
--ledger-path /mnt/solana_ledger/ledger \
--jito-enable True \
--jito-block-engine-url https://nyc.testnet.block-engine.jito.wtf \
--jito-relayer-url http://nyc.testnet.relayer.jito.wtf:8100 \
--jito-receiver-addr 136.144.58.40:1002 \
--jito-tip-payment-program-pubkey DCN82qDxJAQuSqHhv2BJuAgi41SPeKZB5ioBCTMNDrCC \
--jito-distribution-program-pubkey F2Zu7QZiTYUhPd7u9ukRVwxh7B71oA3NMJcHuCHc29P2 \
--jito-merkle-root-upload-authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib \
--jito-commission-bps 500 \
-c testnet
To see the complete list of args.
./scripts/init_validator.sh -h
Finally
Finish your setup
After the playbook succeeds, you will see some instructions on how manually finish your setup.
Where to copy your validator-keypair.json
Create a symlink to your validator-keypair.json for node-transition (zero-downtime).
Where to copy your vote-account-keypair.json
Build Jito Software with
build-jito.sh
or with official Jito documentation
Last updated