OffshoreVps
教程2026年10月18日阅读约 8 分钟作者:OffshoreVps 团队

如何在 VPS 上运行 Ethereum 节点(Geth 和 Lighthouse)

在 Linux 上运行一对 Ethereum 执行客户端和共识客户端:JWT 密钥、systemd 单元、检查点同步、端口,以及全节点所需的硬件。

自 The Merge 以来,以太坊节点由两个协同工作的程序组成:处理交易和状态的执行客户端,以及跟踪权益证明链的共识客户端。本指南在 Linux VPS 上运行 Geth(执行)和 Lighthouse(共识)。相同的架构也适用于其他客户端组合。

VPS 上的终端窗口,显示用 Geth 和 Lighthouse 运行 Ethereum 节点所用的命令,以“sudo adduser --system --group --no-create-home g”开头
本指南中你将在服务器上运行的那类命令。

完整节点需要什么

  • 磁盘。这是主要限制。目前完整节点大约需要 1 到 2 TB 的高速 NVMe 存储,而且还在增长。归档节点需要的空间多得多。购买前请查阅客户端文档,了解最新的大小。
  • 内存。16 GB 是比较舒适的最低配置。32 GB 有助于同步期间以及 RPC 负载下的表现。
  • CPU。4 个或更多核心。存储速度比时钟频率更重要。
  • 网络。高速端口上的不限流量。节点会传输大量数据。

由于磁盘体积大,大多数人为以太坊使用独立服务器。有关各种规格的套餐,请参阅以太坊节点托管。

步骤 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

检查点同步让共识客户端从最近的可信状态启动,因此几分钟而不是几天就能就绪。在依赖检查点 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 对公共互联网关闭。