Sejak The Merge, node Ethereum terdiri dari dua program yang bekerja bersama: klien eksekusi yang menangani transaksi dan state, dan klien konsensus yang mengikuti chain proof-of-stake. Panduan ini menjalankan Geth (eksekusi) dan Lighthouse (konsensus) di VPS Linux. Susunan yang sama berlaku untuk pasangan klien lainnya.
Apa yang dibutuhkan node penuh
- Disk. Ini adalah batas utamanya. Node penuh saat ini membutuhkan sekitar 1 hingga 2 TB penyimpanan NVMe yang cepat, dan terus bertambah. Node arsip membutuhkan jauh lebih banyak. Periksa dokumentasi klien terbaru untuk ukuran yang mutakhir sebelum membeli.
- RAM. 16 GB adalah minimum yang nyaman. 32 GB membantu saat sinkronisasi dan di bawah beban RPC.
- CPU. 4 inti atau lebih. Kecepatan penyimpanan lebih penting daripada kecepatan clock.
- Jaringan. Lalu lintas tanpa batas pada port yang cepat. Node memindahkan banyak data.
Karena ukuran disknya, kebanyakan orang menggunakan server dedicated untuk Ethereum. Lihat hosting node Ethereum untuk paket dengan ukuran yang sesuai.
Langkah 1: siapkan server
Gunakan instalasi Ubuntu LTS yang baru dan terapkan langkah-langkah di cara mengamankan VPS baru. Buat pengguna untuk setiap klien agar tidak ada yang berjalan sebagai 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
Langkah 2: buat rahasia JWT bersama
Kedua klien saling mengautentikasi dengan file rahasia bersama.
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
Langkah 3: instal dan jalankan Geth
Unduh rilis stabil dari halaman unduhan Geth resmi atau gunakan repositori paket proyeknya, lalu verifikasi. Kemudian buat /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
Mengikat HTTP ke 127.0.0.1 menjaga RPC tetap privat. Jangan pernah membukanya langsung ke internet.
Langkah 4: instal dan jalankan 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 memungkinkan klien konsensus mulai dari state tepercaya yang baru, sehingga siap dalam hitungan menit, bukan hari. Verifikasi URL checkpoint dengan dokumentasi klien sebelum mengandalkannya.
Langkah 5: mulai dan pantau sinkronisasi
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 pada hasilnya berarti node sudah tersinkron sepenuhnya. Sinkronisasi pertama bisa memakan waktu berjam-jam hingga beberapa hari, tergantung kecepatan disk.
Firewall dan port
Izinkan port peer-to-peer (30303 TCP/UDP untuk Geth, 9000 TCP/UDP untuk Lighthouse secara default) agar kamu mendapat jumlah peer yang baik. Biarkan 8545, 8551, dan 5052 tertutup dari internet publik.