# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://solana-boot.manystake.com/solana-validator-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
