Пошаговое руководство по установке RPC или Validator ноды Tempo (moderato, mainnet) с помощью скрипта install-tempo.sh. Скрипт автоматизирует установку в Docker, загрузку снапшота, даунгрейд и настройку уведомлений в Telegram.
Перед выполнением опции 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Чтобы получать уведомление о завершении выполнения опции 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(или из каталога, где сохранён скрипт)
При установке ноды (опция 1 или 2) скрипт создаёт .env-tempo в $TEMPO_HOME, если файла ещё нет (на основе .env.example). После установки отредактируйте этот файл при необходимости.
Общие переменные (для любой ноды):
CHAIN— сеть:moderato(тестнет) илиmainnetTEMPO_HOME— каталог нод (по умолчанию$HOME/tempo)TEMPO_IMAGE— образ Docker (напримерghcr.io/tempoxyz/tempo:1.1.4)TG_BOT_TOKEN,TG_CHAT_ID— уведомления в Telegram о завершении опций 3 и 4SCRIPT_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 на одном сервере не рекомендуется: две ноды увеличивают нагрузку на 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 в этом меню возвращает в главное меню без выполнения действия.
-
Скрипт проверит наличие Docker и Docker Compose и предложит установить недостающее ПО. Согласитесь при необходимости (
y). -
В главном меню выберите язык (если запрашивается).
-
Для установки ноды:
- Опция 1 — RPC Node: только синхронизация цепи и выдача API; ключ валидатора и вайтлист не требуются. Нода работает в режиме
--follow. - Опция 2 — Validator Node: участие в консенсусе и производство блоков; нужны ключ подписи консенсуса и вайтлист. Скрипт запросит FEE_RECIPIENT (EVM-адрес для наград) и при первом запуске сгенерирует ключ подписи, если его ещё нет.
- Опция 1 — RPC Node: только синхронизация цепи и выдача API; ключ валидатора и вайтлист не требуются. Нода работает в режиме
- Выберите в меню 1 (Install Tempo RPC Node).
- Скрипт проверяет порты RPC-ноды: HTTP (8545), WebSocket (8546), P2P (30303), metrics (9000). Если порты заняты, измените в
.env-tempoпеременныеRPC_HTTP_PORT,RPC_WS_PORT,RPC_P2P_PORT,RPC_METRICS_PORTи запустите снова. - Создаётся каталог
$TEMPO_HOME/rpc(по умолчанию$HOME/tempo/rpc), в нём —data,keys,docker-compose.ymlи метка типа ноды. Ключ консенсуса для RPC не создаётся (RPC работает с флагом--follow, без подписи блоков). - Скрипт создаёт
.env-tempoв$TEMPO_HOME, если его ещё нет, подтягивает образ и запускает контейнерtempo-rpc. - Дальше можно: использовать ноду как есть (синхронизация с нуля) или в screen/tmux выполнить опцию 3 (Снапшот) для ускорения синхронизации.
После установки RPC доступен по адресу вида http://0.0.0.0:8545 (или портам из .env-tempo).
- Выберите в меню 2 (Install Tempo Validator Node).
- Скрипт запрашивает FEE_RECIPIENT — EVM-адрес (с префиксом 0x), на который будут начисляться награды. Проверяются порты валидатора: HTTP, WebSocket, P2P, Consensus (8000), metrics. При занятых портах задайте в
.env-tempoпеременныеVALIDATOR_HTTP_PORT,VALIDATOR_P2P_PORT,VALIDATOR_CONSENSUS_PORTи т.д. и повторите запуск. - Создаётся каталог
$TEMPO_HOME/validator, в нём —dataиkeys. Если файлаkeys/signing.keyнет, скрипт генерирует ключ подписи консенсуса (командаconsensus generate-private-key) и по нему создаёт публичный ключkeys/signing.pub(командаconsensus calculate-public-key). Если приватный ключ уже есть, аsigning.pubотсутствует, скрипт создаёт публичный ключ отдельно. - Создаётся
docker-compose.ymlс контейнеромtempo-validator, монтируются данные и ключи; создаётся.env-tempoв$TEMPO_HOME, если его ещё нет. - Рекомендуется перед первым полноценным запуском в screen/tmux выполнить опцию 3 (Снапшот) для выбранной ноды, чтобы ускорить синхронизацию.
- Запустите скрипт в screen или tmux (см. раздел выше).
- В главном меню выберите 3 (Snapshot).
- Выберите ноду (RPC или Validator), если установлены обе.
- Укажите источник снапшота:
- 0 или Enter — последний доступный по API;
- u — ввод URL снапшота вручную;
- e — путь к локальному файлу
.tar.lz4; - номер из списка — выбор по номеру из выведенного списка.
- Скрипт остановит контейнер, скачает и распакует снапшот, затем перезапустит ноду.
- При заданных TG_BOT_TOKEN и TG_CHAT_ID в .env вы получите уведомление в Telegram о завершении.
- Желательно запустить скрипт в screen или tmux.
- В главном меню выберите 4 (Downgrade).
- Выберите ноду (RPC или Validator).
- Выберите версию из списка или введите свой тег (например,
1.1.0). - После загрузки образа скрипт спросит, нужно ли скачивать снепшот для выбранной версии. Если ответить да, будет показан список доступных снепшотов для этой сети, и можно выбрать один из них (или взять последний). Если ответить нет, нода будет перезапущена только с новым образом, с использованием уже существующих данных цепи.
- В меню выбора версии снепшота есть опция b (назад) — позволяет вернуться из выбора снепшота и перезапустить ноду только со скачанным образом (без загрузки снепшота).
- При настроенных уведомлениях в 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