bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Налаштування вузла валі

calendar_month Jun 21, 2026 schedule 25 хв. читання visibility 24 переглядів
Настройка Ethereum Validator Node на VPS: запуск клиента, безопасность и мониторинг
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Налаштування Ethereum Validator Node на VPS: запуск клієнта, безпека та моніторинг

TL;DR

У цьому посібнику ми покроково налаштуємо валідатор Ethereum на віртуальному або виділеному сервері, використовуючи популярні клієнти Geth (для виконання) та Prysm (для консенсусу та валідації). Ви дізнаєтеся, як підготувати сервер, встановити необхідне ПЗ, забезпечити його безпеку та налаштувати базовий моніторинг, щоб ваш валідатор стабільно працював у мережі Ethereum.

  • Підготовка Linux-сервера з посиленою безпекою (SSH, UFW, Fail2ban).
  • Встановлення та налаштування клієнта виконання Geth для синхронізації блокчейну.
  • Встановлення та налаштування клієнта консенсусу Prysm Beacon Chain.
  • Налаштування клієнта валідатора Prysm для участі в Proof-of-Stake.
  • Забезпечення базової безпеки та стратегії обслуговування ноди.
  • Рекомендації щодо вибору VPS-конфігурації та вирішення типових проблем.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

Ethereum перейшов на механізм консенсусу Proof-of-Stake (PoS) у рамках оновлення The Merge, що кардинально змінило спосіб підтвердження транзакцій та створення нових блоків. Тепер замість майнерів, які використовують обчислювальну потужність (Proof-of-Work), мережа підтримується валідаторами, які "стейкають" 32 ETH як заставу. Валідатори відповідають за перевірку транзакцій, створення нових блоків та голосування за правильність стану блокчейну.

Налаштування власного валідатора Ethereum на VPS або виділеному сервері дозволяє вам активно брати участь у децентралізації мережі, отримувати винагороди за свою роботу та мати повний контроль над своїми коштами. Запуск валідатора — це не тільки спосіб отримання пасивного доходу, а й важливий внесок у безпеку та стійкість Ethereum. Ви будете частиною глобальної мережі, яка забезпечує функціонування тисяч децентралізованих застосунків (dApps), DeFi-протоколів та NFT-маркетплейсів.

У підсумку читач отримає повністю функціональний валідатор Ethereum, здатний синхронізуватися з мережею, атестувати блоки та пропонувати нові, тим самим заробляючи винагороди. Цей процес включає встановлення двох основних типів клієнтів: клієнта виконання (Execution Client), який обробляє транзакції та керує станом Ethereum Virtual Machine (EVM), та клієнта консенсусу (Consensus Client), який відповідає за логіку Proof-of-Stake, включаючи атестації та пропозиції блоків.

Існують альтернативи самостійному розміщенню валідатора (self-hosted):

  • Staking-as-a-Service (SaaS): Сервіси, які керують валідатором за вас, вимагаючи лише внесення 32 ETH. Зручно, але ви довіряєте ключі валідатора третій стороні та сплачуєте комісію.
  • Централізовані біржі: Багато бірж пропонують послуги стейкінгу, дозволяючи стейкати навіть менше 32 ETH. Це найбільш централізований варіант, при якому ви повністю довіряєте свої активи біржі та втрачаєте контроль над ключами.
  • Пул-стейкінг: Децентралізовані протоколи, такі як Lido або Rocket Pool, дозволяють стейкати будь-яку кількість ETH, отримуючи натомість ліквідні токени стейкінгу. Ви не запускаєте свій валідатор, але берете участь у його підтримці через пул.

Чому self-hosted на VPS є кращим для нашої цільової аудиторії? Самостійне розміщення на VPS або виділеному сервері забезпечує максимальний контроль, безпеку та приватність. Ви повністю володієте своїми ключами валідатора, не сплачуєте комісій третім сторонам (окрім вартості VPS) і безпосередньо сприяєте децентралізації мережі. Це ідеальний вибір для тих, хто цінує суверенітет над своїми активами та хоче глибоко розуміти інфраструктуру Ethereum.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Вибір правильної конфігурації сервера є критично важливим для стабільної та ефективної роботи валідатора Ethereum. Нода вимагає значних ресурсів, особливо дискового простору та швидкості введення-виведення (I/O).

Мінімальні вимоги (актуально на 2026 рік):

  • CPU: Мінімум 4 ядра (vCPU) з тактовою частотою від 2.5 ГГц. Валідатори активно використовують процесор під час синхронізації та обробки блоків.
  • RAM: Мінімум 16 ГБ оперативної пам'яті. 32 ГБ — настійно рекомендується для забезпечення стабільності та запобігання уповільненням, особливо при використанні кількох клієнтів або моніторингу.
  • Диск:
    • Тип: Тільки NVMe SSD. Швидкість читання/запису критично важлива для синхронізації блокчейну та атестацій. SATA SSD може бути занадто повільним.
    • Об'єм: Мінімум 2 ТБ. Блокчейн Ethereum постійно зростає. Для повного вузла (Geth) на 2026 рік може знадобитися 1.5+ ТБ, плюс запас для зростання та операційної системи. 3 ТБ — оптимально для довгострокової перспективи.
    • I/O: Висока швидкість I/O (мінімум 2000 IOPS для читання/запису).
  • Мережа:
    • Швидкість: Порт 1 Гбіт/с.
    • Трафік: Нелімітований або з великим запасом (мінімум 2-3 ТБ/місяць). Синхронізація та постійна робота ноди генерують значний мережевий трафік.

Конкретний VPS-план для завдання:

Для запуску Ethereum валідатора рекомендується обирати VPS-план з такими характеристиками:

  • CPU: 6-8 vCPU, 3.0+ ГГц
  • RAM: 32 ГБ
  • Диск: 2-3 ТБ NVMe SSD
  • Мережа: 1 Гбіт/с порт, нелімітований трафік

