Rakurai Setup — Guide
Full installation guide for building and running a Rakurai-Solana validator node.
Audience: Validator operators setting up Rakurai for the first time or performing a full reinstall.
See also: Quickstart · Programs hub
1. Prerequisites
Ensure you have Rust, Cargo, and the Solana CLI installed before proceeding.
- Rust and Cargo: Installing Rust and Cargo
- Solana CLI: Solana CLI Installation
- Anchor: Installing Anchor (optional)
Additionally:
- Refer to the Solana Validator Setup Guide for Solana's official documentation.
2. Download and build Rakurai-Solana
2.1. Clone the Rakurai-Solana repository
Clone the latest Rakurai-Solana release with submodules:
git clone https://github.com/rakurai-io/rakurai-validator.git --recurse-submodules cd ./rakurai-validator git checkout <RELEASE_TAG>
Or, if you already have the repo cloned:
git fetch git checkout <RELEASE_TAG> # If you are on a previous branch where rakurai_scheduler was added as a submodule, # run the following command before updating submodules: git rm --cached core/src/banking_stage/rakurai_scheduler git submodule update --init --recursive
Export the Rakurai CLI path:
echo "export PATH=\"$(pwd)/rakurai_programs/release/downloads:\$PATH\"" >> ~/.bashrc && source ~/.bashrc
2.2. Create Rakurai Activation Account (RAA)
Use the CLI to initialize your validator's activation account. The following command returns a Pubkey (RAKURAI_ACTIVATION_ACCOUNT_PUBKEY), which is used in the next step.
Note:
- If you already created a Rakurai Activation Account, run
rakurai-activation -p <PROGRAM_ID> show -i <IDENTITY_PUBKEY> -umto get your<RAKURAI_ACTIVATION_ACCOUNT_PUBKEY>. - A Rakurai Activation Account (RAA) is uniquely tied to a validator identity. You must create a separate RAA for each validator and each cluster (e.g., testnet, mainnet-beta), since each cluster uses a different Rakurai Activation Program ID.
rakurai-activation -p <PROGRAM_ID> init \ --vote_pubkey <VOTE_PUBKEY> \ --keypair <IDENTITY_KEYPAIR> \ --url <RPC_URL>
Arguments:
--program-id <PROGRAM_ID>: Rakurai Activation Program ID.- Mainnet:
rAKACC6Qw8HYa87ntGPRbfYEMnK2D9JVLsmZaKPpMmi - Testnet:
pmQHMpnpA534JmxEdwY3ADfwDBFmy5my3CeutHM2QTt
- Mainnet:
--vote_pubkey <VOTE_PUBKEY>: Validator vote account public key.--keypair <IDENTITY_KEYPAIR>: Path to validator identity keypair file.
Optional argument:
--block_reward_commission_bps <VALUE>: Validator commission percentage on block rewards in basis points (100 bps = 1%). Default: 10000 bps.
For more details, refer to the latest release of the Rakurai Activation CLI and the Activation program guide.
2.3. Download Rakurai Scheduler Binary
Before running the scheduler, you must authenticate and download the correct binary for your OS and release version.
Note:
- A Rakurai Activation Account (RAA) is uniquely tied to a validator identity.
- The scheduler binary itself is NOT tied to a validator.
- You can reuse the same binary across multiple validators.
Always verify the version before downloading.
2.3.1. Sign the Rakurai Activation Account
Use your validator identity keypair to sign the activation account's public key:
solana sign-offchain-message <RAKURAI_ACTIVATION_ACCOUNT_PUBKEY> \ --keypair /path/to/validator-keypair.json
This command outputs a base58-encoded SIGNATURE. Use it in the next step to verify your request.
2.3.2. Get available versions
You must fetch the available scheduler versions and match your OS exactly (e.g., ubuntu_24.04):
curl -X GET https://api.rakurai.io/api/v1/scheduler/versions
Example response:
[ { "os": "ubuntu_24.04", "mainnet_and_testnet": ["v2.3.6-rakurai.0"], "testnet_only": [] } ]
2.3.3. Download the scheduler binary
Using the signature from step 2.3.1 and the version from step 2.3.2, download the binary:
curl -o rakurai-scheduler.tar.gz https://api.rakurai.io/api/v1/downloads/scheduler \ -H "Content-Type: application/json" \ -d '{ "activation_account": "<RAKURAI_ACTIVATION_ACCOUNT_PUBKEY>", "signature": "<SIGNATURE>", "version": "<VERSION>", "os": "<OS_VERSION>" }' \ --fail-with-body || cat rakurai-scheduler.tar.gz
Note: Ensure you:
- Match
versionexactly from the/scheduler/versionsAPI. - Use the correct OS key (
ubuntu_24.04,ubuntu_22.04, etc.). - Replace
activation_accountandsignaturewith valid values.
After download, verify the binary with Binary attestation.
3. Build the client
In the root folder of the repository, run:
# Extract the Rakurai scheduler library mkdir -p ./target/release/ tar -xvzf ./rakurai-scheduler.tar.gz # It will extract into a folder where binaries for different OS versions are present. # Copy the version according to your OS version: cp librak*.so ./target/release/ # Build the client cargo build --release --features build_validator # Export the scheduler binary path export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path_to_rakurai-validator>/target/release
Note: If you use a custom launch script like validator.sh, export the scheduler binary path within it.
4. Add additional CLI args
Modify your validator startup script by appending the following arguments.
4.1. Mainnet arguments
--rewards-merkle-root-authority H21wFgN53ghjDq5N9QhraAiPn1tRVYkobySj55unXLEj \ --rakurai-activation-program-id rAKACC6Qw8HYa87ntGPRbfYEMnK2D9JVLsmZaKPpMmi \ --reward-distribution-program-id RAkd1EJg45QQHeuXy7JEWBhdNvsd64Z5PbZJWQT96iB
4.2. Testnet arguments
--rewards-merkle-root-authority H21wFgN53ghjDq5N9QhraAiPn1tRVYkobySj55unXLEj \ --rakurai-activation-program-id pmQHMpnpA534JmxEdwY3ADfwDBFmy5my3CeutHM2QTt \ --reward-distribution-program-id A37zgM34Q43gKAxBWQ9zSbQRRhjPqGK8jM49H7aWqNVB
4.3. Optional slot adjustment
An optional argument adjusts block times within protocol limits. The default value is 10 (390 ms block times). You can set it to a maximum of 50 (350 ms):
--target-slot-adjustment-ms <TARGET_SLOT_ADJUSTMENT_MS>
Reference:
Note:
- If you set
--rewards-merkle-root-authoritytoH21wFgN53ghjDq5N9QhraAiPn1tRVYkobySj55unXLEj, Rakurai automatically distributes rewards to your stakers using the reward distribution program. - If you set it to any other address, you must run the claim workflow manually.