Server Configuration Requirements
- Operating System: CentOS 7.6 (64-bit)
- CPU: 16 cores
- RAM: 32GB
- System Disk: 40GB
- Data Disk: 3TB
- Geth Path:
/data/eth/bin/geth - Data Path:
/data/eth/chaindata - Consensus Client: Prysm
Step 1: Download and Install Geth
- Download Geth Package
Official downloads available at:
๐ Geth Ethereum Downloads Extract and Install
cd /data/eth wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.13.14-2bd6bd01.tar.gz tar -xf geth-linux-amd64-1.13.14-2bd6bd01.tar.gz mv geth-linux-amd64-1.13.14-2bd6bd01 bin mkdir chaindata
Step 2: Set Up Prysm Beacon Node
Prerequisites
Install
screenfor session management:yum update && yum upgrade yum -y install screen
Install Prysm
Create Directories and Download Prysm
mkdir -p /data/consensus/prysm cd /data/consensus/prysm curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh chmod +x prysm.shGenerate JWT Secret
./prysm.sh beacon-chain generate-auth-secretOutputs JWT key at
/data/consensus/prysm/jwt.hex.Start Prysm
screen -S prysm ./prysm.sh beacon-chain --accept-terms-of-use --execution-endpoint=http://localhost:8551 \ --jwt-secret=/data/consensus/prysm/jwt.hex --checkpoint-sync-url=https://beaconstate.info \ --genesis-beacon-api-url=https://beaconstate.info --datadir /data/executionPress
Ctrl+A Dto detach the session.
Step 3: Deploy Geth Execution Client
Start Geth
screen -S geth ./geth --cache 10240 --http --http.api web3,eth,net,personal,txpool,engine,admin \ --http.addr 0.0.0.0 --http.port 3545 --datadir /data/eth/chaindata \ --allow-insecure-unlock --rpc.allow-unprotected-txs --authrpc.addr 0.0.0.0 \ --authrpc.port 8551 --authrpc.vhosts localhost --maxpeers=300 \ --authrpc.jwtsecret /data/consensus/prysm/jwt.hexPress
Ctrl+A Dto detach.
Step 4: Verify Synchronization
Attach Geth Console
geth attach /data/eth/chaindata/geth.ipcCheck Sync Status
eth.blockNumber // Returns latest block eth.syncing // Returns 'false' if syncedRPC Check
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:3545Convert hexadecimal
result(e.g.,0x126f9ca) to decimal using a hex converter.
Optional: Configure as a Service
Create Service File
vim /usr/lib/systemd/system/geth.servicePaste:
[Unit] Description=Go Ethereum Client - Geth After=network.target [Service] User=root ExecStart=/data/eth/bin/geth --snapshot=true --http --http.addr 0.0.0.0 --http.port 9545 \ --datadir /data/eth/chaindata --http.api "personal,eth,net,web3,txpool,debug" \ --authrpc.jwtsecret /data/consensus/prysm/jwt.hex Restart=always [Install] WantedBy=multi-user.targetEnable and Start
systemctl enable geth systemctl start geth
FAQ
Q: How long does initial sync take?
A: Depending on hardware, expect 24-48 hours for a full sync.
Q: Why use Prysm with Geth?
A: Prysm handles consensus (PoS), while Geth manages execution (smart contracts).
Q: How to monitor node health?
A: Use geth attach or check logs via journalctl -u geth.
๐ Explore Ethereum Node Tools for advanced configurations.