Solana — самый требовательный блокчейн для самостоятельного запуска. Валидатору или полной RPC-ноде нужны очень быстрый процессор, много ОЗУ и быстрые диски NVMe, а требования постоянно меняются. В этом руководстве объясняется, что это значит на практике, чтобы вы могли решить, нужна ли вам собственная нода или хватит более скромной конфигурации.
Валидатор, RPC-нода или ни то, ни другое?
- Валидатор. Голосует за блоки и требует полной аппаратной спецификации, пополненного vote-аккаунта и постоянной доступности.
- RPC-нода. Обслуживает запросы приложений, ботов и индексаторов. Она не голосует, но ей всё равно нужно похожее оборудование, а при включении индексов аккаунтов — ещё больше ОЗУ.
- Лёгкое использование. Если вы отправляете лишь несколько транзакций или читаете немного данных, платная RPC-точка обычно дешевле, чем запуск ноды.
Перед покупкой проверьте официальные требования к валидатору Solana. Они опубликованы в документации Solana и Agave и меняются вместе с сетью. Ориентировочно для загруженной RPC-ноды ожидайте сотни ГБ ОЗУ и несколько быстрых дисков NVMe. Это территория выделенных серверов, а не небольшого VPS. Подобранные по размерам варианты перечислены на нашей странице хостинга нод Solana.
Шаг 1: подготовьте сервер
Используйте Ubuntu LTS и шаги из статьи как защитить новый VPS. Создайте отдельного пользователя и, если дисков NVMe больше одного, разместите ledger и accounts на разных дисках.
sudo adduser --disabled-password --gecos "" sol
sudo mkdir -p /mnt/ledger /mnt/accounts
sudo chown -R sol:sol /mnt/ledger /mnt/accounts
Шаг 2: увеличьте системные лимиты
Solana открывает много файлов и использует большие отображения памяти. Добавьте следующее в /etc/sysctl.d/21-solana.conf и в ваш unit-файл systemd:
vm.max_map_count=1000000
net.core.rmem_max=134217728
net.core.wmem_max=134217728
# in the systemd unit:
LimitNOFILE=1000000
Примените командой sudo sysctl --system.
Шаг 3: установите ПО валидатора
Установите текущий релиз Agave (клиент валидатора Solana) способом из официальной документации и проверьте его. Затем проверьте версию:
agave-validator --version
solana --version
Шаг 4: запустите RPC-ноду
Так обычно выглядит команда запуска для RPC-ноды, не участвующей в голосовании. Используйте известные валидаторы и точки входа из официальной документации для вашего кластера.
agave-validator \
--identity /home/sol/identity.json \
--ledger /mnt/ledger \
--accounts /mnt/accounts \
--entrypoint ENTRYPOINT:8001 \
--known-validator KNOWN_VALIDATOR_PUBKEY \
--only-known-rpc \
--rpc-port 8899 \
--private-rpc \
--no-voting \
--full-rpc-api \
--limit-ledger-size \
--log /var/log/solana/validator.log
Замените заполнители значениями из документации. --private-rpc не позволяет порту RPC анонсироваться в сети, но его всё равно нужно закрыть файрволом.
Шаг 5: наблюдайте, как нода догоняет сеть
solana catchup --our-localhost
solana-validator --ledger /mnt/ledger monitor
Догон по снапшоту занимает от нескольких минут до нескольких часов. Если нода отстаёт и не может нагнать, причина обычно в диске или сети.
Файрвол
Разрешите диапазон портов gossip и TPU, описанный в документации (по умолчанию от 8000 до 10000), и держите RPC (8899 и 8900) закрытым. Если вам нужно обслуживать RPC для других машин, поставьте перед ним обратный прокси с аутентификацией.