OffshoreVps
آموزش‌ها18 اکتبر 20268 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

چگونه یک نود Ethereum (Geth و Lighthouse) را روی VPS اجرا کنیم

یک جفت کلاینت اجرا و اجماع Ethereum را روی Linux اجرا کنید: راز JWT، واحدهای systemd، همگام‌سازی با نقطه‌ی بازبینی، پورت‌ها و سخت‌افزار موردنیاز یک نود کامل.

از زمان The Merge، نود Ethereum دو برنامه است که با هم کار می‌کنند: یک کلاینت اجرایی که تراکنش‌ها و وضعیت را مدیریت می‌کند و یک کلاینت اجماع که زنجیرهٔ اثبات سهام (proof-of-stake) را دنبال می‌کند. این راهنما Geth (اجرایی) و Lighthouse (اجماع) را روی VPS لینوکسی اجرا می‌کند. همین چیدمان با جفت‌کلاینت‌های دیگر هم کار می‌کند.

پنجره‌ی ترمینال روی یک 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 را ببینید.

گام ۱: آماده‌سازی سرور

از نصب تازهٔ 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
گام‌های این راهنما به ترتیب: ۱. یک نود کامل به چه چیزی نیاز دارد؛ ۲. آماده‌سازی سرور؛ ۳. ساخت راز JWT مشترک؛ ۴. نصب و اجرای 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) به کلاینت اجماع اجازه می‌دهد از یک وضعیت مطمئن اخیر شروع کند، بنابراین به‌جای چند روز در چند دقیقه آماده می‌شود. پیش از اتکا به نشانی چک‌پوینت، آن را با مستندات کلاینت بررسی کنید.

مرحله 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 را برای اینترنت عمومی بسته نگه دارید.