Linux 环境下部署以太坊节点,从零开始的详细指南
admin 发布于 2026-02-22 22:15
频道:默认分类
阅读:1
以太坊作为全球领先的智能合约平台和去中心化应用(DApp)的基础设施,其节点网络是整个生态系统的基石,在 Linux 环境下部署以太坊节点,无论是对于开发者、DApp 用户,还是对于希望参与网络共识、验证交易的验证者(如以太坊 2.0 的验证者),都是一项核心技能,本文将详细介绍在 Linux 系统上部署以太坊节点的步骤、注意事项以及不同类型节点的选择。
为什么选择 Linux 部署以太坊节点
在开始之前,我们先简要为何 Linux 是部署以太坊节点的理想选择:
- 稳定性和安全性:Linux 系统以其出色的稳定性和安全性著称,适合需要长期不间断运行的服务。
- 高性能:Linux 对系统资源的利用效率较高,能够在有限的硬件条件下获得更好的性能。
- 开源和灵活性:绝大多数以太坊客户端软件都是开源的,并且原生支持 Linux,提供了高度的定制性和灵活性。

i>社区支持:拥有庞大的开发者社区,遇到问题时更容易找到解决方案和帮助。
命令行友好:Linux 强大的命令行工具使得自动化部署、监控和管理节点变得更加便捷。
部署前的准备工作
在开始部署之前,请确保您的 Linux 系统满足以下基本要求:
-
硬件要求:
- CPU:至少 2 核 CPU,推荐 4 核或以上。
- 内存 (RAM):运行全节点至少需要 8GB RAM,推荐 16GB 或以上,如果运行验证者节点,建议 32GB 以上。
- 存储 (SSD):这是最关键的部分,以太坊主网的全节点数据(状态、区块、交易等)截至 2023 年)已超过 2TB,并且持续增长,至少需要 2TB 以上的高速 SSD 硬盘,推荐 4TB 或更大,并确保预留足够空间。
- 网络:稳定且带宽充足的有线互联网连接,建议上行和下行带宽均不低于 10Mbps,并且端口(默认 30303,TCP/UDP)能够开放。
-
软件要求:
选择以太坊客户端软件
以太坊节点是通过运行客户端软件来实现的,目前主流的以太坊 1.0(执行层)客户端有:
- Geth:Go 语言编写,功能全面,用户基数大,官方推荐之一。
- Nethermind:.NET (C#) 语言编写,性能较好,模块化设计。
- Besu:Java 语言编写,由 Hyperledger 贡献,企业友好,支持 EVM 和以太坊 2.0。
对于以太坊 2.0(共识层,PoS),客户端有:
- Lodestar:Node.js/TypeScript 语言编写,由 Chainlink 贡献。
- Lodestar (Prysmatic Labs):Go 语言编写,用户较多。
- Teku:Java 语言编写,由 ConsenSys 贡献,企业级特性。
本文将以 Geth(执行层)和 Lodestar(共识层)为例,介绍如何搭建一个以太坊 2.0 的验证者节点(如果硬件充足,也可以选择同步执行层后运行验证者)。
部署以太坊 1.0 执行层节点 (以 Geth 为例)
-
下载并安装 Geth:
访问 Geth 官方 GitHub Releases 页面获取最新版本的下载链接,或使用以下命令(以最新版本号为例,请替换为实际版本号):
# 获取最新版本号 (示例,请替换为实际最新版本)
GETH_VERSION="1.13.6"
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-${GETH_VERSION}-d2b8c9e5.tar.gz
tar -xvzf geth-linux-amd64-${GETH_VERSION}-d2b8c9e5.tar.gz
sudo cp geth-linux-amd64-${GETH_VERSION}/geth /usr/local/bin/
# 验证安装
geth version
-
初始化节点(可选,对于新节点):
如果您是从零开始同步,Geth 会在第一次启动时自动初始化,如果您有特定的创世文件或需要自定义配置,可以手动初始化。
-
启动 Geth 节点:
启动 Geth 的命令非常灵活,以下是一些常用选项:
geth \
--http \
--http.addr "0.0.0.0" \
--http.port "8545" \
--http.api "eth,net,web3,personal" \
--ws \
--ws.addr "0.0.0.0" \
--ws.port "8546" \
--ws.api "eth,net,web3" \
--syncmode "full" \ # 全同步模式,同步所有历史数据
--gcmode "full" \ # 保持全节点模式
--cache 8192 \ # 缓存大小,单位 MB,根据内存调整
--datadir "/mnt/ethereum/geth" \ # 指定数据目录,务必使用大容量 SSD
--metrics \
--metrics.expensive \
--pprof
--http 和 --ws:分别启用 HTTP 和 WebSocket RPC 服务,方便 DApp 连接。
--syncmode "full":全同步,下载所有区块和状态数据,对于新节点,这是最慢但最完整的同步方式,也可以选择 snap 快速同步(默认),但快速同步的“全”节点在查询某些历史状态时可能不完全准确。
--datadir:指定数据存储路径,请务必选择一个空间充足、性能好的 SSD 分区。
--metrics:启用 Prometheus 格式的指标导出,方便监控。
-
后台运行和管理:
为了让节点在后台持续运行,可以使用 nohup 或 systemd 服务。
-
使用 nohup:
nohup geth [上面的参数] > geth.log 2>&1 &
-
更推荐使用 systemd 创建服务,便于管理和开机自启,创建 /etc/systemd/system/geth.service 文件,内容类似:
[Unit]
Description=Geth Ethereum Client
After=network.target
[Service]
User=your_username
Group=your_username
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
--http \
--http.addr "0.0.0.0" \
--http.port "8545" \
--http.api "eth,net,web3,personal" \
--ws \
--ws.addr "0.0.0.0" \
--ws.port "8546" \
--ws.api "eth,net,web3" \
--syncmode "full" \
--gcmode "full" \
--cache 8192 \
--datadir "/mnt/ethereum/geth" \
--metrics \
--metrics.expensive
[Install]
WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable geth
sudo systemctl start geth
sudo systemctl status geth
部署以太坊 2.0 共识层节点 (以 Lodestar 为例)
如果您计划成为验证者,需要运行共识层客户端,这里以 Lodestar 为例。
-
安装 Node.js (Lodestar 需要):
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version
-
安装 Lodestar:
npm install -g @chainsafe/lodestar
lodestar --version
-
初始化 Lodestar:
指定数据