The Merge के बाद से Ethereum नोड दो प्रोग्राम का मेल है जो साथ काम करते हैं: एक एक्ज़ीक्यूशन क्लाइंट जो ट्रांज़ैक्शन और स्टेट संभालता है, और एक कंसेंसस क्लाइंट जो proof-of-stake चेन को फ़ॉलो करता है। यह गाइड Linux VPS पर Geth (एक्ज़ीक्यूशन) और Lighthouse (कंसेंसस) चलाती है। यही ढाँचा दूसरी क्लाइंट जोड़ियों के साथ भी काम करता है।
फ़ुल नोड को क्या चाहिए
- डिस्क। यही मुख्य सीमा है। आज फ़ुल नोड को लगभग 1 से 2 TB तेज़ NVMe स्टोरेज चाहिए, और यह बढ़ता जाता है। आर्काइव नोड को इससे कहीं ज़्यादा चाहिए। खरीदने से पहले ताज़ा साइज़ के लिए क्लाइंट का मौजूदा डॉक्युमेंटेशन देखें।
- RAM। 16 GB एक आरामदेह न्यूनतम है। सिंक के दौरान और RPC लोड में 32 GB मदद करता है।
- 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
चरण 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 से कंसेंसस क्लाइंट किसी हाल की भरोसेमंद स्टेट से शुरू हो सकता है, इसलिए वह दिनों की जगह मिनटों में तैयार हो जाता है। उस पर निर्भर होने से पहले checkpoint 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 का मतलब है कि नोड पूरी तरह सिंक हो चुका है। पहले सिंक में डिस्क की गति के अनुसार कई घंटों से लेकर कुछ दिन लग सकते हैं।
फ़ायरवॉल और पोर्ट
पीयर-टू-पीयर पोर्ट खोलें (डिफ़ॉल्ट रूप से Geth के लिए 30303 TCP/UDP, Lighthouse के लिए 9000 TCP/UDP) ताकि आपको अच्छी संख्या में पीयर मिलें। 8545, 8551 और 5052 को सार्वजनिक इंटरनेट के लिए बंद रखें।