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.
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
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.