# Solana Validator configuration

## Our Ansible playbooks

We choose ansible to automate the validator setup. You can find playbooks here.

{% embed url="<https://github.com/manystake/solana-boot>" %}

{% hint style="info" %}
It's good practice to read the source code before executing it.
{% endhint %}

## Quick start

For simplicity, we execute our ansible directly on the validator node.

### Install solana-boot

<details>

<summary>Log in to your server</summary>

```
ssh ubuntu@<your ip>
```

</details>

<details>

<summary>Clone the clone repo</summary>

```bash
git clone https://github.com/manystake/solana-boot
```

</details>

### For Stock Solana mainnet-beta

<details>

<summary>Bootstrap mainnet-beta validator</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

### For Stock Solana testnet

<details>

<summary>Bootstrap testnet validator</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

### For Jito Solana mainnet-beta

<details>

<summary>Bootstrap mainnet-beta validator  with Amsterdam Block Engine</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

<details>

<summary>Bootstrap mainnet-beta validator  with Frankfurt Block Engine</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

<details>

<summary>Bootstrap mainnet-beta validator  with New York Block Engine</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

<details>

<summary>Bootstrap mainnet-beta validator  with Tokyo Block Engine</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

### For Jito Solana testnet

<details>

<summary>Bootstrap testnet validator  with Dallas Block Engine</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

<details>

<summary>Bootstrap testnet validator  with New York Block Engine</summary>

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

```bash
cd solana-bootstart
```

We recommend not putting accounts on ramdisk for a validator with 256GB or less of ram.&#x20;

```bash
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.

```bash
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
```

</details>

### Finally

<details>

<summary>Finish your setup</summary>

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

</details>
