منذ The Merge، أصبحت عقدة Ethereum برنامجين يعملان معاً: عميل تنفيذ (execution client) يتولى المعاملات والحالة، وعميل إجماع (consensus client) يتابع سلسلة إثبات الحصة. يشغّل هذا الدليل Geth (التنفيذ) وLighthouse (الإجماع) على VPS بنظام Linux. ويصلح التخطيط نفسه مع أزواج عملاء أخرى.
ما تحتاجه العقدة الكاملة
- القرص. هذا هو القيد الرئيسي. تحتاج العقدة الكاملة اليوم إلى نحو 1 إلى 2 TB من تخزين NVMe السريع، وهي في ازدياد. وتحتاج عقدة الأرشيف إلى أكثر من ذلك بكثير. راجع وثائق العميل الحالية لمعرفة الأحجام المحدّثة قبل الشراء.
- الذاكرة (RAM). يُعد 16 GB حداً أدنى مريحاً. ويساعد 32 GB أثناء المزامنة وتحت حمل RPC.
- المعالج (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) لعميل الإجماع أن يبدأ من حالة حديثة موثوقة، فيصبح جاهزاً خلال دقائق بدلاً من أيام. تحقق من عنوان 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 في النتيجة تعني أن العقدة متزامنة بالكامل. قد تستغرق المزامنة الأولى من ساعات عديدة إلى بضعة أيام بحسب سرعة القرص.
جدار الحماية والمنافذ
اسمح بمنافذ الند للند (30303 TCP/UDP لـ Geth، و9000 TCP/UDP لـ Lighthouse افتراضياً) للحصول على عدد جيد من الأقران. أبقِ 8545 و8551 و5052 مغلقة أمام الإنترنت العام.