Подібний VPS із зазначеними характеристиками забезпечить стабільність та продуктивність вашого валідатора на довгі роки. Якщо ви плануєте запускати кілька валідаторів або інші ресурсомісткі сервіси, варто розглянути більш потужні конфігурації.

Коли потрібен dedicated, а не VPS:

Виділений сервер (dedicated server) може бути кращим у таких випадках:

  • Багато валідаторів: Якщо ви керуєте десятками або сотнями валідаторів.
  • Максимальна продуктивність та контроль: Dedicated сервери пропонують передбачувану продуктивність без "сусідства" з іншими користувачами, повний контроль над апаратним забезпеченням.
  • Специфічні вимоги до обладнання: Наприклад, використання апаратних модулів безпеки (HSM) для ключів валідатора, що рідко доступно на VPS.
  • Додаткові сервіси: Якщо ви плануєте розміщувати на тому ж сервері інші ресурсомісткі блокчейн-сервіси, ноди інших мереж або великі бази даних.

У більшості випадків для одного-двох валідаторів добре налаштований VPS достатній, але при масштабуванні або якщо потрібна максимальна надійність та продуктивність, відповідний dedicated може стати кращим вибором.

Локація: на що впливає

Вибір географічної локації сервера впливає на кілька факторів:

  • Законодавство: Юрисдикція, в якій знаходиться сервер, може впливати на правові аспекти володіння та управління криптовалютними активами.
  • Затримка (Latency): Низька затримка до інших вузлів мережі Ethereum важлива для своєчасної відправки атестацій та пропозицій блоків. Обирайте локацію з хорошим пірингом до основних інтернет-магістралей та великих центрів обробки даних.
  • Ціна: Вартість VPS може варіюватися залежно від регіону.
  • Доступність: Деякі регіони можуть мати кращу доступність та надійність інфраструктури.

Зазвичай рекомендується обирати локацію у великому європейському або північноамериканському дата-центрі для оптимальної мережевої взаємодії з рештою мережі Ethereum.

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перед встановленням клієнтів Ethereum необхідно виконати базове налаштування та посилення безпеки вашого сервера. Ми будемо використовувати Ubuntu Server 24.04 LTS (актуально на 2026 рік) як операційну систему.

1. Оновлення системи

Насамперед оновіть усі пакети до актуальних версій.


sudo apt update && sudo apt upgrade -y

Ця команда оновлює список пакетів та встановлює всі доступні оновлення без запиту підтвердження.

2. Створення нового користувача з правами sudo

Не рекомендується працювати під обліковим записом root безпосередньо. Створіть нового користувача та додайте його до групи sudo.


sudo adduser validator_user

Дотримуйтесь інструкцій для створення пароля та введення інформації про користувача. Потім додайте користувача до групи sudo:


sudo usermod -aG sudo validator_user

Тепер ви можете увійти як validator_user та виконувати команди з sudo.

3. Налаштування автентифікації за SSH-ключами

Це значно безпечніше, ніж використання паролів. Згенеруйте SSH-ключ на вашій локальній машині (якщо у вас його ще немає):


ssh-keygen -t ed25519 -C "[email protected]"

Потім скопіюйте публічний ключ на сервер для validator_user. Замініть your_public_key_file на шлях до вашого публічного ключа (зазвичай ~/.ssh/id_ed25519.pub) та your_server_ip на IP вашого сервера:


ssh-copy-id -i ~/.ssh/id_ed25519.pub validator_user@your_server_ip

Якщо ssh-copy-id недоступний, ви можете зробити це вручну:


# Увійдіть на сервер як validator_user
ssh validator_user@your_server_ip

# Створіть директорію .ssh та файл authorized_keys, якщо їх немає
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Вставте ваш публічний SSH-ключ (який ви скопіювали з локальної машини) у файл authorized_keys
# Ви можете використовувати nano або vim:
nano ~/.ssh/authorized_keys
# Вставте ключ та збережіть (Ctrl+X, Y, Enter для nano)

# Вийдіть із сервера
exit

Тепер спробуйте увійти на сервер як validator_user без пароля.

4. Відключення автентифікації за паролем для SSH (опціонально, але рекомендується)

Після того як ви переконалися, що вхід за SSH-ключами працює, відключіть автентифікацію за паролем у конфігурації SSH.


sudo nano /etc/ssh/sshd_config

Знайдіть наступні рядки та переконайтеся, що вони встановлені так:


PasswordAuthentication no
PermitRootLogin no

Збережіть зміни та перезапустіть службу SSH:


sudo systemctl restart sshd

Важливо: Переконайтеся, що ви можете увійти за SSH-ключем, перш ніж відключати парольну автентифікацію, інакше ви можете втратити доступ до сервера.

5. Налаштування брандмауера (UFW)

UFW (Uncomplicated Firewall) — це зручний інтерфейс для керування iptables. Налаштуйте його, щоб дозволити тільки необхідний трафік.


sudo apt install ufw -y              # Встановлення UFW
sudo ufw default deny incoming       # Заборонити весь вхідний трафік за замовчуванням
sudo ufw default allow outgoing      # Дозволити весь вихідний трафік за замовчуванням

sudo ufw allow ssh                   # Дозволити вхідний трафік SSH (порт 22)

Для клієнтів Ethereum нам знадобляться наступні порти:

  • Execution Client (Geth): TCP/UDP 30303 (P2P), TCP 8545 (RPC), TCP 8546 (WebSocket).
  • Consensus Client (Prysm Beacon): TCP/UDP 12000 (P2P), TCP 3500 (gRPC).
  • Consensus Client (Prysm Validator): Не потребує відкритих портів ззовні, спілкується з Beacon Client локально.

