Создание Native Rocket Pool ноды без Docker

ПРИМЕЧАНИЕ

Это руководство предназначено для Smartnode v1.6.5 и выше.

Если вы используете более раннюю версию, вы должны обновиться до v1.6.5 или выше перед настройкой Native режима.

В этом разделе мы пройдем через процесс установки стека Rocket Pool Smartnode нативно в вашу систему, без использования Docker контейнеров.

Общий план следующий:

  1. Создать стандартную настройку solo-стейкинга с сервисами systemd для Execution клиента, Consensus клиента / Beacon ноды и Validator клиента
  2. Создать системные сервисы для компонентов Rocket Pool (процессы node и watchtower)
  3. Настроить Rocket Pool для взаимодействия с вашими клиентскими сервисами
  4. Обновить определение сервиса Validator клиента для использования получателя комиссий Rocket Pool и ключей валидаторов

Это довольно сложная настройка, поэтому потребуется некоторое время для завершения.

Разнообразие операционных систем и дистрибутивов делает непрактичным создание руководств для всех из них. Инструкции в этом руководстве адаптированы для системы на базе Debian (включая Ubuntu). Для других дистрибутивов или операционных систем вы можете следовать высокоуровневым шагам, описанным в руководстве, но вам придется заменить определенные команды на те, которые использует ваша система.

Danger

Это руководство предназначено для пользователей, имеющих опыт администрирования и использования Linux систем. Это включает использование терминала, создание системных учетных записей, управление правами доступа и установку сервисов. Мы предполагаем, что вы знакомы с этими действиями - поскольку вы будете управлять большей частью инфраструктуры самостоятельно, мы предоставляем только ограниченную поддержку для Native установок. Если вы не знакомы с этими действиями, мы не рекомендуем использовать Native режим.

Шаг 1: Настройка Execution и Consensus клиентов

Native режим по сути расширяет стандартную настройку solo-стейкинга и просто позволяет программному обеспечению Smartnode подключаться к клиентам, которые оно уже запускает (с несколькими небольшими изменениями).

Поэтому мы рекомендуем начать со следования некоторым традиционным руководствам по solo стейкингу, предоставленным сообществом:

Обратите внимание, что вы фактически не будете создавать валидатор, как определено в этих руководствах - Rocket Pool сделает это за вас. Вы можете игнорировать части, касающиеся инструмента Staking Deposit CLI.

Вам просто нужно следовать руководствам до момента, когда у вас будут установлены и синхронизированы с цепью сервис Execution клиента, сервис Consensus клиента / Beacon ноды и сервис Validator клиента. Пропустите шаги, связанные с финансированием валидатора и записью его мнемоники.

Также есть особый случай для получателя комиссий - когда вы дойдете до части руководства, где указывается получатель комиссий в конфигурации вашего Validator клиента, оставьте это пустым пока. Мы опишем, как настроить это для валидаторов Rocket Pool ниже.

После установки клиентов и когда вы увидите в их логах, что они корректно синхронизируют цепи, вы можете следовать следующим шагам для настройки Rocket Pool Smartnode и подключения его к вашим клиентам.

Шаг 2: Установка Rocket Pool

Создание сервисной учетной записи

Первый шаг - создать новую системную учетную запись для сервисов Rocket Pool и отключить вход и доступ к оболочке для нее:

sudo useradd -r -s /sbin/nologin rp

Теперь добавьте себя в группу rp. Вам нужно это сделать, чтобы использовать Rocket Pool CLI, потому что и CLI, и демон Rocket Pool должны иметь доступ к файлу кошелька Execution слоя.

sudo usermod -aG rp $USER

Наконец, добавьте учетную запись пользователя для вашего Validator клиента в группу rp также. Имя этой учетной записи зависит от того, какое руководство вы использовали для настройки вашего VC сервиса.

Например, если ваш VC работает как пользователь lighthousevalidator, вы должны выполнить следующее:

sudo usermod -aG rp lighthousevalidator

После этого выйдите и войдите снова, чтобы изменения вступили в силу.

