Skip to content

Latest commit

 

History

History
191 lines (130 loc) · 16.5 KB

File metadata and controls

191 lines (130 loc) · 16.5 KB

Установка ноды Tempo с помощью скрипта

Пошаговое руководство по установке RPC или Validator ноды Tempo (moderato, mainnet) с помощью скрипта install-tempo.sh. Скрипт автоматизирует установку в Docker, загрузку снапшота, даунгрейд и настройку уведомлений в Telegram.


⚠️ Обязательно: screen или tmux для снапшота и даунгрейда

Перед выполнением опции 3 (Снапшот) или опции 4 (Даунгрейд) всегда запускайте скрипт в сессии screen или tmux.

  • Загрузка и распаковка снапшота занимают много времени (десятки минут и более).
  • При обрыве SSH-сессии процесс прервётся, и работу придётся начинать заново.
  • В сессии screen/tmux скрипт продолжит работу после отключения, и вы сможете снова подключиться к той же сессии.

В остальных случаях (установка ноды без снапшота, просмотр логов, остановка/запуск контейнера и т.д.) использование screen или tmux не обязательно.

Примеры:

# Вариант 1: screen
screen -S tempo
cd /path/to/tempo-node
./install-tempo.sh
# Выберите 3 или 4. Отключиться: Ctrl+A, затем D. Вернуться: screen -r tempo

# Вариант 2: tmux
tmux new -s tempo
cd /path/to/tempo-node
./install-tempo.sh
# Выберите 3 или 4. Отключиться: Ctrl+B, затем D. Вернуться: tmux attach -t tempo

Уведомления в Telegram

Чтобы получать уведомление о завершении выполнения опции 3 (Снапшот) или опции 4 (Даунгрейд), добавьте в файл .env-tempo переменные:

  • TG_BOT_TOKEN — токен бота, созданного через @BotFather.
  • TG_CHAT_ID — ID чата (узнать можно, например, через @myidbot.

Пример в .env-tempo:

TG_BOT_TOKEN=123456789:ABCdefGHI...
TG_CHAT_ID=123456789

Скрипт сам создаёт файл .env-tempo в $TEMPO_HOME при установке ноды (опция 1 или 2). После установки отредактируйте этот файл, чтобы добавить TG_BOT_TOKEN и TG_CHAT_ID или изменить порты / TEMPO_HOME.

После завершения загрузки/распаковки снапшота или даунгрейда скрипт отправит в указанный чат сообщение об успешном завершении. Без этих переменных уведомления не отправляются.


Запуск скрипта

Однострочная команда (скачать с GitHub, назначить права, запустить):

curl -o install-tempo.sh https://raw.githubusercontent.com/pittpv/tempo-node/main/install-tempo.sh && chmod +x install-tempo.sh && ./install-tempo.sh

Для последующих запусков:

cd $HOME && ./install-tempo.sh

(или из каталога, где сохранён скрипт)


Файл .env-tempo и переменные

При установке ноды (опция 1 или 2) скрипт создаёт .env-tempo в $TEMPO_HOME, если файла ещё нет (на основе .env.example). После установки отредактируйте этот файл при необходимости.

Общие переменные (для любой ноды):

  • CHAIN — сеть: moderato (тестнет) или mainnet
  • TEMPO_HOME — каталог нод (по умолчанию $HOME/tempo)
  • TEMPO_IMAGE — образ Docker (например ghcr.io/tempoxyz/tempo:1.1.4)
  • TG_BOT_TOKEN, TG_CHAT_ID — уведомления в Telegram о завершении опций 3 и 4
  • SCRIPT_URL — URL скрипта установщика для проверки обновлений (опция 8)
  • SNAPSHOTS_API — URL API снапшотов (по умолчанию используется официальный)

Только для RPC-ноды (опция 1): порты по умолчанию одинаковы для одной ноды.

  • RPC_HTTP_PORT, RPC_WS_PORT, RPC_P2P_PORT, RPC_DISCOVERY_PORT, RPC_METRICS_PORT (по умолчанию 8545, 8546, 30303, 30303, 9000)

Только для Validator-ноды (опция 2):

  • VALIDATOR_HTTP_PORT, VALIDATOR_WS_PORT, VALIDATOR_P2P_PORT, VALIDATOR_CONSENSUS_PORT, VALIDATOR_DISCOVERY_PORT, VALIDATOR_METRICS_PORT (по умолчанию 8545, 8546, 30303, 8000, 30303, 9000)

Если на одном сервере установлены и RPC, и Validator, в .env-tempo нужно задать разные порты для валидатора, чтобы не конфликтовать с RPC (например: VALIDATOR_HTTP_PORT=8547, VALIDATOR_P2P_PORT=30304). См. раздел ниже про запуск двух нод на одной машине.


RPC и Validator на одном сервере

Запускать RPC и Validator на одном сервере не рекомендуется: две ноды увеличивают нагрузку на CPU, диск и память. Скрипт тем не менее позволяет установить обе ноды на одной машине, если ресурсов достаточно.

Особенности при двух нодах:

  • RPC устанавливается в $TEMPO_HOME/rpc, Validator — в $TEMPO_HOME/validator; контейнеры называются tempo-rpc и tempo-validator.
  • В .env-tempo обязательно задайте разные порты для Validator (см. выше), иначе при запуске второй ноды порты будут заняты.
  • Опции 4 (Даунгрейд), 6 (Логи), 7 (Удаление), 9 (Остановить), 10 (Запустить), 11 (Проверка синхронизации), 12 (Место на диске) при наличии обеих нод выводят меню «Which node?»: вы выбираете 1) RPC или 2) Validator. Рядом с каждым пунктом отображается статус контейнера (работает / остановлен). Таким образом можно управлять каждой нодой по отдельности: останавливать, запускать, делать снапшот или даунгрейд только для выбранной ноды, смотреть логи и т.д.
  • Опция 0) Return to main menu в этом меню возвращает в главное меню без выполнения действия.