Додайте правила для цих портів:


# Geth
sudo ufw allow 30303/tcp             # P2P TCP
sudo ufw allow 30303/udp             # P2P UDP
sudo ufw allow 8545/tcp              # RPC (тільки якщо потрібне зовнішнє підключення, інакше тільки localhost)
sudo ufw allow 8546/tcp              # WebSocket (тільки якщо потрібне зовнішнє підключення)

# Prysm Beacon Chain
sudo ufw allow 12000/tcp             # P2P TCP
sudo ufw allow 12000/udp             # P2P UDP
sudo ufw allow 3500/tcp              # gRPC (тільки якщо потрібне зовнішнє підключення)

Активуйте UFW:


sudo ufw enable

Перевірте статус UFW:


sudo ufw status verbose

6. Встановлення Fail2ban

Fail2ban захищає сервер від атак методом підбору паролів, блокуючи IP-адреси, з яких надходять численні невдалі спроби входу.


sudo apt install fail2ban -y         # Встановлення Fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Створення локальної копії конфігу
sudo nano /etc/fail2ban/jail.local   # Редагування конфігу

У файлі jail.local знайдіть секцію [sshd] та переконайтеся, що вона увімкнена (enabled = true). Можете налаштувати bantime (час блокування) та findtime (період, за який рахуються невдалі спроби).