Настройка бинарных файлов

Начните с создания папки для Rocket Pool и подпапки данных. Вы можете разместить это где угодно; для этого руководства я размещу это в /srv:

sudo mkdir -p /srv/rocketpool

sudo chown $USER:$USER /srv/rocketpool

Теперь загрузите бинарные файлы CLI и демона (или игнорируйте это и соберите их из исходников, если предпочитаете). Выберите платформу, которую использует ваша система, из вкладок ниже.

Linux x64
Linux arm64
macOS x64
macOS arm64
sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-cli-linux-amd64 -O /usr/local/bin/rocketpool

sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-daemon-linux-amd64 -O /usr/local/bin/rocketpoold

sudo chmod +x /usr/local/bin/rocketpool

Теперь установите владельца и группу демона на rp:

sudo chown rp:rp /usr/local/bin/rocketpoold

Наконец, установите бит suid и другие биты прав доступа на бинарном файле демона:

sudo chmod u+sx,g+sx,o-rwx /usr/local/bin/rocketpoold

Это гарантирует, что демон всегда запускается как пользователь rp, поэтому у него всегда установлены правильные разрешения.

ПРИМЕЧАНИЕ

Smartnode, скорее всего, не сработает с ошибками прав доступа, если вы не сделаете это. Пожалуйста, убедитесь, что выполнили эту команду!

Настройка папки установки

После установки CLI и демона вам нужно будет настроить структуру папок и сопутствующие файлы, которые Smartnode ожидает найти. Начните с создания следующих папок:

mkdir -p /srv/rocketpool/data/validators && sudo chmod 775 /srv/rocketpool/data/validators

mkdir /srv/rocketpool/data/rewards-trees

mkdir /srv/rocketpool/data/custom-keys

sudo chown -R rp:rp /srv/rocketpool/data

Далее загрузите следующие скрипты - Rocket Pool будет использовать их, когда потребуется остановить или перезапустить ваш Validator клиент для изменения получателя комиссий (обсуждается позже) или загрузки новых ключей после создания нового minipool:

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/restart-vc.sh -O /srv/rocketpool/restart-vc.sh

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/stop-validator.sh -O /srv/rocketpool/stop-validator.sh

chmod +x /srv/rocketpool/restart-vc.sh

chmod +x /srv/rocketpool/stop-validator.sh

Теперь откройте ~/.profile в вашем редакторе и добавьте эту строку в конец:

alias rp="rocketpool -d /usr/local/bin/rocketpoold -c /srv/rocketpool"

Сохраните, затем перезагрузите ваш профиль:

source ~/.profile

Это позволит вам взаимодействовать с CLI Rocket Pool с помощью команды rp, что является удобным сокращением.

Создание сервисов

Далее мы создадим сервис systemd для демона ноды Rocket Pool. Это сервис, который будет автоматически проверять и запрашивать RPL вознаграждения после каждой контрольной точки, и ставить minipools после их создания через node deposit.

Мы также создадим сервис watchtower. Он будет использоваться, если вы член Oracle DAO, или если вы когда-либо захотите генерировать собственные деревья интервалов вознаграждений (обсуждается в разделе Получение вознаграждений позже).

Node
Watchtower

Создайте сервис rp-node:

sudo nano /etc/systemd/system/rp-node.service

Содержимое:

[Unit]
Description=rp-node
After=network.target

[Service]
Type=simple
User=rp
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/rocketpoold --settings /srv/rocketpool/user-settings.yml node

[Install]
WantedBy=multi-user.target

Создайте файл журнала для сервиса, чтобы вы могли просматривать его вывод - это заменит поведение rocketpool service logs node:

nano /srv/rocketpool/node-log.sh

Содержимое:

#!/bin/bash
journalctl -u rp-node -b -f

Сохраните, затем сделайте его исполняемым:

chmod +x /srv/rocketpool/node-log.sh

Теперь вы можете просматривать логи ноды, просто выполнив:

sudo /srv/rocketpool/node-log.sh

Сервисы теперь установлены.

Настройка доступа к скриптам без пароля

