November 11

Solana Node Guide Testnet | Гайд по ноде Соланы

Требования:

Гайд для прохождения SFDP программы, почитать о ней можно тут
Я беру сервера на edgevana

Подготовка сервера:

sudo su

cd

sudo apt update && sudo apt upgrade
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#отвечаем 1

. "$HOME/.cargo/env"

Mount диска:

sudo mkfs.ext4 /dev/nvme0n1

sudo mkdir -p /mnt/ledger

sudo chown -R root.root /mnt/ledger

sudo mount /dev/nvme0n1 /mnt/ledger/
echo -e "\\n/dev/nvme0n1 /mnt/ledger ext4 defaults 0 3" | sudo tee -a /etc/fstab

Установка ноды

Начнем с генерации ключей:

sh -c "$(curl -sSfL https://release.solana.com/v1.18.18/install)"

export PATH="/root/.local/share/solana/install/active_release/bin:$PATH"

solana --version
#должна отдавать версию

solana-keygen new -o $HOME/validator-keypair.json
#сохраните данные, а также файл /root/validator-keypair.json

solana-keygen new -o $HOME/vote-account-keypair.json
#сохраните данные, а также файл

solana-keygen new -o $HOME/withdrawer-account-keypair.json
#сохраните данные, а также файл

System Tuning

копируем одной командой

sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
# Increase UDP buffer sizes
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728

# Increase memory mapped files limit
vm.max_map_count = 1000000

# Increase number of allowed open file descriptors
fs.nr_open = 1000000
EOF"
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf

sudo systemctl daemon-reload
sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1040000
EOF"
timedatectl

solana config set --url https://api.testnet.solana.com

solana config set --keypair $HOME/validator-keypair.json

solana airdrop 1
#кран, если пишет недостаточно средств - он пуст, используйте альтернативные краны
Какой адрес пополнять из альтернативного крана? тот, что мы создавали первый (validator-keypair.json), его пабкей - это и есть ваш адрес
solana create-vote-account ~/vote-account-keypair.json ~/validator-keypair.json ~/withdrawer-account-keypair.json

Создаем сервисный файл:

sudo tee /root/sol.service > /dev/null <<EOF
[Unit]
Description=Solana node
After=network.target syslog.target
StartLimitIntervalSec=0
[Service]
User=root
Type=simple
Restart=always
RestartSec=1
LimitNOFILE=1040000
Environment=SOLANA_METRICS_CONFIG=host=https://metrics.solana.com:8086,db=tds,u=testnet_write,p=c4fa841aa918bf8274e3e2a44d77568d9861b3ea
ExecStart=/root/.local/share/solana/install/active_release/bin/agave-validator \
--entrypoint entrypoint.testnet.solana.com:8001 \
--entrypoint entrypoint2.testnet.solana.com:8001 \
--entrypoint entrypoint3.testnet.solana.com:8001 \
--entrypoint entrypoint.testnet.solana.sergo.dev:8001 \
--wal-recovery-mode skip_any_corrupted_record \
--identity /root/validator-keypair.json \
--vote-account /root/vote-account-keypair.json \
--ledger /root/ledger \
--limit-ledger-size 50000000 \
--dynamic-port-range 8000-8020 \
--log /root/sol.log \
--snapshot-interval-slots 500 \
--maximum-local-snapshot-age 1000 \
--no-port-check \
--rpc-bind-address 127.0.0.1 \
--rpc-port 8899 \
--full-rpc-api
ExecReload=/bin/kill -s HUP 
ExecStop=/bin/kill -s QUIT 
[Install]
WantedBy=multi-user.target
EOF
sudo ln -s /root/sol.service /etc/systemd/system
sh -c "$(curl -sSfL https://release.anza.xyz/v2.1.1/install)"

Если актуальная версия выше, то выполните после этого:

agave-install init v2.х.хх
#заменив х хх на необходимую версию

Перезапускаем сервисный файл:

sudo systemctl daemon-reload
sudo systemctl enable sol.service
sudo systemctl start sol.service

Проверка логов:

tail sol.log

Ошибки:

Failed to start validator: "Failed to open Blockstore: UnableToSetOpenFileDescriptorLimit"

Решение:

cat /proc/sys/fs/nr_open
sudo sysctl -w fs.nr_open=1040000
echo "fs.nr_open=1040000" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
cat /proc/sys/fs/file-max
sudo sysctl -w fs.file-max=1040000
echo "fs.file-max=1040000" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo nano /etc/security/limits.conf
add - root soft nofile 1040000
add - root hard nofile 1040000
sudo nano /etc/pam.d/common-session
add - session required pam_limits.so
sudo nano /etc/pam.d/common-session-noninteractive
add - session required pam_limits.so
sudo systemctl daemon-reload
sudo reboot

Спасибо за внимание! И поздравляю с новой нодой!
@kulikovae

Мой ютуб ТУТ