NG
Solana

Solana

Setup Guide

1. Create solana folder

mkdir /root/solana
cd /root/solana

2. Install Solana

sh -c "$(curl -sSfL https://release.solana.com/v1.9.12/install)"
export PATH="/root/.local/share/solana/install/active_release/bin:$PATH" 
solana config set --url https://api.testnet.solana.com

If you already have a registered solana key, (validator-keypair.json), then copy it to /root/solana via ftp
and skip steps 3 and 4

3. Generate key (please save output of the next command in a safe place)

solana-keygen new -o ./validator-keypair.json

Solana-0

4. Registration

Go to https://solana.com/validators/#signup and perform registration with generated pubkey. Wait for registration confirmation email from Solana.

5. Installation

Let’s continue installation

solana config set --keypair /root/solana/validator-keypair.json 
sudo bash -c "cat >/etc/sysctl.d/20-solana-udp-buffers.conf <<EOF 
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
EOF"
sudo sysctl -p /etc/sysctl.d/20-solana-udp-buffers.conf
sudo bash -c "cat >/etc/sysctl.d/20-solana-mmaps.conf <<EOF
vm.max_map_count = 1000000
EOF"
sudo sysctl -p /etc/sysctl.d/20-solana-mmaps.conf
sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
* - nofile 1000000 
EOF"

Then close your SSH session and enter again.

6. Account

Let’s check our balance (should be 500 SOL):

solana balance

Solana-1

Create Vote account (please save output of the next command in a safe place):

solana-keygen new -o /root/solana/vote-account-keypair.json

Link created Vote account with our key:

solana create-vote-account /root/solana/vote-account-keypair.json /root/solana/validator-keypair.json 

Log rotate setup

cat > logrotate.sol <<EOF
/root/solana/solana.log {
rotate 7
daily
missingok
postrotate
systemctl kill -s USR1 solana.service
endscript
}
EOF
cp logrotate.sol /etc/logrotate.d/sol
systemctl restart logrotate.service

7. Set-up

Create system service file:

bash -c "cat >~/solana/solana.service<<EOF
[Unit]
Description=Solana TdS node
After=network.target syslog.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
LimitNOFILE=1024000
Environment="SOLANA_METRICS_CONFIG=host=https://metrics.solana.com:8086,db=tds,u=testnet_write,p=c4fa841aa918bf8274e3e2a44d77568d9861b3ea"
Environment="RUST_LOG=warn,solana_metrics=error"
ExecStart=/root/.local/share/solana/install/active_release/bin/solana-validator \
--identity /root/solana/validator-keypair.json \
--vote-account /root/solana/vote-account-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
--known-validator eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ \
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
--only-known-rpc \
--ledger /root/solana/ledger \
--limit-ledger-size 50000000 \
--log /root/solana/solana.log \
--rpc-bind-address 127.0.0.1 \
--rpc-port 8899 \
--private-rpc \
--dynamic-port-range 8000-8020 \
--entrypoint entrypoint.testnet.solana.com:8001 \
--entrypoint entrypoint2.testnet.solana.com:8001 \
--entrypoint entrypoint3.testnet.solana.com:8001 \
--expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
--wal-recovery-mode skip_any_corrupted_record \
--snapshot-interval-slots 1000 \
--full-rpc-api \
--incremental-snapshots
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
EOF" 
cp /root/solana/solana.service /etc/systemd/system

*Sometimes it’s required to replace

--entrypoint entrypoint.testnet.solana.com:8001

by

--entrypoint testnet.solana.com:8001

due to DNS issues

Update system configuration and add enable solana service automatic start on boot:

systemctl daemon-reload 
systemctl enable solana

Start our service:

systemctl start solana.service

8. Verify

Check service status – should be active (running):

systemctl status solana.service

Solana-2

Wait for node synchronization (usually 15-30 minutes) and check if it appears in validators list (pubkey value should be taken from step 3):

solana validators | grep Fx7dVi2oVpynBKzU2V7nRDbdfBjWrqqjLFxULXCVp2TB

Solana-3

Also it’s possible to check our node using validators.app:

  1. Select “testnet”
  2. Paste our pubkey
  3. Click “search”

Solana-4

9. Update

Install update:

solana-install init v1.9.5
systemctl restart solana

Check status and version:

systemctl status solana
solana --version

10. Useful commands

Check node synchronization status

cd /root/solana
solana catchup validator-keypair.json --our-localhost
Stuck? Ask!

By continuing to use our website, you consent to our use of cookies in accordance with our cookie policy