Следующий шаг - предоставить пользователю rp возможность перезапускать Validator клиент при создании новых ключей валидатора и останавливать Validator клиент при обнаружении аварийного состояния.

Создайте новый файл sudoers используя visudo:

sudo visudo -f /etc/sudoers.d/rocketpool

Добавьте следующие строки:

Cmnd_Alias RP_RESTART = /usr/bin/systemctl restart <validator service name>
Cmnd_Alias RP_STOP = /usr/bin/systemctl stop <validator service name>
rp    ALL=(ALL) NOPASSWD: RP_RESTART, RP_STOP

Где <validator service name> - это имя вашего VC сервиса (например, lighthousevalidator)

Теперь измените /srv/rocketpool/restart-vc.sh:

  • Раскомментируйте строку в конце и измените ее на sudo systemctl restart <validator service name>

Также измените /srv/rocketpool/stop-validator.sh:

  • Раскомментируйте строку в конце и измените ее на sudo systemctl stop <validator service name>

Готово! Процесс node теперь может автоматически перезапускать или останавливать ваш VC по необходимости.

Шаг 3: Настройка Smartnode

Теперь, когда все ваши сервисы созданы, пришло время настроить стек Smartnode.

Пожалуйста, посетите руководство Настройка стека Smartnode (Native режим) и вернитесь сюда, когда закончите.

Включение и запуск сервисов

После установки всех сервисов пришло время:

  • Включить их, чтобы они автоматически перезапускались при сбое и автоматически запускались при перезагрузке
  • Запустить их все
sudo systemctl daemon-reload

sudo systemctl enable rp-node rp-watchtower

sudo systemctl start rp-node rp-watchtower

Настройка кошелька

Далее создайте новый кошелек ноды или восстановите существующий кошелек. Пожалуйста, внимательно следуйте инструкциям в разделе Настройка кошелька руководства, затем вернитесь сюда, когда закончите.

После этого используйте скрипты файлов журналов сервисов, чтобы убедиться, что они успешно загрузили ваш новый кошелек. Вы также должны проверить это с помощью следующей команды:

rp wallet status

Если работает правильно, должен быть следующий вывод:

Your Smartnode is currently using the Hoodi Test Network.

The node wallet is initialized.
Node account: <address>

Шаг 4: Обновление определения VC сервиса

В отличие от настройки solo стейкинга, Rocket Pool генерирует и управляет ключами валидаторов автоматически. Есть несколько корректировок, которые вам нужно будет внести в файл определения сервиса VC, который вы только что создали, чтобы он правильно работал с Rocket Pool, включая:

  • Получатель комиссий
  • Каталог данных или кошелька VC
  • Каталоги ключей и секретов VC

Мы рассмотрим это пошагово для каждого клиента.

Настройка файла получателя комиссий

ПРИМЕЧАНИЕ

Это критически важно, чтобы вы выполнили эти шаги - невыполнение этого и использование неправильного получателя комиссий приведет к применению штрафов к вашим валидаторам и вычетам из вашего баланса Beacon Chain!

Получатель комиссий - это аргумент, который вы предоставляете вашему Validator клиенту, который указывает адрес на слое Execution, на который вы хотите, чтобы ваши приоритетные комиссии и MEV вознаграждения отправлялись. У Rocket Pool есть два разных адреса для получателя комиссий:

  • Если вы присоединились к Smoothing Pool, это должен быть адрес Smoothing Pool
  • Если вы не присоединились к Smoothing Pool, это должен быть адрес Fee Distributor вашей ноды

Чтобы узнать больше о Smoothing Pool и вашем Fee Distributor, пожалуйста, смотрите раздел руководства Fee Distributors и Smoothing Pool.

Сервис node Rocket Pool установит это для вас автоматически, определив, какой адрес нужен, и установив его в файл конфигурации и перезапустив сервис вашего Validator клиента для применения изменения. Ваш сервис Validator клиента может использовать этот файл конфигурации автоматически, поэтому вам не нужно жестко задавать получателя комиссий.

