OffshoreVps
튜토리얼2026년 10월 18일읽는 시간 8분작성: OffshoreVps 팀

VPS에서 Ethereum 노드(Geth와 Lighthouse) 운영하기

Linux에서 Ethereum 실행 클라이언트와 합의 클라이언트 쌍 운영: JWT 시크릿, systemd 유닛, 체크포인트 동기화, 포트, 풀 노드에 필요한 하드웨어.

The Merge 이후 Ethereum 노드는 두 프로그램이 함께 동작합니다. 트랜잭션과 상태를 처리하는 실행 클라이언트와 지분 증명 체인을 따라가는 합의 클라이언트입니다. 이 가이드에서는 Linux VPS에서 Geth(실행)와 Lighthouse(합의)를 실행합니다. 다른 클라이언트 조합에서도 같은 구성이 통용됩니다.

Geth와 Lighthouse로 Ethereum 노드를 운영하는 데 사용하는 명령어를 보여 주는 VPS의 터미널 창으로, “sudo adduser --system --group --no-create-home g”로 시작함
이 가이드에서 서버에서 실행하게 될 명령어의 종류입니다.

풀 노드에 필요한 것

  • 디스크. 이것이 가장 큰 제약입니다. 풀 노드는 현재 대략 1~2 TB의 빠른 NVMe 스토리지가 필요하며 계속 늘어납니다. 아카이브 노드는 훨씬 더 많이 필요합니다. 구매 전에 클라이언트 문서에서 최신 크기를 확인하세요.
  • RAM. 16 GB가 무난한 최소 사양입니다. 동기화 중이나 RPC 부하가 있을 때는 32 GB가 도움이 됩니다.
  • CPU. 코어 4개 이상. 클럭 속도보다 스토리지 속도가 더 중요합니다.
  • 네트워크. 빠른 포트에서 무제한 트래픽. 노드는 많은 데이터를 주고받습니다.

디스크 크기 때문에 대부분 Ethereum에는 전용 서버를 사용합니다. 용량별 요금제는 Ethereum 노드 호스팅을 참고하세요.

1단계: 서버 준비

새로 설치한 Ubuntu LTS를 사용하고 새 VPS 보안 설정 방법의 단계를 적용하세요. 어떤 것도 root로 실행되지 않도록 클라이언트마다 사용자를 만드세요.

sudo adduser --system --group --no-create-home geth
sudo adduser --system --group --no-create-home lighthouse
sudo mkdir -p /var/lib/geth /var/lib/lighthouse /etc/ethereum
sudo chown geth:geth /var/lib/geth
sudo chown lighthouse:lighthouse /var/lib/lighthouse

2단계: 공유 JWT 시크릿 만들기

두 클라이언트는 공유 시크릿 파일로 서로를 인증합니다.

openssl rand -hex 32 | sudo tee /etc/ethereum/jwt.hex
sudo chmod 640 /etc/ethereum/jwt.hex
sudo chgrp geth /etc/ethereum/jwt.hex
sudo usermod -aG geth lighthouse
이 가이드의 단계를 순서대로 나열하면 다음과 같습니다. 1. 풀 노드에 필요한 것; 2. 서버 준비; 3. 공유 JWT 시크릿 만들기; 4. Lighthouse 설치 및 실행; 5. 동기화 시작 및 관찰; 6. 방화벽과 포트
이 가이드의 단계를 순서대로 나열한 것입니다.

3단계: Geth 설치 및 실행

공식 Geth 다운로드 페이지에서 안정 릴리스를 내려받거나 프로젝트의 패키지 저장소를 이용하고, 검증하세요. 그런 다음 /etc/systemd/system/geth.service를 만듭니다.

[Unit]
Description=Geth
After=network-online.target

[Service]
User=geth
ExecStart=/usr/local/bin/geth \
  --mainnet \
  --datadir /var/lib/geth \
  --authrpc.jwtsecret /etc/ethereum/jwt.hex \
  --http --http.addr 127.0.0.1 --http.api eth,net,web3
Restart=on-failure
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

HTTP를 127.0.0.1에 바인딩하면 RPC가 비공개로 유지됩니다. 인터넷에 직접 노출하지 마세요.

4단계: Lighthouse 설치 및 실행

[Unit]
Description=Lighthouse beacon node
After=geth.service

[Service]
User=lighthouse
ExecStart=/usr/local/bin/lighthouse bn \
  --network mainnet \
  --datadir /var/lib/lighthouse \
  --execution-endpoint http://127.0.0.1:8551 \
  --execution-jwt /etc/ethereum/jwt.hex \
  --checkpoint-sync-url https://mainnet.checkpoint.sigp.io
Restart=on-failure

[Install]
WantedBy=multi-user.target

체크포인트 동기화를 사용하면 합의 클라이언트가 최근의 신뢰할 수 있는 상태에서 시작하므로 며칠이 아니라 몇 분 만에 준비됩니다. 의존하기 전에 체크포인트 URL을 클라이언트 문서와 대조하여 확인하세요.

5단계: 시작하고 동기화 지켜보기

sudo systemctl enable --now geth lighthouse
journalctl -u geth -f
curl -s -X POST -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545

결과가 false이면 노드가 완전히 동기화된 것입니다. 첫 동기화에는 디스크 속도에 따라 몇 시간에서 며칠이 걸릴 수 있습니다.

방화벽과 포트

피어 수를 충분히 확보하려면 피어 투 피어 포트(기본값은 Geth 30303 TCP/UDP, Lighthouse 9000 TCP/UDP)를 허용하세요. 8545, 8551, 5052는 공용 인터넷에 닫아 두세요.