:2026-06-17 5:48 点击:2
以太坊作为全球领先的智能合约平台和去中心化应用(DApp)生态系统的基石,吸引了无数开发者和研究者的关注,在自己的服务器上搭建以太坊节点,不仅可以参与网络验证、获取交易收益(对于验证者节点),还能更深入地了解区块链的运行机制,并为DApp开发和测试提供稳定的环境,本文将详细介绍如何在阿里云服务器上,从零开始搭建一个以太坊全节点(以Geth客户端为例)。
准备工作:选择合适的阿里云服务器
在开始之前,选择一款合适的云服务器至关重要,以太坊节点对硬件资源有一定要求:
连接服务器与基础环境配置
ssh root@你的服务器公网IP
sudo apt update sudo apt upgrade -y
sudo adduser ethereum # 创建一个名为ethereum的用户 sudo usermod -aG sudo ethereum # 将该用户加入sudo组
然后退出root登录,用新创建的ethereum用户登录:
exit ssh ethereum@你的服务器公网IP
sudo apt install -y git wget curl build-essential
安装Geth以太坊客户端
Geth是以太坊官方Go语言实现的客户端,是最常用、最稳定的以太坊节点软件之一。
下载Geth:访问Geth的官方GitHub Releases页面(https://github.com/ethereum/go-ethereum/releases)

# 下载最新稳定版的geth(请替换为实际版本号) wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.12-4cd6ba6d.tar.gz
(注意:版本号会更新,请务必确认最新稳定版号)
解压并安装:
tar -xvf geth-linux-amd64-*.tar.gz sudo cp geth-linux-amd64/geth /usr/local/bin/ # 验证安装 geth version
如果看到版本信息,说明安装成功。
初始化以太坊节点
在启动节点之前,可以选择初始化一个数据目录,这一步不是必须的,但可以提前配置一些参数。
mkdir -p ~/ethereum/data
# geth init --datadir ~/ethereum/data /path/to/your/genesis.json
启动并同步以太坊节点
这是核心步骤,我们将启动Geth节点并开始同步以太坊区块链数据。
基本启动命令:
geth --datadir ~/ethereum/data sync
--datadir:指定数据存储目录。sync:启动同步模式。常用启动参数(推荐): 为了更好的体验和性能,通常会添加更多参数:
geth \ --datadir ~/ethereum/data \ --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 "snap" \ --gcmode "full" \ --cache 8192 \ --maxpeers 50 \ console
--http:启用HTTP-RPC服务,方便DApp或其他工具连接。--http.addr "0.0.0.0":允许任何IP访问HTTP-RPC服务(生产环境请谨慎设置,或限制特定IP)。--http.port "8545":HTTP-RPC服务端口,默认8545。--http.api:允许通过HTTP-RPC访问的API列表。--ws:启用WebSocket-RPC服务,适用于实时性要求高的应用。--ws.addr和--ws.port:WebSocket服务地址和端口。--syncmode "snap":使用快速同步模式(snap sync),是目前最快的同步方式,它会先下载状态数据,再逐步同步历史区块。--gcmode "full":运行全节点模式,保存所有区块数据,可以设置为light运行轻节点,但全节点功能更完整。--cache 8192:设置缓存大小(单位MB),适当的缓存可以提升性能,建议根据服务器内存调整。--maxpeers 50:最大连接节点数,默认25,可根据网络状况调整。console:启动后进入交互式控制台,方便管理和查询节点状态。后台运行:
如果你想让节点在后台持续运行,可以使用nohup结合&:
nohup geth --datadir ~/ethereum/data --syncmode snap --gcmode full --http --http.addr "0.0.0.0" --http.port "8545" --http.api "eth,net,web3,personal" --cache 8192 --maxpeers 50 > ~/ethereum/geth.log 2>&1 &
这样,Geth将在后台运行,日志会输出到~/ethereum/geth.log文件中。
验证节点状态与远程访问
查看同步状态:
如果启动时进入了控制台(console),可以输入:
eth.syncing
如果返回false,表示已同步完成;如果返回一个对象,则表示仍在同步中,可以查看currentBlock、highestBlock等进度。
如果是后台运行,可以查看日志:
tail -f ~/ethereum/geth.log
日志中会显示同步进度。
远程连接到Geth控制台: 在本地电脑上,可以通过以下命令连接到服务器上的Geth控制台:
ssh -L 8545:localhost:8545 ethereum@你的服务器公网IP
然后在SSH连接会话中运行:
geth attach http://localhost:8545
或者直接使用geth attach命令(如果geth在PATH中):
geth attach ~/ethereum/data/geth.ipc
(注意:IPC文件只在本地有效,所以通常需要先SSH隧道连接)
通过HTTP-RPC远程访问: 确保阿里云ECS服务器的安全组规则已放行你设置的HTTP和WebSocket端口(如8545和8546)。
登录阿里云
本文由用户投稿上传,若侵权请提供版权资料并联系删除!