ETH使用docker自建节点
使用docker-compose 自建ETH节点
本文将介绍如何使用 Docker Compose 搭建一个完整的以太坊(ETH)节点,并集成信标链客户端(Lighthouse),以支持以太坊 2.0 的权益证明(PoS)共识机制。通过这种方式,你可以轻松地在本地或云服务器上运行一个完整的以太坊节点。
推荐硬件配置
- CPU: 8 核以上
- 内存: 16GB 或以上
- 存储: 高性能 SSD,至少 1TB 的空闲空间
- 网络: 至少 100MB/s 下载速度的网络服务
前提条件
Docker 和 Docker Compose 安装:
- 你需要安装 Docker 和 Docker Compose 来运行服务。可以使用以下命令进行安装:
sudo apt-get update sudo apt-get install docker.io sudo apt-get install docker-compose
服务器配置:
- 推荐使用至少 4 CPU 和 16 GB 内存的服务器来运行以太坊节点和信标链客户端。
- 确保服务器有足够的磁盘空间来存储区块链数据(500GB 以上)。
环境搭建步骤
1. 创建 Docker Compose 文件
首先,创建一个目录来存储 Docker Compose 配置文件和数据卷。
mkdir ~/eth-node
cd ~/eth-node
然后创建 docker-compose.yml
文件:
nano docker-compose.yml
2. 配置 Docker Compose 文件
在 docker-compose.yml
中,配置以太坊 Geth 节点(执行层)和信标链客户端(Lighthouse)。以下是 Docker Compose 文件的示例:
services:
eth-node:
image: ethereum/client-go:stable
container_name: geth-node
volumes:
- /www/data:/root/.ethereum
- /www/data/prysm/jwtsecret:/root/.ethereum/geth/jwtsecret
ports:
- "8545:8545"
- "8546:8546"
- "30303:30303"
- "8551:8551"
command: >
--http
--http.addr 0.0.0.0
--http.port 8545
--http.api eth,web3,net,personal,txpool
--ws
--ws.addr 0.0.0.0
--ws.port 8546
--ws.api eth,web3,net,personal,txpool
--syncmode "snap"
--networkid 1
--authrpc.port 8551
--authrpc.addr 0.0.0.0
--authrpc.vhosts=*
--authrpc.jwtsecret /root/.ethereum/geth/jwtsecret
networks:
- eth-network
restart: unless-stopped
lighthouse-beacon-node:
image: sigp/lighthouse:latest
container_name: lighthouse-beacon-node
volumes:
- /www/data/lighthouse:/data
- /www/data/prysm/jwtsecret:/root/jwtsecret
ports:
- "5052:5052" # Lighthouse HTTP API
- "9000:9000" # Lighthouse P2P 端口
command: >
lighthouse bn
--datadir /data
--execution-endpoint http://eth-node:8551
--http
--metrics
--execution-jwt=/root/jwtsecret
--subscribe-all-subnets
--checkpoint-sync-url https://mainnet-checkpoint-sync.stakely.io
--disable-deposit-contract-sync
depends_on:
- eth-node
networks:
- eth-network
restart: unless-stopped
networks:
eth-network:
driver: bridge
3. 生成 JWT 密钥
Geth 和 Lighthouse 需要共享一个 JWT 密钥文件进行安全通信。你可以使用以下命令生成 JWT 文件:
mkdir -p /www/data/prysm/
openssl rand -hex 32 > /www/data/prysm/jwtsecret
4. 启动 Docker Compose
在配置好 docker-compose.yml
文件并生成 JWT 密钥后,使用以下命令启动服务:
docker-compose up -d
这将启动 Geth(执行层)和 Lighthouse(信标链客户端)。-d
参数确保服务在后台运行。
5. 查看日志
你可以使用以下命令查看 Geth 和 Lighthouse 的日志,确保节点正常启动并同步:
查看 Geth 日志:
docker logs geth-node
查看 Lighthouse 日志:
docker logs lighthouse-beacon-node
6. 检查同步状态
Geth(执行层)
Geth 提供了 HTTP 和 WebSocket API,你可以通过它们检查同步状态。使用以下命令连接到 Geth 节点:
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545
如果返回结果为 false
,说明同步已经完成。
Lighthouse(信标链)
Lighthouse 提供了 HTTP API,可以通过它查看信标链的同步状态。你可以访问以下地址来检查状态:
http://localhost:5052
7. 停止和重启节点
停止节点:
docker-compose down
重启节点:
docker-compose up -d
8. 使用检查点同步(Checkpoint Sync)
为了加快信标链客户端的同步过程,推荐使用检查点同步,可以从以下列表选择一个公共检查点同步 URL:https://eth-clients.github.io/checkpoint-sync-endpoints/。
在 Docker Compose 文件中,确保在 lighthouse
启动命令中添加 --checkpoint-sync-url
参数:
--checkpoint-sync-url https://your-checkpoint-sync-url
9. 结论
通过本文,你已经成功使用 Docker Compose 搭建了一个完整的以太坊节点,包括执行层(Geth)和信标链客户端(Lighthouse)。这种方法使得部署和管理节点变得非常方便,并且能够支持以太坊 2.0 的权益证明共识机制。你可以根据需要扩展或修改此配置,例如增加监控工具或其他客户端。
参考资源
- 推荐硬件配置
- 前提条件
- 环境搭建步骤
- 1. 创建 Docker Compose 文件
- 2. 配置 Docker Compose 文件
- 3. 生成 JWT 密钥
- 4. 启动 Docker Compose
- 5. 查看日志
- 6. 检查同步状态
- Geth(执行层)
- Lighthouse(信标链)
- 7. 停止和重启节点
- 8. 使用检查点同步(Checkpoint Sync)
- 9. 结论
- 参考资源