OffshoreVps
الشروحات18 أكتوبر 20268 دقيقة للقراءةبقلم فريق OffshoreVps

كيف تشغّل عقدة Ethereum (Geth وLighthouse) على VPS

شغّل زوجاً من عميل التنفيذ وعميل الإجماع في Ethereum على Linux: سر JWT، ووحدات systemd، ومزامنة نقطة التحقق، والمنافذ، والعتاد الذي تحتاجه العقدة الكاملة.

منذ The Merge، أصبحت عقدة Ethereum برنامجين يعملان معاً: عميل تنفيذ (execution client) يتولى المعاملات والحالة، وعميل إجماع (consensus client) يتابع سلسلة إثبات الحصة. يشغّل هذا الدليل Geth (التنفيذ) وLighthouse (الإجماع) على VPS بنظام Linux. ويصلح التخطيط نفسه مع أزواج عملاء أخرى.

نافذة طرفية على VPS تعرض الأوامر المستخدمة لتشغيل عقدة Ethereum باستخدام Geth وLighthouse، تبدأ بـ “sudo adduser --system --group --no-create-home g”
نوع الأوامر التي ستشغّلها على خادمك في هذا الدليل.

ما تحتاجه العقدة الكاملة

  • القرص. هذا هو القيد الرئيسي. تحتاج العقدة الكاملة اليوم إلى نحو 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
خطوات هذا الدليل بالترتيب: 1. ما الذي تحتاجه العقدة الكاملة؛ 2. جهّز الخادم؛ 3. أنشئ سر JWT مشتركاً؛ 4. ثبّت Lighthouse وشغّله؛ 5. ابدأ المزامنة وراقبها؛ 6. جدار الحماية والمنافذ
خطوات هذا الدليل بالترتيب.

الخطوة 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 مغلقة أمام الإنترنت العام.