🇬🇧 for English
Интерактивный bash-скрипт для установки, управления и мониторинга Ethereum RPC-ноды в сетях Mainnet, Holesky, Hoodi, Sepolia с поддержкой выбора execution-клиента (Geth (рекомендуемый), Reth, Nethermind) и consensus-клиента (Prysm (рекомендуемый), Lighthouse, Teku), мониторинга синхронизации и cron-агента с уведомлениями о статусе работы ноды в Telegram.
- 📦 Обновление системы и установка необходимых компонентов
- 🔧 Установка и запуск RPC-ноды в нужной сети с выбранным execution и consensus-клиентами
- 🐳 Автоматическая генерация
docker-compose.yml - 📊 Проверка статуса синхронизации (execution и consensus)
- 📋 Просмотр логов
- 🔄 Обновление контейнеров
- 🛑 Остановка/запуск контейнеров
- 🧹 Удаление ноды
- 💽 Анализ использования диска
- 📡 Установка cron-агента с Telegram-уведомлениями о статусе синхронизации ноды
- 🔥 Расширенное управление файрволлом
- 🌐 Проверка RPC и blob-данных. Cкрипт создан
@web3.creed(Discord) - ⚙️ Настройка использования ресурсов контейнерами Docker
Ознакомьтесь с Историей версий под спойлером, там много полезной информации о функциях скрипта.
dockerиdocker-composecurl,jqbash≥ 4.0
Все требования можно установить автоматически, выбрав пункт 1 в меню. Будет выполнено обновление системы и текущих приложений, установлены Docker, Docker Compose и другие необходимые утилиты. После установки система будет очищена от кеша установки и неиспользуемых приложений.
Я рекомендую использовать шаг 1, даже если у вас есть Docker. Скрипт пропустит установку имеющихся у вас компонентов. После обновления системы проверьте, работают ли ваши старые контейнеры и другие узлы.
| Компонент | Требование |
|---|---|
| ОС | Ubuntu 20.04 или новее |
| ОЗУ (RAM) | 24 GB и более |
| Процессор (CPU) | 8 ядер и более |
| Диск | 800 GB SSD (может увеличиться до 1.5 TB) |
Арендовать сервер (пожалуйста используйте мою реферальную ссылку):
- Добавлена функция
save_docker_user_rules()— сохраняет правилаDOCKER-USERв файл/etc/iptables/docker-user.rules - Добавлена функция
setup_rules_persistence()— создаёт systemd drop-in/etc/systemd/system/docker.service.d/restore-iptables.conf, который автоматически восстанавливает правила после каждого запуска Docker - Добавлены вызовы сохранения после каждого изменения правил (добавление, удаление, блокировка портов)
- Добавлены локализованные строки для новых сообщений (EN/RU)
- Добавлена более понятная встроенная инструкция для первого запуска опции Управления файрволлом
📅 История версий
- Обновлённая проверка статуса синхронизации для Geth (опция 5):
- Когда прогресс по блокам достигает 100%, «оставшиеся блоки» больше не отображаются как отрицательное значение — показывается 0 и сообщение о том, что нода догоняет текущую вершину цепочки; прогресс ограничен 100%.
- Когда прогресс по блокам равен 100%, скрипт считывает логи контейнера Geth и отображает в статусе: ETA генерации снапшота, прогресс индексации транзакций и прогресс индекса логов (обработано/осталось, затраченное время).
- Обновлено сообщение при некорректных данных синхронизации: рекомендуется повторно проверить через 10–15 минут после запуска клиента.
- Логика проверки синхронизации для Reth и Nethermind не изменена и работает как прежде.
Либо используйте гайд для обновления без удаления данных - Update-from-1-7-x-to-1-8-0.md
- Добавлена установка в mainnet, Holesky, Hoodi, Sepolia
- Стабилизирована работа beacon ноды
- Обновление функции ограничения использования ресурсов Docker (Опция 15, также при установке ноды)
- Ограничения назначаются только для execution клиента
- Новая логика расчета для RAM
- Новая логика расчета для CPU
- Минимальные требования 24 RAM, 8 CPU
- В уведомление о статусе синхронизации добавлено отображение дистанции для beacon
- Мелкие улучшения
- Для BEACON-клиентов изменён URL чекпоинта по умолчанию.
- Подготовка к обновлению Fusaka
- Обновление адреса образа для Prysm
- Активация режима supernode для beacon клиентов
- Добавлена проверка версии для execution клиентов в опции проверки RPC (опция 14)
Все изменения применятся к нодам, установленным с версией скрипта 1.7.2 от 14.10.2025. Если вы установили ноду ранее, то выполните действия из сообщений:
- Telegram: Подключитесь к чату https://t.me/+DLsyG6ol3SFjM2Vk и смотрите сообщение https://t.me/c/2645253866/6841
- Discord: https://discord.com/channels/1144692727120937080/1381732042630500363/1427261609327460372
- Добавлена опция, позволяющая настроить ограничение использования CPU и RAM для EL и CL клиентов.
- При активной опции на работу операционной системы сервера всегда остается 20%. Остальные ресурсы разделяются в соотношении 60:40 между EL и CL клиентами.
- Опция автоматически запускается при установке RPC ноды (можно отказаться от назначения лимитов) или можно запустить отдельно на уже работающей ноде (требуется перезагрузка контейнеров ноды)
- Обновление скрипта проверки RPC до последней версии. Спасибо @web3.creed (Discord)
- Исправление конфигурации Nethermind. В предыдущей конфигурации могли возникать проблемы в синхронизации.
- Функция Управление файрволлом полностью переписана. Теперь правила действительно работают. Спасибо @luce1970 (Discord) за выявленный баг.
- можно управлять как портами, так и ip-адресами
- входящие/исходящие, tcp/udp, всё
- добавление/удаление по номеру правила в верном
- раздельное или одновременное удаление iptables и ufw правил
- блокировка всех входящих соединений
- Функция управляет правилами в IPTABLES и дублирует в UFW
- В Geth добавлен флаг, снимающий ограничение в 1 eth
- Мелкие улучшения
- Изменен вывод логов: просмотр последних 500 строк с продолжением
- Добавлена система контроля весрий скрипта Sepolia
- Обновлен логотип
- Добавлена возможность выбора Execution клиента. Geth, Reth, Nethermind.
- Добавлена возможность назначить порт при установке. По умолчанию для execution 8545, consensus 5052.
- Добавлена возможность назначать порт для ранее установленной ноды.
- Существенно расширены возможности управления файрволлом.
- Для Reth и Nethermind реализованы свои механизмы для контроля процесса синхронизации. Для получения корректных данных первую проверку делайте через 3-5 минут после запуска клиентов.
- При удалении ноды удаляется и cron-задача
- Реализована проверка токена телеграм и ChatID. Доработаны уведомления.
- Добавлена обновленная версия скрипта проверки RPC от Creed
- Доработан скрипт проверки RPC для совместимости с обеими версиями Sepolia Auto Install, также возможно выбрать проверку localhost или внешнего ip.
- Мелкие улучшения
- Добавлен скрипт проверки RPC от Creed
- Добавлено управление фаерволом
- Добавлена автоматическая установка зависимостей
- Поддержка нескольких языков для приветственного сообщения.
- Исправление в docker-compose файле Prysm.
- Исправление уведомлений в Telegram
Запуск или Обновление
curl -o install_sepolia.sh https://raw.githubusercontent.com/pittpv/sepolia-auto-install/main/install_sepolia.sh && chmod +x install_sepolia.sh && ./install_sepolia.shДля последующих запусков используйте команду:
cd $HOME && ./install_sepolia.shПосле установки ноды дождитесь полной синхронизации. Синхронизация будет завершена только тогда, когда при запросе статуса синхронизации вы увидите "✅ Execution синхронизирован". В остальных случаях, даже если вы видите 100%, синхронизация еще не завершена.
Скрипт предлагает следующее меню (на английском или русском языке):
- Установить требования (Docker и др.)
- Установить ноду
- Обновить контейнеры
- Посмотреть логи
- Проверить статус синхронизации
- Настроить Telegram уведомления со сатусом синхронизации
- Удалить Telegram уведомления
- Остановить контейнеры
- Запустить контейнеры
- Удалить ноду
- Изменить порты для установленной ноды
- Проверить использование диска
- Управление файрволлом
- Проверить RPC-сервер
- Настроить ресурсы Docker
- Выход
Скрипт поддерживает cron-агент, который будет проверять статус ноды и отправлять уведомления в Telegram.
- Получите Telegram токен от BotFather
- Узнайте свой
chat_id, например с помощью IDBot - Введите их в скрипте при установке cron-агента
Выберите интервал оповещений:
- Каждые 5, 10, 15, 30 минут или каждый час
Были протестированы следующие конфигурации:
| Execution / Consensus | Prysm | Teku | Lighthouse |
|---|---|---|---|
| Geth | ✅ | ✅ | |
| Reth | ✅ | ✅ | |
| Nethermind | ✅ | ✅ |
Легенда:
- ✅ — работает на портах по умолчанию / работает на пользовательских портах
⚠️ — работает, но рекоменендуется изменение P2P-порта консенсуса, отличный от 9000
В зависимости от клиента используется свой алгорим для отображения статуса синхронизации.
Скрипт определяет:
| Возможность | Geth | Reth | Nethermind |
|---|---|---|---|
| Текущий и целевой блок | ✅ | ✅ | ✅ |
| Прогресс синхронизации (%) | ✅ | ✅ | ✅ |
| Стадия синхронизации | ❌ | ✅ | ✅ |
| Скорость синхронизации (блоков/сек) | ✅ | ❌ | ❌ |
| Прогноз времени завершения | ✅ | ❌ | ❌ |
| Статус завершения синхронизации | ✅ | ✅ | ✅ |
Скрипт определяет:
| Возможность | Prysm | Teku | Lighthouse |
|---|---|---|---|
| Текущий и целевой блок | ✅ | ✅ | ✅ |
| В процессе синхронизации | ✅ | ✅ | ✅ |
| Статус завершения синхронизации | ✅ | ✅ | ✅ |
- RPC URL:
http://localhost:8545(порт по умолчанию -8545, или другой порт, который вы установите) - BEACON RPC URL:
http://localhost:5052(порт по умолчанию -5052, или другой порт, который вы установите)
localhost замените на ip-адрес вашего сервера.
Этот пункт меню добавляет возможность управлять файрволлом UFW и IPTABLES на сервере. Он помогает защитить ноду, контролируя доступ к важным портам. Ознакомьтесь с подробным описанием работы функции Управление файрволлом: Firewall-Manager.md
-
Включение и подготовка (ufw, iptables) Открывает SSH-порты (22,
ssh), включает UFW, подготавливает iptables. Если UFW уже активирован или iptables уже существуют, скрипт уведомит об этом. -
Управление портами Добавление/удаление правил по номеру. Все направления и протоколы. Опция блокировки всех входящих соединений.
-
Управление IP-адресами Добавление/удаление правил по номеру. IP-адрес с уточнением порта, все направления и протоколы.
-
Просмотр всех правил Показ правил цепочки DOCKER-USER и UFW
-
Сброс всех правил и перезапуск Docker Удаляет правила DOCKER-USER и UFW, отключает UFW, перезапускает Docker для восстановления правил по умолчанию.
- Все критичные операции требуют явного подтверждения, что снижает риск ошибок.
- Имеется защита от дублирования правил
- Корректный порядок удаления и добавления правил
Функция выполняет проверку RPC-доступности и наличия blob-данных за последние слоты.
🔍 Что делает проверка:
- Определяет внешний IP-адрес сервера
- Проверяет доступность Execution RPC и Beacon RPC
- Запрашивает последний блок и версию клиента
- Проверяет наличие blob-данных за последние 10 слотов
✅ Статус определяется по количеству слотов с blob-данными:
HEALTHY: ≥75%WARNING: 25–74%CRITICAL: <25%
Полезно для диагностики и понимания, что узел корректно обрабатывает данные с EIP-4844 (blobs).
Опция удаления полностью очищает данные и удаляет все связанные контейнеры. Требуется подтверждение.
MIT License. Используйте на свой страх и риск.
Любые вопросы, сообщения об ошибках или отзывы:
