Linux 环境下搭建以太坊节点,从零开始的详细指南

 :2026-02-11 18:03    点击:8  

以太坊作为全球领先的智能合约平台和去中心化应用(DApp)的底层基础设施,吸引了大量开发者和用户,在 Linux 系统上安装和运行以太坊节点,无论是对于参与网络共识、开发 DApp,还是进行链上数据分析,都是一项基础且重要的技能,本文将以主流的 Linux 发行版(如 Ubuntu/Debian)为例,详细介绍如何从零开始安装和运行以太坊节点。

准备工作

在开始安装之前,请确保您的 Linux 系统满足以下基本要求:

  1. 操作系统:推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS,或其他基于 Debian 的发行版,对于其他发行版如 CentOS/RHEL,命令可能略有不同,但核心步骤类似。
  2. 硬件要求
    • CPU:至少 2 核 CPU,推荐 4 核或以上。
    • 内存:至少 4GB RAM,推荐 8GB 或以上,对于全节点(特别是归档节点),16GB+ 更佳。
    • 存储
      • 同步模式:全节点需要存储完整的区块链数据,截至 2024 年,以太坊主网已超过 1TB,并且持续增长,建议使用 SSD 固态硬盘,至少 2TB 可用空间,对于归档节点可能需要数 TB。
      • 快速同步(Snap Sync):这是目前最常用的同步方式,它会先下载最新的状态数据,然后再同步区块头和交易,速度较快,但仍需大量存储空间。
    • 网络:稳定的互联网连接,建议带宽 10Mbps 以上,同步期间对带宽要求较高。
  3. 用户权限:建议使用具有 sudo 权限的非 root 用户进行操作,以确保安全性。

安装依赖项

更新系统包列表并安装必要的依赖软件:

sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential git wget software-properties-common curl libsnappy-dev libc6-dev ncurses-dev unzip libgmp-dev libssl-dev libboost-all-dev autoconf automake libtool

这些依赖项包括编译工具、开发库等,对于后续安装以太坊客户端至关重要。

选择并安装以太坊客户端

以太坊有多种客户端实现,它们遵循相同的以太坊协议规范,但在性能、功能、资源消耗和开发语言上有所不同,最主流的全节点客户端包括:

  • Geth (Go-Ethereum):使用 Go 语言编写,是最流行、历史最悠久的客户端之一,功能全面,社区支持好。
  • Prysm:使用 Go 语言编写,专注于以太坊 2.0(信标链),支持验证者功能。
  • Lodestar:使用 TypeScript/Node.js 编写,同样是以太坊 2.0 信标链客户端。
  • Lodestar:使用 Rust 语言编写,以高性能和安全性著称,支持以太坊 1.0 和 2.0。

对于大多数只想运行以太坊 1.0 全节点的用户,Geth 是最常见的选择,本文以 Geth 为例进行讲解。

1 安装 Geth

  1. 下载 Geth 二进制文件: 最简单的方式是从 GitHub 的官方发布页面下载预编译的二进制文件,首先访问 Geth 的 GitHub Releases 页面:https://github.com/ethereum/go-ethereum/releases

    找到最新稳定版本(v1.13.11),下载适用于 L

    随机配图
    inux AMD64 的二进制包(通常是 geth-alltools-linux-amd64-<version>.tar.gz)。

    您也可以使用 wget 直接下载(请替换 <version> 为实际版本号):

    # 请替换为最新版本号
    VERSION="1.13.11"
    wget https://github.com/ethereum/go-ethereum/releases/download/v${VERSION}/geth-alltools-linux-amd64-${VERSION}.tar.gz
  2. 解压并安装

    tar -xvzf geth-alltools-linux-amd64-${VERSION}.tar.gz
    cd geth-alltools-linux-amd64-${VERSION}

    解压后,您会看到 geth 等可执行文件,您可以将它们复制到系统的 PATH 中,/usr/local/bin

    sudo cp geth bootnode rlpdump /usr/local/bin/
  3. 验证安装

    geth version

    如果能看到 Geth 的版本信息,则表示安装成功。

启动并同步以太坊节点

安装完成后,就可以启动 Geth 节点了,Geth 提供了多种启动选项,以满足不同的需求。

1 基本启动命令

最简单的启动全节点命令是:

geth --http
  • --http:启用 HTTP-RPC 服务,默认监听 8545 端口,方便与 DApp 或工具交互(如 MetaMask)。

2 常用启动选项

为了更好地控制节点行为,通常会添加更多选项:

  1. 指定数据目录: 默认情况下,Geth 将数据存储在 ~/.ethereum 目录下,如果您有多个节点或希望指定其他位置:

    geth --http --datadir /path/to/your/ethereum/data
  2. 选择同步模式

    • --syncmode:指定同步模式。
      • fast(默认):快速同步,先下载状态,再同步区块头和交易,是目前推荐的全节点同步方式。
      • full:完整同步,从创世块开始逐块同步,耗时非常长,但数据最完整。
      • light:轻节点,只同步区块头,不存储完整状态和交易,资源消耗小,但功能受限。
        geth --http --syncmode fast
  3. 启用 WebSocket: 如果需要通过 WebSocket 与节点交互(例如一些前端应用):

    geth --http --ws --ws.addr 0.0.0.0 --ws.port 8546
    • --ws:启用 WebSocket 服务。
    • --ws.addr 0.0.0.0:监听所有网络接口(默认只监听本地 0.0.1)。
    • --ws.port 8546:指定 WebSocket 端口。
  4. 设置 RPC API: 默认情况下,HTTP-RPC 只开放部分 API,您可以通过 --http.api 选项指定要开放的 API:

    geth --http --http.api eth,net,web3,personal

    常见 API 包括 eth, net, web3, personal, admin 等。admin API 权限较高,请谨慎开放。

  5. 控制台交互: 启动 Geth 时可以附加一个 JavaScript 控制台,方便直接操作:

    geth --http --console

    启动后会进入 > 提示符,可以输入命令,如 eth.blockNumber 查看当前区块号。

3 后台运行

为了让节点在后台持续运行,可以使用 nohupsystemd 服务。

  • 使用 nohup

    nohup geth --http --syncmode fast --datadir /path/to/your/ethereum/data > geth.log 2>&1 &

    这会将 Geth 的输出重定向到 geth.log 文件,并且即使关闭终端,Geth 也会继续运行。

  • 使用 systemd(推荐): 创建一个 systemd 服务文件:

    sudo nano /etc/systemd/system/geth.service

    在文件中添加以下内容(请根据您的实际路径和参数修改):

    [Unit]
    Description=Geth Ethereum Client
    After=network.target
    [Service]
    User=your_username  # 替换为您的用户名
    Type=simple
    Restart=always
    RestartSec=5
    ExecStart=/usr/local/bin/geth --http --syncmode fast --datadir /home/your_username/.ethereum
    StandardOutput=journal
    StandardError=journal
    [Install]
    WantedBy=multi-user.target

    保存后,启用并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl enable geth
    sudo systemctl start geth

    您可以使用 `sudo

本文由用户投稿上传,若侵权请提供版权资料并联系删除!