Введение
Ethereum быстро становится известен как одна из самых эффективных и гибких блокчейн-сетей в мире, позволяя финансовым организациям и частным лицам создавать смарт-контракты, которые могут обеспечивать работу таких решений, как приложения децентрализованных финансов (DeFi) и экосистемы NFT. Ethereum — один из фундаментов Web3, предоставляющий децентрализованную, масштабируемую и безопасную сеть, в которой разработчики могут создавать цифровую экономику будущего.
Но с чего начать? В этом руководстве мы предоставим инструкцию по развертыванию и эксплуатации узла Ethereum на публичном сервере OVHcloud. К концу этого руководства у вас будет полностью функциональный узел Ethereum, работающий на OVHcloud, с соблюдением лучших практик для надежности и удобства сопровождения.
Меры по усилению безопасности и операционные лучшие практики, необходимые для полной защиты узла Ethereum, выходят за рамки этого руководства. Пользователям настоятельно рекомендуется реализовать дополнительные меры безопасности — такие как настройка брандмауэра, управление ключами и мониторинг — в соответствии с требованиями их организации и отраслевыми лучшими практиками.
Всё готово? Давайте начнём.
Запуск инстанса
Перейдите в Панель управления OVHcloud и в разделе Public Cloud выберите "Инстансы". Затем нажмите Создать инстанс, чтобы начать процесс подготовки.
Для надежной работы узла Ethereum аппаратные характеристики должны соответствовать минимальным требованиям клиентского программного обеспечения. Согласно документации Ethereum Foundation, узлу Ethereum требуется как минимум:
● Клиент исполнения (Execution client): 2 ядра ЦП, 16 ГБ ОЗУ и 1 ТБ быстрого SSD-накопителя.
● Клиент консенсуса (Consensus client): 2 ядра ЦП, 8 ГБ ОЗУ и доступ к тому же хранилищу.
Для производственных сред и долгосрочной стабильности настоятельно рекомендуются более высокие характеристики. В этом руководстве мы подготовим инстанс с 2 vCPU и 30 ГБ ОЗУ, что удовлетворяет минимальным совокупным требованиям для работы как клиента исполнения, так и клиента консенсуса на одной машине.
В категории "Оптимизированные под память" найдите тип инстанса с названием R2-30 и выберите его для развертывания.
Затем выберите географическое расположение для вашего инстанса. Выбор региона может повлиять на задержки, производительность сети и нормативные требования. Для целей этого руководства мы развернем узел в дата-центре Франкфурта, который обеспечивает низкую задержку подключения в пределах Европы и хорошо подходит для работы узлов Ethereum.
Стоит отметить, что поддержание узлов в разных географических регионах способствует общей отказоустойчивости и децентрализации сети Ethereum. Географическое разнообразие помогает снизить риск локальных сбоев и улучшает избыточность инфраструктуры.
Теперь выберите образ операционной системы для вашего инстанса. Для этого руководства мы будем использовать Ubuntu 24.04 LTS.
Далее выберите публичный SSH-ключ, который будет связан с вашим инстансом. Этот ключ будет установлен на сервер во время подготовки и будет служить основным методом аутентификации для безопасного удаленного доступа. После запуска инстанса вы сможете подключиться к нему по SSH, используя соответствующий приватный ключ. Этот подход устраняет необходимость входа по паролю и значительно повышает безопасность за счет принудительной аутентификации по ключу.
Назначьте вашему инстансу описательное имя (например, eth-node-fra-01) в соответствии с соглашениями об именовании в вашей организации. Если ваш рабочий процесс использует теги или метки, добавьте те, которые идентифицируют роль (исполнение/консенсус), окружение (prod/stage) и регион (FRA). OVHcloud также позволяет прикреплять скрипт пост-установки (пользовательские данные cloud-init) для автоматизации подготовки; однако это руководство проходит поэтапно, поэтому оставьте это поле пустым.
Для целей этого руководства мы просто присвоим инстансу имя OVHnode.
Настройте доступ к сети, выбрав Публичный режим, что назначит инстансу публичный IP-адрес и включит внешнее подключение. Этот параметр необходим для участия узла в сети Ethereum. Затем выберите предпочтительный способ оплаты.
Наконец, нажмите Создать инстанс, чтобы запустить процесс развертывания. OVHcloud подготовит сервер с выбранной конфигурацией, и в течение нескольких минут инстанс будет доступен и запущен. На этом этапе ваша хост-среда для узла Ethereum готова для первоначального доступа и дальнейшей настройки.
Добавление хранилища
Следующий шаг — подготовка постоянного хранилища для данных блокчейна Ethereum. В Панели управления OVHcloud перейдите в раздел Блочное хранилище из бокового меню и нажмите Создать том. Этот том будет служить основным хранилищем данных для цепи Ethereum, обеспечивая долговечность и масштабируемость независимо от вычислительного инстанса.
При создании тома хранилища убедитесь, что вы выбрали тот же регион, что и ваш вычислительный инстанс. Это важно для гарантии доступа с низкой задержкой и позволяет подключить том напрямую к вашему узлу без потерь производительности из-за межрегиональной связи.
OVHcloud предоставляет три категории томов блочного хранилища:
- Classic HDD – гарантировано 500 IOPS.
- High-Speed SSD – до 3 000 IOPS.
- High-Speed Gen2 – до 20 000 IOPS.
Для работы узла Ethereum требуется высокопроизводительное хранилище из-за постоянных операций чтения и записи, необходимых для синхронизации блокчейна и доступа к данным блоков и состояний. По этой причине мы настоятельно рекомендуем выбрать том High-Speed Gen2, который обеспечивает необходимую пропускную способность и количество операций ввода/вывода в секунду (IOPS) для стабильной работы узла.
Как клиент уровня исполнения (EL) Ethereum, так и клиент уровня консенсуса (CL) требуют значительной дискововой емкости для хранения данных блокчейна, состояний и исторических записей. Для надежной работы полного узла основной сети рекомендуется минимум 2 ТБ хранилища. При создании тома блочного хранилища в OVHcloud установите емкость 2 ТБ и выберите опцию High-Speed Gen2, чтобы обеспечить достаточную производительность для синхронизации и долгосрочной работы.
Назначьте тому хранилища описательное имя для упрощения управления и идентификации. Например, вы можете назвать его chaindata, чтобы четко обозначить его роль как основного хранилища данных для узла.
После настройки всех параметров — включая регион, тип хранилища, емкость и имя — нажмите Создать том. OVHcloud подготовит ресурс блочного хранилища, который затем будет доступен для подключения к вашему инстансу узла Ethereum.
Подключение тома
После того как новый том появится в Панели управления OVHcloud в статусе доступен, подключите его к вашему инстансу узла Ethereum. Для этого откройте меню ⋮ (дополнительные опции) рядом с записью тома и выберите Подключить к инстансу. Из списка инстансов выберите узел, который вы создали ранее. Том будет связан с этим инстансом и доступен как дополнительное блочное устройство.
Теперь установите безопасное подключение к вашему серверу по SSH. Используйте следующую команду в локальном терминале, заменив IPaddress на публичный IP-адрес, назначенный вашему инстансу:
ssh ubuntu@IPaddress
По умолчанию инстансы OVHcloud, подготовленные с образом Ubuntu, создают пользователя с именем ubuntu, которого вы должны использовать для первоначального подключения. Аутентификация будет выполняться с помощью SSH-ключа, который вы настроили при создании инстанса.
После подключения к инстансу выполните следующую команду, чтобы вывести список всех доступных блочных устройств:
lsblk
Эта команда отобразит древовидную структуру запоминающих устройств системы, включая корневой диск и только что подключенный блочный том. Определите дополнительное устройство (например, /dev/sdb), которое соответствует созданному вами в OVHcloud тому на 2 ТБ. Это устройство будет позже отформатировано и смонтировано для хранения данных блокчейна Ethereum.
Далее создайте раздел на новом томе. Замените /dev/sdb на имя устройства, определённое на предыдущем шаге, если оно отличается. Выполните:
sudo fdisk /dev/sdb
Эта команда откроет утилиту для работы с разделами выбранного блочного устройства. Там вы можете создать новый первичный раздел, занимающий весь диск. После завершения раздел, как правило, будет доступен как /dev/sdb1.
После создания раздела (например, /dev/sdb1) отформатируйте его файловой системой ext4, чтобы операционная система могла её смонтировать и использовать. Запустите следующую команду:
sudo mkfs.ext4 /dev/sdb1
Это инициализирует раздел с файловой системой ext4 — стабильным и широко поддерживаемым выбором для хранения данных цепи Ethereum.
Теперь создайте специальный каталог, который будет точкой монтирования для отформатированного тома, затем смонтируйте его и проверьте, что он успешно подключён к файловой системе. Выполните следующие команды:
sudo mkdir -p /mnt/chaindata
sudo mount /dev/sdb1 /mnt/chaindata
df -h
- mkdir -p /mnt/chaindata создаёт каталог для монтирования (использование -p гарантирует отсутствие ошибки, если промежуточные каталоги отсутствуют).
- mount /dev/sdb1 /mnt/chaindata монтирует отформатированный раздел в каталог.
- df -h отображает все смонтированные файловые системы в удобочитаемом формате, позволяя убедиться, что /dev/sdb1 корректно смонтирован в /mnt/chaindata с ожидаемой ёмкостью (приблизительно 2 ТБ).
На этом этапе ваш диск смонтирован и готов к использованию. Однако эта конфигурация не является постоянной: если сервер перезагрузится, том нужно будет монтировать вручную. Чтобы том монтировался автоматически при загрузке, необходимо настроить это в файле /etc/fstab.
Сначала получите UUID (универсальный уникальный идентификатор) вашего тома, выполнив:
sudo blkid
Эта команда выводит список всех блочных устройств и их атрибутов. Найдите запись, соответствующую вашему новому разделу (например, /dev/sdb1), и скопируйте значение его поля UUID, которое будет использовано в конфигурации fstab.
Затем отредактируйте файл /etc/fstab, чтобы настроить автоматическое монтирование. Откройте файл с помощью вашего любимого текстового редактора, например:
sudo nano /etc/fstab
После этого добавьте следующую строку в конец файла, заменив UUID на полученный из предыдущей команды blkid:
UUID=e146e498-bba2-4574-9b47-b54fffea77e7 /mnt/chaindata ext4 nofail 0 0
Эта запись гарантирует, что раздел будет автоматически монтироваться в /mnt/chaindata при каждой загрузке системы. Опция nofail позволяет системе продолжить загрузку, даже если устройство недоступно.
Ваш том хранения теперь полностью настроен и готов к использованию для хранения данных блокчейна Ethereum. Благодаря записи об автоматическом монтировании система будет предоставлять том в /mnt/chaindata при каждой перезагрузке, обеспечивая стабильный и постоянный каталог данных для вашего узла.
Создание выделенного пользователя
Далее создайте выделенную учётную запись пользователя для управления всеми операциями узла Ethereum. Эта практика повышает безопасность, отделяя процессы узла от системного пользователя по умолчанию. Выполните следующие команды:
sudo useradd -s /bin/bash -d /home/node_admin/ -m -G sudo node_admin
echo 'node_admin:MySuperPassword123' | sudo chpasswd
sudo mkdir -p /home/node_admin/.ssh
- useradd создаёт нового пользователя с именем node_admin, домашним каталогом, оболочкой bash и членством в группе sudo.
- chpasswd устанавливает начальный пароль для нового пользователя (замените на надёжный секрет или настройте аутентификацию по ключу).
- mkdir -p создаёт каталог .ssh для конфигурации SSH в домашнем каталоге пользователя.
Теперь настройте аутентификацию по SSH-ключу для нового пользователя, добавив ваш публичный SSH-ключ в файл authorized_keys. Замените заполнитель на ваш реальный публичный ключ:
sudo sh -c "echo 'My-public-SSH-key' > /home/node_admin/.ssh/authorized_keys"
Эта команда создаёт файл authorized_keys в /home/node_admin/.ssh/ и записывает в него ваш публичный ключ, позволяя безопасный вход без пароля от имени пользователя node_admin.
Предварительные сведения об Ethereum
Для работы полностью функционального узла Ethereum требуется скоординированная работа двух ключевых программных компонентов:
1. Клиент исполнения (EL) — отвечает за обработку транзакций и поддержание состояния Ethereum.
2. Клиент консенсуса (CL) — отвечает за достижение консенсуса с остальной сетью через протокол доказательства доли владения Ethereum.
Эти два компонента должны работать в тандеме и безопасно обмениваться данными для поддержания синхронизации с сетью Ethereum mainnet.
Экосистема Ethereum поддерживает несколько независимых реализаций клиентов, каждая из которых соответствует спецификации Ethereum. Наиболее широко используемые варианты включают:
Клиенты исполнения (EL):
- Geth
- Nethermind
- Reth
- Besu
- Erigon
Клиенты консенсуса (CL):
- Lighthouse
- Prysm
- Teku
- Nimbus
- Lodestar
В этом руководстве мы будем использовать следующую комбинацию:
● Клиент исполнения: Nethermind
● Клиент консенсуса: Lighthouse
Установка Nethermind (Клиент исполнения)
Шаг 1: Добавление APT-репозитория Nethermind
Чтобы установить Nethermind через APT, начните с добавления официального репозитория:
sudo add-apt-repository ppa:nethermindeth/nethermind
Если указанная команда не найдена, сначала установите необходимые инструменты:
sudo apt-get install software-properties-common
Шаг 2: Обновление индекса пакетов
Обновите список пакетов, чтобы включить пакеты из нового репозитория:
sudo apt-get update
⚠️ В зависимости от вашей системы и скорости сети это может занять несколько минут.
Шаг 3: Установка Nethermind
Теперь установите бинарный файл Nethermind:
sudo apt-get install nethermind -y
Установка Lighthouse (Клиент консенсуса)
Шаг 1: Загрузка последнего стабильного релиза
Перейдите на страницу релизов Lighthouse на GitHub и найдите последний стабильный релиз.
По состоянию на 29 сентября 2025 года версия 8.0.0 помечена как Пре-релиз, поэтому мы будем использовать стабильную версию 7.1.0.
Используйте следующую команду curl для загрузки архива с бинарным файлом клиента Lighthouse:
curl -LO https://github.com/sigp/lighthouse/releases/download/v7.1.0/lighthouse-v7.1.0-x86_64-unknown-linux-gnu.tar.gz
Шаг 2: Распаковка архива
После загрузки распакуйте архив:
tar -xvf lighthouse-v7.1.0-x86_64-unknown-linux-gnu.tar.gz
В результате бинарный файл lighthouse окажется в вашем текущем каталоге.
Шаг 3: Проверка и перемещение бинарного файла
Протестируйте бинарный файл, чтобы убедиться в его работоспособности:
./lighthouse –version
Переместите его в каталог, включенный в переменную $PATH вашей системы, для глобального доступа:
sudo cp lighthouse /usr/bin
Создание файла JWT-секрета
Для безопасной аутентифицированной связи между клиентом исполнения и клиентом консенсуса требуется общий JWT-секрет.
Шаг 1: Создайте каталог для секретов
sudo mkdir -p /secrets
Шаг 2: Сгенерируйте JWT-токен
openssl rand -hex 32 | tr -d "n" | sudo tee /secrets/jwt.hex > /dev/null
Теперь у вас должен быть файл /secrets/jwt.hex, содержащий 32-байтный шестнадцатеричный секрет.
Использование screen для сохранения сессии
При работе на удаленном сервере (например, на облачном инстансе OVH) любое отключение от вашей SSH-сессии приведет к завершению запущенных процессов, если они не управляются с помощью таких инструментов, как screen.
Проверьте, установлен ли screen:
screen –version
Если не установлен:
sudo apt-get install screen
Настройка прав владения для /mnt/chaindata
При запуске клиентов Ethereum (Nethermind и Lighthouse) крайне важно, чтобы пользователь, выполняющий команды, имел необходимый доступ к каталогу данных. Чтобы избежать проблем с правами и сохранить безопасность, назначьте права владения ранее смонтированного каталога вашему текущему пользователю.
sudo chown $USER:$USER /mnt/chaindata
Эта команда устанавливает владельца и группу для /mnt/chaindata на текущего вошедшего пользователя. Это гарантирует, что вы (и ваши клиенты Ethereum, если они запущены от вашего пользователя) имеете полный доступ на чтение, запись и изменение файлов в этом каталоге.
Теперь мы готовы запустить как клиент исполнения, так и клиент консенсуса в отдельных сессиях screen для постоянной фоновой работы.
Запуск Nethermind (Клиент исполнения)
Шаг 1: Создайте сессию Screen
screen -S nethermind
Шаг 2: Запустите Nethermind
nethermind -c mainnet
--data-dir /mnt/chaindata/nethermind
--JsonRpc.Enabled true
--HealthChecks.Enabled true
--HealthChecks.UIEnabled true
--JsonRpc.EngineHost=127.0.0.1
--JsonRpc.EnginePort=8551
--JsonRpc.JwtSecretFile=/secrets/jwt.hex
Вы должны увидеть логи, указывающие на работу клиента. В конечном итоге появится сообщение:
Waiting for Forkchoice message from Consensus Layer
Это указывает на то, что клиент исполнения ожидает подключения клиента консенсуса.
Шаг 3: Отсоедините сессию
Нажмите: Ctrl-a, затем d, чтобы отсоединиться от сессии и вернуться в основную оболочку.
Шаг 4: Список активных сессий (опционально)
screen -ls
Чтобы позже повторно подключиться:
screen -r nethermind
Запуск Lighthouse (Клиент консенсуса)
Шаг 1: Создайте новую сессию Screen
screen -S lighthouse
Шаг 2: Запустите Lighthouse Beacon Node
lighthouse bn
--network mainnet
--execution-endpoint http://127.0.0.1:8551
--execution-jwt /secrets/jwt.hex
--checkpoint-sync-url https://mainnet.checkpoint.sigp.io
--http
--datadir /mnt/chaindata/lighthouse
После первоначальной настройки Lighthouse должен начать синхронизацию с сетью.
Шаг 3: Отсоедините сессию
Используйте ту же комбинацию клавиш: Ctrl-a, затем d.
Проверка синхронизации между EL и CL
На этом этапе и клиент исполнения (Nethermind), и клиент консенсуса (Lighthouse) должны работать в отдельных сессиях screen. Чтобы подтвердить, что они правильно подключены и синхронизация идет, снова подключитесь к сессии Nethermind и проверьте логи.
Шаг 1: Повторно подключитесь к сессии Nethermind
screen -r nethermind
Эта команда возвращает вас в сессию screen Nethermind, где вы можете наблюдать логи в реальном времени.
Шаг 2: Проверьте наличие сообщений о связи
Если Lighthouse запущен и подключен правильно, в логах Nethermind больше не должно отображаться:
Waiting for Forkchoice message from Consensus Layer
Вместо этого вы должны увидеть логи, указывающие на то, что связь через Engine API установлена и блоки обрабатываются. Ищите сообщения вроде:
Received ForkChoice: ...
Syncing...
Эти логи подтверждают, что Nethermind получает предложения блоков и обновления выбора ветви (fork choice) от Lighthouse, и что узел правильно синхронизируется с сетью Ethereum mainnet.
Заключение
И всё готово! Вы развернули полностью функциональный узел Ethereum на OVHcloud.
Хотя это руководство было сосредоточено на техническом развертывании, важно дополнить настройку надлежащими практиками обеспечения безопасности, мониторинга и обслуживания, чтобы обеспечить долгосрочную стабильность. Теперь, когда основа готова, вы можете расширять функциональность узла, интегрировать его в более крупные инфраструктуры или использовать в качестве базы для исследований, разработки и операций стейкинга.

Комментарии
Категории
Случайное

Как устроено современное

Спасательный круг в шторме лицензий:

MicroVM и Firecracker: появится ли

Распродажа Bluehost в Черную пятницу:
