OffshoreVps
Bài hướng dẫn18 thg 10 20268 phút đọcBởi đội ngũ OffshoreVps

Cách chạy node Ethereum (Geth và Lighthouse) trên VPS

Chạy cặp máy khách thực thi và đồng thuận của Ethereum trên Linux: khóa bí mật JWT, đơn vị systemd, đồng bộ checkpoint, cổng và phần cứng mà full node cần.

Kể từ The Merge, một node Ethereum gồm hai chương trình phối hợp với nhau: client thực thi xử lý giao dịch và trạng thái, và client đồng thuận theo dõi chuỗi proof-of-stake. Hướng dẫn này chạy Geth (thực thi) và Lighthouse (đồng thuận) trên VPS Linux. Cách bố trí tương tự cũng áp dụng cho các cặp client khác.

Cửa sổ terminal trên VPS hiển thị các lệnh dùng để chạy node Ethereum với Geth và Lighthouse, bắt đầu bằng “sudo adduser --system --group --no-create-home g”
Loại lệnh bạn sẽ chạy trên máy chủ của mình trong hướng dẫn này.

Node đầy đủ cần gì

  • Ổ đĩa. Đây là giới hạn chính. Hiện nay một node đầy đủ cần khoảng 1 đến 2 TB ổ NVMe nhanh, và con số này tăng dần. Node archive cần nhiều hơn rất nhiều. Hãy xem tài liệu client hiện hành để biết dung lượng mới nhất trước khi mua.
  • RAM. 16 GB là mức tối thiểu thoải mái. 32 GB giúp ích khi đồng bộ và khi tải RPC cao.
  • CPU. 4 nhân trở lên. Tốc độ lưu trữ quan trọng hơn xung nhịp.
  • Mạng. Lưu lượng không giới hạn trên cổng nhanh. Các node di chuyển rất nhiều dữ liệu.

Vì dung lượng ổ đĩa lớn, hầu hết mọi người dùng máy chủ riêng cho Ethereum. Xem Ethereum node hosting để biết các gói đã được định cỡ.

Bước 1: chuẩn bị máy chủ

Dùng bản cài Ubuntu LTS mới và áp dụng các bước trong cách bảo mật VPS mới. Tạo người dùng riêng cho từng client để không có gì chạy bằng 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

Bước 2: tạo JWT secret dùng chung

Hai client xác thực lẫn nhau bằng một tệp bí mật dùng chung.

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
Các bước của hướng dẫn này theo thứ tự: 1. Full node cần gì; 2. chuẩn bị máy chủ; 3. tạo khóa bí mật JWT dùng chung; 4. cài đặt và chạy Lighthouse; 5. khởi động và theo dõi đồng bộ; 6. Tường lửa và cổng
Các bước trong hướng dẫn này, theo thứ tự.

Bước 3: cài đặt và chạy Geth

Tải bản ổn định từ trang tải xuống Geth chính thức hoặc dùng kho gói của dự án, và xác minh nó. Sau đó tạo /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

Gắn HTTP vào 127.0.0.1 giúp RPC ở chế độ riêng tư. Không bao giờ mở nó trực tiếp ra internet.

Bước 4: cài đặt và chạy 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 cho phép client đồng thuận bắt đầu từ một trạng thái tin cậy gần đây, nên sẵn sàng sau vài phút thay vì vài ngày. Hãy đối chiếu URL checkpoint với tài liệu client trước khi dựa vào nó.

Bước 5: khởi động và theo dõi đồng bộ

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 trong kết quả nghĩa là node đã đồng bộ hoàn toàn. Lần đồng bộ đầu tiên có thể mất từ nhiều giờ đến vài ngày tùy tốc độ ổ đĩa.

Tường lửa và cổng

Hãy cho phép các cổng ngang hàng (mặc định là 30303 TCP/UDP cho Geth, 9000 TCP/UDP cho Lighthouse) để có số lượng peer tốt. Giữ các cổng 8545, 8551 và 5052 đóng với internet công cộng.