Начальная настройка

  1. Скрипт проверит наличие Docker и Docker Compose и предложит установить недостающее ПО. Согласитесь при необходимости (y).

  2. В главном меню выберите язык (если запрашивается).

  3. Для установки ноды:

    • Опция 1RPC Node: только синхронизация цепи и выдача API; ключ валидатора и вайтлист не требуются. Нода работает в режиме --follow.
    • Опция 2Validator Node: участие в консенсусе и производство блоков; нужны ключ подписи консенсуса и вайтлист. Скрипт запросит FEE_RECIPIENT (EVM-адрес для наград) и при первом запуске сгенерирует ключ подписи, если его ещё нет.

Установка RPC Node (опция 1)

  1. Выберите в меню 1 (Install Tempo RPC Node).
  2. Скрипт проверяет порты RPC-ноды: HTTP (8545), WebSocket (8546), P2P (30303), metrics (9000). Если порты заняты, измените в .env-tempo переменные RPC_HTTP_PORT, RPC_WS_PORT, RPC_P2P_PORT, RPC_METRICS_PORT и запустите снова.
  3. Создаётся каталог $TEMPO_HOME/rpc (по умолчанию $HOME/tempo/rpc), в нём — data, keys, docker-compose.yml и метка типа ноды. Ключ консенсуса для RPC не создаётся (RPC работает с флагом --follow, без подписи блоков).
  4. Скрипт создаёт .env-tempo в $TEMPO_HOME, если его ещё нет, подтягивает образ и запускает контейнер tempo-rpc.
  5. Дальше можно: использовать ноду как есть (синхронизация с нуля) или в screen/tmux выполнить опцию 3 (Снапшот) для ускорения синхронизации.

После установки RPC доступен по адресу вида http://0.0.0.0:8545 (или портам из .env-tempo).