Откройте файл определения сервиса systemd, который вы только что создали для вашего Validator клиента. Перед строкой ExecStart добавьте эту строку:

EnvironmentFile=/srv/rocketpool/data/validators/rp-fee-recipient-env.txt

Затем измените ваш аргумент получателя комиссий следующим образом; выберите ваш клиент из вкладок ниже:

Lighthouse
Nimbus
Prysm
Teku
Измените --suggested-fee-recipient address на --suggested-fee-recipient ${FEE_RECIPIENT}
ПРИМЕЧАНИЕ

Если вы запустите ваш Validator клиент до сервисов Rocket Pool, он может выдать ошибку, потому что этот файл еще не существует. Не волнуйтесь, этот файл будет создан Rocket Pool после инициализации и запуска его сервисов.

Установка каталогов данных и ключей

Далее вы должны указать VC, где хранить его данные и загружать ключи валидаторов, которые генерирует Rocket Pool. Щелкните на клиенте, который вы используете, во вкладках ниже:

Lighthouse
Nimbus
Prysm
Teku

Создайте следующие каталоги и установите их владельца на rp:

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/validators

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/secrets

sudo chown -R rp:rp /srv/rocketpool/data/validators/lighthouse

sudo chmod -R 775 /srv/rocketpool/data/validators/lighthouse

Теперь добавьте или измените следующие параметры в файле определения сервиса Lighthouse VC на эти новые значения:

--datadir /srv/rocketpool/data/validators/lighthouse

Ослабление umask

По умолчанию ваша система обычно поставляется с конфигурацией umask, которая будет снимать бит +w с групповых разрешений всякий раз, когда демон node создает новую папку. Это проблематично для нескольких consensus клиентов, потому что они фактически будут записывать такие вещи, как файлы блокировки или другие метаданные в каталоги, которые Smartnode создает при генерации новых ключей валидатора во время депозита minipool.

Чтобы бороться с этим и обеспечить правильную работу вашего VC, пожалуйста, ослабьте настройки umask. Например, вместо 0022 вам следует рассмотреть возможность установки 0002 для пользователя rp.

Каждая система отличается, поэтому, пожалуйста, обратитесь к руководству, которое охватывает вашу операционную систему, чтобы узнать, как это сделать.

ПРЕДУПРЕЖДЕНИЕ

Этот шаг критически важен для обеспечения правильной обработки автоматического стейкинга и обязанностей валидации. Если вы заметите проблемы с правами доступа в логах вашего VC после того, как ваш minipool пройдет 12-часовую проверку и войдет в статус staking, вам, вероятно, потребуется выполнить sudo chmod 775 на папке, содержащей ваши ключи валидатора, чтобы ваш VC сервис мог записывать в эту папку.

Перезагрузка VC сервиса

После внесения этих изменений вы можете перезагрузить и перезапустить VC сервис, используя следующее:

sudo systemctl daemon-reload

sudo systemctl restart <vc-service>

Если не используете Prysm, пожалуйста, внимательно следите за логами VC, чтобы убедиться, что он успешно запустился правильно и следующие параметры определены корректно:

  • Получатель комиссий
  • Путь к данным
  • Путь к кошельку / ключам / секретам

Вы можете проверить это, например, с помощью ps aux | grep fee, чтобы отфильтровать запущенные процессы и посмотреть на получателя комиссий, который использует ваш VC. Он должен быть таким же, как определен в /srv/rocketpool/data/validators/rp-fee-recipient-env.txt.

Если все они используют правильные значения, тогда поздравляем! Вы успешно настроили вашу Rocket Pool ноду и можете следовать следующим разделам руководства, чтобы узнать, как ее использовать.

Следующие шаги

Теперь, когда ваши клиенты установлены, мы рекомендуем вам взглянуть на рекомендации по безопасности в разделе Защита вашей ноды далее. Поскольку вы используете Native настройку, вы, вероятно, уже выполнили некоторые из этих вещей; тем не менее, не помешает хотя бы изучить это и посмотреть, насколько хорошо рекомендуемая позиция безопасности соответствует вашей системе.