OffshoreVps
Eğitimler18 Eki 20268 dk okumaYazan: OffshoreVps ekibi

VPS’te Ethereum düğümü (Geth ve Lighthouse) nasıl çalıştırılır

Linux’ta bir Ethereum yürütme ve konsensüs istemcisi çiftini çalıştırın: JWT gizli anahtarı, systemd birimleri, checkpoint senkronizasyonu, portlar ve tam bir düğümün ihtiyaç duyduğu donanım.

The Merge'den bu yana bir Ethereum düğümü birlikte çalışan iki programdan oluşur: işlemleri ve durumu yöneten bir yürütme istemcisi (execution client) ve proof-of-stake zincirini izleyen bir konsensüs istemcisi (consensus client). Bu rehber bir Linux VPS üzerinde Geth (yürütme) ve Lighthouse (konsensüs) çalıştırır. Aynı düzen diğer istemci çiftleriyle de işe yarar.

Geth ve Lighthouse ile Ethereum düğümü çalıştırmak için kullanılan komutları gösteren VPS üzerindeki terminal penceresi, “sudo adduser --system --group --no-create-home g” ile başlıyor
Bu rehberde sunucunuzda çalıştıracağınız komutlardan örnekler.

Tam düğüm için neler gerekir

  • Disk. Asıl sınır budur. Tam düğüm bugün kabaca 1 ila 2 TB hızlı NVMe depolama gerektirir ve büyümeye devam eder. Arşiv düğümü çok daha fazlasını gerektirir. Satın almadan önce güncel boyutlar için istemci belgelerine bakın.
  • RAM. 16 GB rahat bir minimumdur. 32 GB, senkronizasyon sırasında ve RPC yükü altında yardımcı olur.
  • CPU. 4 veya daha fazla çekirdek. Depolama hızı, saat hızından daha önemlidir.
  • Ağ. Hızlı bir portta sınırsız trafik. Düğümler çok fazla veri taşır.

Disk boyutu nedeniyle çoğu kişi Ethereum için ayrılmış sunucu kullanır. Boyutlandırılmış planlar için Ethereum düğüm barındırma sayfasına bakın.

Adım 1: sunucuyu hazırlayın

Temiz bir Ubuntu LTS kurulumu kullanın ve yeni bir VPS'i güvenceye alma rehberindeki adımları uygulayın. Hiçbir şey root olarak çalışmasın diye her istemci için ayrı kullanıcılar oluşturun.

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. Adım: Ortak bir JWT gizli anahtarı oluşturun

İki istemci birbirine ortak bir gizli anahtar dosyasıyla kimlik doğrular.

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
Bu rehberin adımları sırasıyla: 1. Tam bir düğümün ihtiyaçları; 2. sunucuyu hazırlayın; 3. paylaşılan bir JWT gizli anahtarı oluşturun; 4. Lighthouse’u kurun ve çalıştırın; 5. senkronizasyonu başlatın ve izleyin; 6. Güvenlik duvarı ve portlar
Bu rehberdeki adımlar sırasıyla.

3. Adım: Geth'i kurun ve çalıştırın

Kararlı sürümü resmî Geth indirme sayfasından indirin veya projenin paket deposunu kullanın ve doğrulayın. Ardından /etc/systemd/system/geth.service dosyasını oluşturun:

[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'yi 127.0.0.1'e bağlamak RPC'yi özel tutar. Onu asla doğrudan internete açmayın.

4. Adım: Lighthouse'u kurun ve çalıştırın

[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 senkronizasyonu, konsensüs istemcisinin yakın tarihli güvenilir bir durumdan başlamasını sağlar; böylece günler yerine dakikalar içinde hazır olur. Güvenmeden önce checkpoint URL'sini istemci belgeleriyle karşılaştırarak doğrulayın.

5. Adım: Senkronizasyonu başlatın ve izleyin

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

Sonuçtaki false, düğümün tamamen senkronize olduğu anlamına gelir. İlk senkronizasyon disk hızına bağlı olarak birçok saatten birkaç güne kadar sürebilir.

Güvenlik duvarı ve portlar

İyi bir eş sayısı elde etmek için eşler arası portlara izin verin (varsayılan olarak Geth için 30303 TCP/UDP, Lighthouse için 9000 TCP/UDP). 8545, 8551 ve 5052 portlarını genel internete kapalı tutun.