Установка Validator Node (опция 2)

  1. Выберите в меню 2 (Install Tempo Validator Node).
  2. Скрипт запрашивает FEE_RECIPIENT — EVM-адрес (с префиксом 0x), на который будут начисляться награды. Проверяются порты валидатора: HTTP, WebSocket, P2P, Consensus (8000), metrics. При занятых портах задайте в .env-tempo переменные VALIDATOR_HTTP_PORT, VALIDATOR_P2P_PORT, VALIDATOR_CONSENSUS_PORT и т.д. и повторите запуск.
  3. Создаётся каталог $TEMPO_HOME/validator, в нём — data и keys. Если файла keys/signing.key нет, скрипт генерирует ключ подписи консенсуса (команда consensus generate-private-key) и по нему создаёт публичный ключ keys/signing.pub (команда consensus calculate-public-key). Если приватный ключ уже есть, а signing.pub отсутствует, скрипт создаёт публичный ключ отдельно.
  4. Создаётся docker-compose.yml с контейнером tempo-validator, монтируются данные и ключи; создаётся .env-tempo в $TEMPO_HOME, если его ещё нет.
  5. Рекомендуется перед первым полноценным запуском в screen/tmux выполнить опцию 3 (Снапшот) для выбранной ноды, чтобы ускорить синхронизацию.

Снапшот (опция 3) — обязательно в screen или tmux

  1. Запустите скрипт в screen или tmux (см. раздел выше).
  2. В главном меню выберите 3 (Snapshot).
  3. Выберите ноду (RPC или Validator), если установлены обе.
  4. Укажите источник снапшота:
    • 0 или Enter — последний доступный по API;
    • u — ввод URL снапшота вручную;
    • e — путь к локальному файлу .tar.lz4;
    • номер из списка — выбор по номеру из выведенного списка.
  5. Скрипт остановит контейнер, скачает и распакует снапшот, затем перезапустит ноду.
  6. При заданных TG_BOT_TOKEN и TG_CHAT_ID в .env вы получите уведомление в Telegram о завершении.

Даунгрейд (опция 4) — рекомендуется в screen или tmux

  1. Желательно запустить скрипт в screen или tmux.
  2. В главном меню выберите 4 (Downgrade).
  3. Выберите ноду (RPC или Validator).
  4. Выберите версию из списка или введите свой тег (например, 1.1.0).
  5. После загрузки образа скрипт спросит, нужно ли скачивать снепшот для выбранной версии. Если ответить да, будет показан список доступных снепшотов для этой сети, и можно выбрать один из них (или взять последний). Если ответить нет, нода будет перезапущена только с новым образом, с использованием уже существующих данных цепи.
  6. В меню выбора версии снепшота есть опция b (назад) — позволяет вернуться из выбора снепшота и перезапустить ноду только со скачанным образом (без загрузки снепшота).
  7. При настроенных уведомлениях в Telegram вы получите сообщение о завершении даунгрейда (и, при необходимости, загрузки снепшота).

Остальные опции

  • 5 — показать версию образа/ноды (по выбранной RPC или Validator).
  • 6 — просмотр логов выбранной ноды (выход: Ctrl+C).
  • 7 — удаление ноды: только контейнер (данные и ключи сохраняются) или полное удаление с данными и ключами.
  • 8Проверка обновлений: показывает версию скрипта установщика; если в .env-tempo задан SCRIPT_URL (URL скрипта на GitHub или другой хост), проверяет наличие более новой версии установщика. Также показывает последнюю версию ноды Tempo из GitHub и сравнивает с установленной у вас (если доступна новая версия, подскажет выполнить опцию 4 «Даунгрейд» для обновления ноды). Само обновление установщика выполняется отдельно (например, командой ./install-tempo.sh -U при заданном SCRIPT_URL).
  • 9 / 10 — остановка или запуск контейнера выбранной ноды; в меню «Which node?» отображается статус каждого контейнера (работает / остановлен).
  • 11 — проверка синхронизации и блоков (RPC выбранной ноды: пиры, высота блока, eth_syncing и т.д.).
  • 12 — проверка занимаемого места на диске (данные и ключи выбранной ноды).

Краткая сводка

Действие Screen/tmux Telegram в .env
Установка RPC/Validator (1, 2) Не обязательно Не обязательно
Снапшот (3) Обязательно Рекомендуется (уведомление о завершении)
Даунгрейд (4) Рекомендуется Рекомендуется (уведомление о завершении)
Остальные опции Не обязательно Не требуется

Удачной установки и стабильной работы ноды.

Если у вас возникли вопросы по работе скрипта, задавайте их в Telegram-чате поддержки: https://t.me/+DLsyG6ol3SFjM2Vk