OffshoreVps
Инструкции18 окт. 20268 мин чтенияАвтор: команда OffshoreVps

Как запустить узел Ethereum (Geth и Lighthouse) на VPS

Запустите пару клиентов Ethereum, исполнения и консенсуса, на Linux: секрет JWT, юниты systemd, синхронизация с контрольной точки, порты и какое железо нужно полному узлу.

После The Merge нода Ethereum состоит из двух программ, работающих вместе: клиента исполнения, который обрабатывает транзакции и состояние, и клиента консенсуса, который следует за цепочкой proof-of-stake. В этом руководстве на Linux VPS запускаются Geth (исполнение) и Lighthouse (консенсус). Та же схема работает и с другими парами клиентов.

Окно терминала на VPS с командами для запуска узла Ethereum с Geth и Lighthouse, начиная с «sudo adduser --system --group --no-create-home g»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Что нужно полной ноде

  • Диск. Это главное ограничение. Сегодня полной ноде нужно примерно от 1 до 2 ТБ быстрого хранилища NVMe, и объём растёт. Архивной ноде нужно намного больше. Перед покупкой уточните актуальные размеры в документации клиентов.
  • ОЗУ. 16 ГБ — комфортный минимум. 32 ГБ помогают при синхронизации и под нагрузкой RPC.
  • CPU. 4 ядра и больше. Скорость накопителя важнее тактовой частоты.
  • Сеть. Безлимитный трафик на быстром порту. Ноды передают много данных.

Из-за размера диска большинство людей используют для Ethereum выделенный сервер. Подобранные по размерам тарифы смотрите на странице хостинга нод Ethereum.

Шаг 1: подготовьте сервер

Используйте чистую установку Ubuntu LTS и выполните шаги из статьи как защитить новый VPS. Создайте отдельных пользователей для каждого клиента, чтобы ничто не работало от root.

sudo adduser --system --group --no-create-home geth
sudo adduser --system --group --no-create-home lighthouse
sudo mkdir -p /var/lib/geth /var/lib/lighthouse /etc/ethereum
sudo chown geth:geth /var/lib/geth
sudo chown lighthouse:lighthouse /var/lib/lighthouse

Шаг 2: создайте общий секрет JWT

Два клиента аутентифицируют друг друга с помощью общего файла-секрета.

openssl rand -hex 32 | sudo tee /etc/ethereum/jwt.hex
sudo chmod 640 /etc/ethereum/jwt.hex
sudo chgrp geth /etc/ethereum/jwt.hex
sudo usermod -aG geth lighthouse
Шаги этого руководства по порядку: 1. Что нужно полному узлу; 2. подготовьте сервер; 3. создайте общий секрет JWT; 4. установите и запустите Lighthouse; 5. запустите и следите за синхронизацией; 6. Брандмауэр и порты
Шаги этого руководства по порядку.

Шаг 3: установите и запустите Geth

Скачайте стабильный релиз со страницы загрузок Geth или воспользуйтесь репозиторием пакетов проекта и проверьте его. Затем создайте файл /etc/systemd/system/geth.service:

[Unit]
Description=Geth
After=network-online.target

[Service]
User=geth
ExecStart=/usr/local/bin/geth \
  --mainnet \
  --datadir /var/lib/geth \
  --authrpc.jwtsecret /etc/ethereum/jwt.hex \
  --http --http.addr 127.0.0.1 --http.api eth,net,web3
Restart=on-failure
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Привязка HTTP к 127.0.0.1 сохраняет RPC приватным. Никогда не открывайте его напрямую в интернет.

Шаг 4: установите и запустите Lighthouse

[Unit]
Description=Lighthouse beacon node
After=geth.service

[Service]
User=lighthouse
ExecStart=/usr/local/bin/lighthouse bn \
  --network mainnet \
  --datadir /var/lib/lighthouse \
  --execution-endpoint http://127.0.0.1:8551 \
  --execution-jwt /etc/ethereum/jwt.hex \
  --checkpoint-sync-url https://mainnet.checkpoint.sigp.io
Restart=on-failure

[Install]
WantedBy=multi-user.target

Checkpoint sync позволяет клиенту консенсуса стартовать с недавнего доверенного состояния, так что он готов через несколько минут, а не дней. Прежде чем полагаться на URL контрольной точки, сверьте его с документацией клиента.

Шаг 5: запустите и наблюдайте за синхронизацией

sudo systemctl enable --now geth lighthouse
journalctl -u geth -f
curl -s -X POST -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545

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

Файрвол и порты

Разрешите порты одноранговой сети (по умолчанию 30303 TCP/UDP для Geth и 9000 TCP/UDP для Lighthouse), чтобы у вас было хорошее число пиров. Держите 8545, 8551 и 5052 закрытыми для публичного интернета.