[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Збережіть зміни та перезапустіть Fail2ban:


sudo systemctl restart fail2ban
sudo systemctl enable fail2ban       # Увімкнути автозапуск при завантаженні

Ваш сервер тепер готовий до встановлення клієнтів Ethereum.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Ми будемо встановлювати два ключові компоненти: клієнт виконання (Execution Client) та клієнт консенсусу (Consensus Client), а також клієнт валідатора. В якості клієнтів оберемо Geth (Go-Ethereum) та Prysm, як одні з найпопулярніших та найстабільніших.

1. Підготовка середовища для клієнтів

Створимо окремих системних користувачів для кожного клієнта для кращої ізоляції та безпеки. Також створимо директорії для даних.


# Створення користувача та директорій для Geth (Execution Client)
sudo adduser --system --no-create-home --group execution
sudo mkdir -p /var/lib/ethereum/execution
sudo chown -R execution:execution /var/lib/ethereum/execution

# Створення користувача та директорій для Prysm (Consensus Client)
sudo adduser --system --no-create-home --group consensus
sudo mkdir -p /var/lib/ethereum/consensus
sudo chown -R consensus:consensus /var/lib/ethereum/consensus

2. Встановлення Execution Client (Geth)

Geth — це один з найпоширеніших клієнтів виконання. На 2026 рік будемо використовувати стабільну версію, наприклад, v1.14.x.

2.1. Завантаження Geth

Завантажимо останню стабільну версію Geth з офіційного репозиторію GitHub. Перевірте актуальну версію на сторінці релізів Geth.


# Перейдіть до тимчасової директорії
cd /tmp

# Завантажте архів з бінарними файлами Geth (замініть версію на актуальну для 2026 року, наприклад, 1.14.1)
# Приклад: wget https://github.com/ethereum/go-ethereum/releases/download/v1.14.1/geth-linux-amd64-1.14.1-e737c04a.tar.gz
wget https://geth.ethereum.org/downloads/geth-linux-amd64-latest.tar.gz -O geth.tar.gz

# Розпакуйте архів
tar -xvf geth.tar.gz

# Перемістіть виконуваний файл до /usr/local/bin
sudo mv geth-linux-amd64-/geth /usr/local/bin/geth

# Перевірте версію Geth
geth version
2.2. Створення JWT-ключа

Для безпечної взаємодії між клієнтом виконання та клієнтом консенсусу використовується JWT-токен. Згенеруємо його.


sudo mkdir -p /var/lib/ethereum/jwt
sudo openssl rand -hex 32 | sudo tee /var/lib/ethereum/jwt/jwtsecret.txt
sudo chmod 600 /var/lib/ethereum/jwt/jwtsecret.txt
sudo chown -R execution:execution /var/lib/ethereum/jwt
sudo chown -R consensus:consensus /var/lib/ethereum/jwt

Ця команда створює файл jwtsecret.txt з 64-символьним шістнадцятковим ключем та встановлює правильні дозволи та власників.

2.3. Створення Systemd сервісу для Geth

Створимо юніт-файл Systemd для автоматичного запуску та керування Geth.


sudo nano /etc/systemd/system/geth.service

Вставте наступний вміст:


[Unit]
Description=Geth Ethereum Execution Client
After=network.target

[Service]
User=execution
Group=execution
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
  --mainnet \
  --datadir /var/lib/ethereum/execution \
  --authrpc.addr 127.0.0.1 \
  --authrpc.port 8551 \
  --authrpc.jwtsecret /var/lib/ethereum/jwt/jwtsecret.txt \
  --http \
  --http.addr 127.0.0.1 \
  --http.port 8545 \
  --http.api eth,net,web3,admin,debug,txpool \
  --ws \
  --ws.addr 127.0.0.1 \
  --ws.port 8546 \
  --syncmode "snap" \
  --cache 16000 \
  --maxpeers 50 \
  --nat extip:$(curl -s ifconfig.me)

[Install]
WantedBy=multi-user.target

Пояснення до параметрів Geth:

  • --mainnet: Підключається до основної мережі Ethereum.
  • --datadir: Вказує шлях до директорії, де зберігатимуться дані блокчейну.
  • --authrpc.addr 127.0.0.1 --authrpc.port 8551 --authrpc.jwtsecret /var/lib/ethereum/jwt/jwtsecret.txt: Налаштовує захищений RPC-інтерфейс для взаємодії з клієнтом консенсусу. Доступний лише локально.
  • --http --http.addr 127.0.0.1 --http.port 8545 --http.api eth,net,web3: Вмикає HTTP RPC-інтерфейс, доступний лише локально.
  • --ws --ws.addr 127.0.0.1 --ws.port 8546: Вмикає WebSocket RPC-інтерфейс, доступний лише локально.
  • --syncmode "snap": Використовує режим "snap sync" для швидкої синхронізації.
  • --cache 16000: Виділяє 16 ГБ RAM для кешу Geth (рекомендується 16 ГБ для 32 ГБ ОЗУ).
  • --maxpeers 50: Встановлює максимальну кількість пірів.
  • --nat extip:$(curl -s ifconfig.me): Автоматично визначає зовнішню IP-адресу для NAT.

Збережіть файл та перезавантажте Systemd, потім запустіть Geth:


sudo systemctl daemon-reload           # Перезавантажити конфігурацію Systemd
sudo systemctl enable geth             # Увімкнути автозапуск Geth
sudo systemctl start geth              # Запустити Geth

Перевірте статус Geth:


sudo systemctl status geth

Ви також можете стежити за логами Geth:


sudo journalctl -f -u geth --no-hostname

Geth почне синхронізацію блокчейну, що може зайняти від кількох годин до кількох днів залежно від швидкості диска та мережі.

3. Встановлення Consensus Client (Prysm)

Prysm — це клієнт консенсусу, який реалізує логіку Proof-of-Stake та взаємодіє з Geth.

3.1. Завантаження Prysm

Завантажимо останню стабільну версію Prysm з офіційного репозиторію GitHub. На 2026 рік це може бути версія v5.x.x.


# Перейдіть до тимчасової директорії
cd /tmp

# Завантажте інсталяційний скрипт Prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh
chmod +x prysm.sh

# Запустіть скрипт для завантаження бінарних файлів (beacon-chain та validator)
./prysm.sh beacon-chain generate-config
./prysm.sh validator generate-config

# Перемістіть бінарні файли до /usr/local/bin
sudo mv beacon-chain /usr/local/bin/beacon-chain
sudo mv validator /usr/local/bin/validator

# Перевірте версії
beacon-chain --version
validator --version
3.2. Створення Systemd сервісу для Prysm Beacon Chain

Створимо юніт-файл Systemd для Prysm Beacon Chain.


sudo nano /etc/systemd/system/prysm-beacon.service

Вставте наступний вміст:


[Unit]
Description=Prysm Beacon Chain Consensus Client
After=network.target geth.service
Requires=geth.service

[Service]
User=consensus
Group=consensus
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/beacon-chain \
  --datadir /var/lib/ethereum/consensus \
  --mainnet \
  --execution-endpoint http://127.0.0.1:8551 \
  --jwt-secret /var/lib/ethereum/jwt/jwtsecret.txt \
  --suggested-fee-recipient YOUR_ETH_ADDRESS \
  --p2p-host-ip $(curl -s ifconfig.me) \
  --monitoring-host 127.0.0.1 \
  --monitoring-port 8080 \
  --grpc-gateway-host 127.0.0.1 \
  --grpc-gateway-port 3500 \
  --checkpoint-sync-url https://sync.prylabs.network

[Install]
WantedBy=multi-user.target

Обов'язково замініть YOUR_ETH_ADDRESS на вашу власну Ethereum-адресу, куди надсилатимуться комісії за блоки (MEV та транзакційні збори).

Пояснення до параметрів Prysm Beacon Chain:

  • --datadir: Шлях до директорії для даних клієнта консенсусу.
  • --mainnet: Підключається до основної мережі Ethereum.
  • --execution-endpoint http://127.0.0.1:8551 --jwt-secret /var/lib/ethereum/jwt/jwtsecret.txt: Вказує, як підключатися до Geth через захищений RPC.
  • --suggested-fee-recipient YOUR_ETH_ADDRESS: Адреса для отримання комісій за блоки.
  • --p2p-host-ip $(curl -s ifconfig.me): Автоматично визначає зовнішню IP для P2P.
  • --monitoring-host 127.0.0.1 --monitoring-port 8080: Вмикає метрики для Prometheus (доступні локально).
  • --grpc-gateway-host 127.0.0.1 --grpc-gateway-port 3500: Вмикає gRPC Gateway (доступний локально).
  • --checkpoint-sync-url https://sync.prylabs.network: Використовує checkpoint sync для швидкого старту (рекомендується для нових нод).

Збережіть файл та перезавантажте Systemd, потім запустіть Prysm Beacon Chain:


sudo systemctl daemon-reload
sudo systemctl enable prysm-beacon
sudo systemctl start prysm-beacon

Перевірте статус та логи Prysm Beacon Chain:


sudo systemctl status prysm-beacon
sudo journalctl -f -u prysm-beacon --no-hostname

Prysm Beacon Chain почне синхронізацію, використовуючи дані від Geth і, якщо налаштовано, checkpoint sync. Цей процес також може зайняти значний час.

4. Встановлення Validator Client (Prysm)

Клієнт валідатора відповідає за підписання атестацій та пропозицій блоків з використанням ваших валідаторних ключів. Ключі валідатора повинні бути згенеровані та депоновані через офіційний Ethereum Launchpad. Ніколи не генеруйте ключі на сервері, якщо він не повністю ізольований та захищений.

4.1. Імпорт ключів валідатора

Після того, як ви згенерували ключі валідатора на своєму локальному комп'ютері (за допомогою Ethereum Launchpad або інструментів типу ethdo) та завершили процес депонування 32 ETH, у вас буде файл validator_keys (зазвичай у форматі ZIP або JSON). Вам потрібно перенести його на сервер.


# Створіть директорію для ключів валідатора
sudo mkdir -p /var/lib/ethereum/validator/keys
sudo chown -R consensus:consensus /var/lib/ethereum/validator

# Скопіюйте файл validator_keys.zip з локальної машини на сервер (замініть на свої дані)
# scp /path/to/your/validator_keys.zip validator_user@your_server_ip:/tmp/validator_keys.zip

# На сервері, увійдіть як validator_user, потім переключіться на користувача consensus для розпакування
sudo -u consensus bash
cd /tmp
unzip validator_keys.zip -d /var/lib/ethereum/validator/keys/
exit # Повернутися до validator_user

# Встановіть правильні права доступу
sudo chown -R consensus:consensus /var/lib/ethereum/validator/keys
sudo chmod -R 700 /var/lib/ethereum/validator/keys

Вам також потрібно буде ввести паролі для кожного ключа валідатора. Prysm надає інтерактивний імпорт.


sudo -u consensus /usr/local/bin/validator accounts import --wallet-dir=/var/lib/ethereum/validator/wallet --keys-dir=/var/lib/ethereum/validator/keys

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

4.2. Створення Systemd сервісу для Prysm Validator

Створимо юніт-файл Systemd для Prysm Validator.


sudo nano /etc/systemd/system/prysm-validator.service

Вставте наступний вміст:


[Unit]
Description=Prysm Validator Client
After=network.target prysm-beacon.service
Requires=prysm-beacon.service

[Service]
User=consensus
Group=consensus
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/validator \
  --datadir /var/lib/ethereum/validator \
  --beacon-rpc-provider 127.0.0.1:4000 \
  --wallet-dir=/var/lib/ethereum/validator/wallet \
  --wallet-password-file=/var/lib/ethereum/validator/wallet-password.txt \
  --monitoring-host 127.0.0.1 \
  --monitoring-port 8081

[Install]
WantedBy=multi-user.target

Важливо: Вам потрібно створити файл /var/lib/ethereum/validator/wallet-password.txt, що містить пароль до вашого Prysm-гаманця. Цей файл має бути захищений.


sudo nano /var/lib/ethereum/validator/wallet-password.txt
# Вставте пароль Prysm-гаманця, який ви задали під час імпорту ключів
# Збережіть та закрийте
sudo chmod 600 /var/lib/ethereum/validator/wallet-password.txt
sudo chown consensus:consensus /var/lib/ethereum/validator/wallet-password.txt

Пояснення до параметрів Prysm Validator:

  • --datadir: Шлях до директорії для даних клієнта валідатора.
  • --beacon-rpc-provider 127.0.0.1:4000: Вказує, як підключатися до локального Prysm Beacon Chain.
  • --wallet-dir: Шлях до директорії, де зберігаються дані гаманця Prysm.
  • --wallet-password-file: Шлях до файлу з паролем гаманця.
  • --monitoring-host 127.0.0.1 --monitoring-port 8081: Вмикає метрики для Prometheus (доступні локально).

Збережіть файл та перезавантажте Systemd, потім запустіть Prysm Validator:


sudo systemctl daemon-reload
sudo systemctl enable prysm-validator
sudo systemctl start prysm-validator

Перевірте статус та логи Prysm Validator:


sudo systemctl status prysm-validator
sudo journalctl -f -u prysm-validator --no-hostname

Після успішного запуску всіх трьох компонентів (Geth, Prysm Beacon, Prysm Validator) ваш валідатор почне синхронізацію і, як тільки буде активний у мережі Ethereum, почне виконувати свої функції та заробляти нагороди.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

У попередньому розділі ми вже налаштували основні параметри клієнтів через Systemd-сервіси. Тут ми заглибимося в деякі важливі аспекти конфігурації, безпеки та перевірки.

1. Управління JWT-секретом

JWT-секрет (jwtsecret.txt) є критично важливим для безпечної взаємодії між Geth і Prysm. Він дозволяє клієнту консенсусу авторизуватися для запитів до клієнта виконання. Ми вже створили його в /var/lib/ethereum/jwt/jwtsecret.txt з правильними дозволами (chmod 600) та власниками (execution:execution і consensus:consensus).

Ніколи не діліться цим файлом і не відкривайте його для доступу ззовні.

2. Конфігурація Systemd сервісів

Ми використовували Systemd для управління клієнтами. Ось основні параметри, які ви можете змінити або перевірити:

  • User і Group: Визначають користувача та групу, під якими запускається сервіс. Це важливо для безпеки.
  • Restart=always: Гарантує, що сервіс буде автоматично перезапущений у разі збою.
  • RestartSec=5: Затримка в 5 секунд перед перезапуском.
  • ExecStart: Основна команда запуску клієнта з його параметрами.
  • After і Requires: Вказують залежності. Наприклад, prysm-beacon.service запускається після geth.service і вимагає його роботи.

Для зміни параметрів Systemd-сервісу завжди використовуйте sudo systemctl daemon-reload після редагування файлу .service, а потім sudo systemctl restart .

3. TLS/HTTPS для зовнішнього доступу (опціонально)

Валідаторні клієнти Ethereum зазвичай не потребують прямого зовнішнього доступу через HTTP/HTTPS, оскільки вони спілкуються з мережею через P2P-протоколи та з клієнтом виконання локально. Однак, якщо ви вирішите налаштувати зовнішній доступ до API Geth (наприклад, для віддаленого моніторингу або взаємодії з вашим гаманцем), наполегливо рекомендується використовувати зворотний проксі з TLS/HTTPS.

Ми не будемо детально налаштовувати це тут, але ось загальна ідея з Caddy:


# Установка Caddy (актуально для 2026 года)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

# Пример Caddyfile для проксирования Geth RPC (если бы он был доступен извне)
# sudo nano /etc/caddy/Caddyfile
#
# your.domain.com {
#   reverse_proxy 127.0.0.1:8545
#   tls [email protected]
# }
#
# sudo systemctl restart caddy

Увага: Відкриття RPC-портів Geth або Prysm для зовнішнього доступу без належної автентифікації та TLS/HTTPS є серйозною загрозою безпеці. Завжди використовуйте 127.0.0.1 для адрес RPC/API, якщо не потрібен зовнішній доступ через захищений проксі.

4. Перевірка працездатності

Після запуску всіх сервісів переконайтеся, що вони працюють коректно.

4.1. Перевірка Geth

Перевірте статус сервісу:


sudo systemctl status geth

Перевірте логи:


sudo journalctl -f -u geth --no-hostname

Переконайтеся, що Geth синхронізується. У логах повинні бути повідомлення типу "Imported new chain segment". Ви також можете перевірити поточний блок:


curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8545

Ця команда повинна повернути поточний номер блоку в шістнадцятковому форматі.

4.2. Перевірка Prysm Beacon Chain

Перевірте статус сервісу:


sudo systemctl status prysm-beacon

Перевірте логи:


sudo journalctl -f -u prysm-beacon --no-hostname

У логах ви повинні бачити повідомлення про синхронізацію з мережею, пошук пірів та підключення до Geth. Переконайтеся, що Prysm успішно підключається до Geth ("Connected to execution client").

4.3. Перевірка Prysm Validator

Перевірте статус сервісу:


sudo systemctl status prysm-validator

Перевірте логи:


sudo journalctl -f -u prysm-validator --no-hostname

Після повної синхронізації Beacon Chain та активації вашого валідатора в мережі, ви побачите повідомлення про виконання атестацій ("Attested block") і, можливо, пропозицій блоків ("Proposed block"). Також переконайтеся, що валідатор успішно підключається до Beacon Chain.

Для повної перевірки стану валідатора можна використовувати команду Prysm:


sudo -u consensus /usr/local/bin/validator accounts list --wallet-dir=/var/lib/ethereum/validator/wallet

Ця команда покаже список ваших валідаторів та їх статус.

Резервні копії та обслуговування

Схема: Резервні копії та обслуговування
Схема: Резервні копії та обслуговування

Правильна стратегія резервного копіювання та регулярне обслуговування є ключем до довгострокової стабільності та безпеки вашого валідатора Ethereum. Важливо розуміти, що саме потрібно резервувати, а що — ні.

1. Що резервувати

  • Ключі валідатора (Validator Keys): Це найкритичніше. Ваші ключі валідатора — це ваш доступ до застейканих 32 ETH. Вони повинні бути згенеровані в безпечному офлайн-середовищі (наприклад, на окремому комп'ютері без доступу до інтернету) і зберігатися в кількох надійних місцях. Ніколи не зберігайте єдину копію ключів на сервері. Файли, які ви імпортували в клієнт Prysm (/var/lib/ethereum/validator/keys і /var/lib/ethereum/validator/wallet), є вашою робочою копією. Оригінальні ключі, згенеровані вами, повинні зберігатися окремо.
  • Конфігураційні файли клієнтів: Це файли geth.service, prysm-beacon.service, prysm-validator.service з /etc/systemd/system/. Вони містять параметри запуску ваших клієнтів.
  • JWT-секрет: Файл /var/lib/ethereum/jwt/jwtsecret.txt. Він необхідний для взаємодії між клієнтами.
  • Файл пароля гаманця Prysm: /var/lib/ethereum/validator/wallet-password.txt.

Що НЕ потрібно резервувати:

  • Дані блокчейну (Geth і Prysm): Директорії /var/lib/ethereum/execution і /var/lib/ethereum/consensus. Ці дані займають терабайти і можуть бути заново синхронізовані з нуля, якщо буде потрібно. Резервувати їх непрактично та неефективно.

2. Простий скрипт авторезервування

Створимо простий скрипт для резервування конфігураційних файлів та JWT-секрету. Ключі валідатора повинні бути зарезервовані вручну та зберігатися в максимально безпечному місці, не на цьому ж VPS.


sudo mkdir -p /opt/backup_scripts
sudo nano /opt/backup_scripts/backup_configs.sh

Вставте наступний вміст:


#!/bin/bash
BACKUP_DIR="/tmp/validator_config_backup_$(date +%Y%m%d%H%M%S)"
CONFIG_FILES=(
    "/etc/systemd/system/geth.service"
    "/etc/systemd/system/prysm-beacon.service"
    "/etc/systemd/system/prysm-validator.service"
    "/var/lib/ethereum/jwt/jwtsecret.txt"
    "/var/lib/ethereum/validator/wallet-password.txt"
)

mkdir -p "$BACKUP_DIR"

for file in "${CONFIG_FILES[@]}"; do
    if [ -f "$file" ]; then
        cp "$file" "$BACKUP_DIR/"
        echo "Backed up: $file"
    else
        echo "Warning: File not found: $file"
    fi
done

# Архивируем и сжимаем
tar -czvf "$BACKUP_DIR.tar.gz" -C "$(dirname "$BACKUP_DIR")" "$(basename "$BACKUP_DIR")"
echo "Backup created: "$BACKUP_DIR.tar.gz""

# Очистка временной директории
rm -rf "$BACKUP_DIR"

# Теперь вы можете скопировать "$BACKUP_DIR.tar.gz" на внешнее хранилище
# Например, scp "$BACKUP_DIR.tar.gz" user@remote_host:/path/to/backups/

Зробіть скрипт виконуваним:


sudo chmod +x /opt/backup_scripts/backup_configs.sh

3. Куди складати резервні копії

Резервні копії не повинні зберігатися на тому ж сервері, що й оригінальні дані. Рекомендовані місця для зберігання:

  • Зовнішнє S3-сумісне сховище: Хмарні сховища типу Amazon S3, DigitalOcean Spaces, Backblaze B2. Ви можете використовувати утиліти типу s3cmd або rclone для автоматичного завантаження.
  • Окремий VPS: Недорогий VPS в іншій локації, куди ви можете копіювати резервні копії по SSH (використовуючи scp або rsync).
  • Локальний комп'ютер/NAS: Якщо у вас є надійне локальне сховище з резервуванням.

Додайте команду для копіювання архіву на зовнішнє сховище в кінець скрипта backup_configs.sh. Наприклад, для SSH:


# Внутри скрипта backup_configs.sh, после строки rm -rf "$BACKUP_DIR"
# scp "$BACKUP_DIR.tar.gz" user@remote_host:/path/to/backups/
# rm "$BACKUP_DIR.tar.gz" # Удалить локальную копию после успешной загрузки

4. Автоматизація резервування з Cron

Налаштуйте Cron для щоденного або щотижневого запуску скрипта резервування.


sudo crontab -e

Додайте наступний рядок для щоденного резервування о 03:00 ночі:


0 3 * * * /opt/backup_scripts/backup_configs.sh >> /var/log/validator_backup.log 2>&1

Ця команда запускатиме скрипт щодня о 03:00 і перенаправлятиме вивід у лог-файл.

5. Оновлення: rolling vs maintenance window

Регулярні оновлення клієнтів Ethereum та операційної системи критично важливі для безпеки та продуктивності. Завжди стежте за оголошеннями розробників клієнтів (Geth, Prysm) про нові версії.

  • Оновлення клієнтів Ethereum:
    • Важливість: Оновлюйтесь якомога швидше після виходу критичних оновлень (безпека, виправлення багів, важливі зміни протоколу).
    • Процес: Зазвичай це завантаження нової версії бінарного файлу, заміна старого, і перезапуск Systemd-сервісу.
      
      sudo systemctl stop geth prysm-beacon prysm-validator
      # Загрузите новые бинарники Geth, beacon-chain, validator в /tmp
      # sudo mv /tmp/new_geth /usr/local/bin/geth
      # sudo mv /tmp/new_beacon-chain /usr/local/bin/beacon-chain
      # sudo mv /tmp/new_validator /usr/local/bin/validator
      sudo systemctl start geth prysm-beacon prysm-validator
      
    • "Maintenance Window": Для важливих оновлень, можливо, знадобиться невелике "вікно обслуговування" (кілька хвилин простою), щоб уникнути проблем. Слідкуйте за рекомендаціями розробників.
    • "Rolling Updates": Деякі оновлення можуть бути "rolling", тобто ви можете оновлювати клієнтів по черзі, мінімізуючи простій.
  • Оновлення операційної системи:
    • Регулярно запускайте sudo apt update && sudo apt upgrade -y.
    • Для оновлень ядра або важливих системних компонентів може знадобитися перезавантаження сервера (sudo reboot). Плануйте це на час найменшої активності.

Важливо: Завжди читайте release notes перед оновленням і перевіряйте сумісність версій клієнта виконання та клієнта консенсусу. Переконайтеся, що у вас є резервна копія конфігурації перед значними змінами.

Усунення несправностей + FAQ

Навіть при ретельному налаштуванні можуть виникнути проблеми. Цей розділ допоможе вам вирішити найпоширеніші з них.

Мій Geth клієнт не синхронізується або дуже повільно синхронізується. Що перевіряти?

Що перевірити:

  • Логи Geth: Використовуйте sudo journalctl -f -u geth --no-hostname. Шукайте повідомлення про помилки, попередження, кількість пірів ("peers") та прогрес синхронізації ("Imported new chain segment").
  • Дисковий простір: Переконайтеся, що на диску достатньо вільного місця (df -h). Якщо диск заповнений, Geth зупиниться.
  • Швидкість диска (I/O): Повільний NVMe SSD або його перевантаження можуть бути причиною. Перевірте утилітами типу iostat або htop.
  • Мережеве підключення: Переконайтеся, що сервер має стабільне інтернет-з'єднання і порти Geth (30303 TCP/UDP) відкриті у брандмауері (sudo ufw status).
  • Параметри запуску: Перевірте /etc/systemd/system/geth.service на правильність параметрів, особливо --syncmode та --cache.

Як виправити:

Якщо диск заповнений, розгляньте можливість збільшення обсягу VPS або очищення непотрібних файлів. Якщо швидкість диска низька, можливо, ваш VPS-план не відповідає вимогам, або диск перевантажений іншими процесами. Збільшення --cache (якщо є вільна RAM) може допомогти. Перевірте, що брандмауер не блокує P2P-трафік.

Мій Prysm Beacon Chain клієнт не синхронізується або не підключається до Geth.

Що перевірити:

  • Логи Prysm Beacon: Використовуйте sudo journalctl -f -u prysm-beacon --no-hostname. Шукайте повідомлення про помилки підключення до Geth ("Failed to connect to execution client") або проблеми з P2P-мережею.
  • Статус Geth: Переконайтеся, що Geth запущений і синхронізується. Prysm не зможе працювати без синхронізованого клієнта виконання.
  • JWT-секрет: Переконайтеся, що файл /var/lib/ethereum/jwt/jwtsecret.txt існує, має правильні дозволи та вказаний в обох сервісах (Geth та Prysm Beacon) з однаковим вмістом.
  • Порти RPC: Перевірте, що Geth слухає на порту 8551 (--authrpc.port) і Prysm Beacon намагається підключитися до нього.

Як виправити:

Переконайтеся, що Geth повністю синхронізований і працює коректно. Перезапустіть обидва сервіси, якщо ви вносили зміни до JWT-секрету або параметрів RPC. Перевірте права доступу до файлу JWT-секрету.

Мій валідатор Prysm не атестує або не пропонує блоки.

Що перевірити:

  • Логи Prysm Validator: Використовуйте sudo journalctl -f -u prysm-validator --no-hostname. Шукайте помилки, пов'язані з підключенням до Beacon Chain, відсутністю ключів або проблемами з атестаціями.
  • Статус Prysm Beacon Chain: Переконайтеся, що Prysm Beacon Chain запущений, повністю синхронізований і має достатньо пірів. Валідатор не зможе працювати без робочого Beacon Chain.
  • Активація валідатора: Переконайтеся, що ваш валідатор активований у мережі Ethereum. Перевірити це можна на Beacon Chain Explorer, ввівши свій валідаторний ключ. Процес активації може зайняти до кількох днів або тижнів після депонування 32 ETH.
  • Наявність ключів: Переконайтеся, що ключі валідатора правильно імпортовані та доступні клієнту валідатора.

Як виправити:

Дочекайтеся повної синхронізації Prysm Beacon Chain. Переконайтеся, що ваш валідатор активований. Перевірте, що --wallet-password-file містить правильний пароль. Перезапустіть prysm-validator.service.

Який VPS-конфіг мінімально підійде?

Для запуску повноцінного валідатора Ethereum на 2026 рік мінімальні вимоги включають 4 vCPU (від 2.5 ГГц), 16 ГБ RAM та 2 ТБ NVMe SSD з високою швидкістю введення-виведення (від 2000 IOPS). Мережеве підключення має бути 1 Гбіт/с з нелімітованим трафіком або великим запасом (від 2-3 ТБ/місяць). Вкрай важливо використовувати NVMe SSD через інтенсивність операцій читання/запису блокчейну. Оптимальний конфіг включатиме 6-8 vCPU, 32 ГБ RAM та 2-3 ТБ NVMe SSD для довгострокової стабільності та продуктивності.

Що вибрати — VPS чи dedicated для цього завдання?

Для запуску одного-двох валідаторів Ethereum високопродуктивний VPS з NVMe SSD зазвичай достатній і є більш економічним рішенням. VPS пропонує гнучкість та простоту управління. Виділений сервер стає кращим, якщо ви плануєте керувати великою кількістю валідаторів, вимагаєте максимальної передбачуваної продуктивності без впливу "сусідів", або у вас є специфічні вимоги до апаратного забезпечення (наприклад, для апаратних модулів безпеки ключів). Dedicated сервери також дають повний контроль над залізом, що може бути важливим для просунутих користувачів або для розміщення кількох ресурсомістких блокчейн-сервісів.

Як безпечно оновити клієнтів Ethereum?

Безпечне оновлення клієнтів включає кілька кроків: 1) Завжди читайте офіційні release notes та рекомендації розробників перед оновленням. 2) Зупиніть сервіси клієнтів (Geth, Prysm Beacon, Prysm Validator) за допомогою sudo systemctl stop . 3) Завантажте нові бінарні файли з офіційних джерел (GitHub релізи) та замініть старі виконувані файли в /usr/local/bin/. 4) Запустіть сервіси клієнтів у зворотному порядку (Geth, Prysm Beacon, Prysm Validator) за допомогою sudo systemctl start . 5) Моніторте логи після запуску, щоб переконатися в коректній роботі. Для мінімізації простою можна оновлювати клієнтів по черзі, якщо це підтримується розробниками і не є критичним оновленням протоколу.

Що робити, якщо VPS впав або став недоступним?

Якщо ваш VPS став недоступним, насамперед перевірте статус сервера в панелі управління вашого провайдера. Можливо, стався збій ОС або апаратна проблема. Спробуйте перезавантажити сервер через панель управління. Якщо сервер завантажився, перевірте логи Systemd для всіх клієнтів (sudo journalctl -xe -u geth тощо), щоб визначити причину збою. Переконайтеся, що всі сервіси автоматично запустилися. Якщо проблема з мережею, перевірте налаштування брандмауера та мережеві інтерфейси. Якщо сервер не завантажується, можливо, знадобиться відновлення з бекапу (якщо ви робили бекапи всієї системи) або перевстановлення ОС з подальшим відновленням даних (конфігів та ключів) та повторною синхронізацією блокчейну.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно налаштували та запустили валідатор Ethereum на вашому VPS або виділеному сервері. Ви зробили свій внесок у децентралізацію та безпеку мережі Ethereum, а також створили основу для отримання нагород за стейкінг. Цей процес вимагав уважності до деталей, але тепер ви володієте повним контролем над своєю валідаторною нодою.

Куди рухатися далі?

  • Розширений моніторинг: Налаштуйте Prometheus та Grafana для візуалізації метрик ваших клієнтів. Це дозволить вам відстежувати продуктивність, використання ресурсів та статус валідатора в реальному часі, запобігаючи потенційним проблемам.
  • Вивчення MEV-Boost: Дослідіть можливість інтеграції MEV-Boost для максимізації ваших нагород. MEV-Boost дозволяє валідаторам отримувати додатковий дохід від "maximal extractable value" (MEV), співпрацюючи з релейними сервісами.
  • Посилення безпеки: Розгляньте додаткові заходи безпеки, такі як двофакторна автентифікація для SSH, використання апаратних модулів безпеки (HSM) для захисту ключів валідатора (якщо це застосовно до вашої інфраструктури), або більш просунуті конфігурації брандмауера.
  • Автоматизація оновлень: Вивчіть інструменти для автоматизованого, але контрольованого оновлення програмного забезпечення, щоб мінімізувати ручне втручання та ризики.

Поділитися цим записом:

налаштування ethereum validator node на vps: запуск клієнта, безпека та моніторинг
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.