# 베이스(Base) 노드 돌리기

By [Base KR community](https://paragraph.com/@0xautonomousworld) · 2024-05-23

---

### Base 노드 돌리기

이번 튜토리얼에서는 Base 노드를 설정하는 방법을 안내합니다.

### 목표

이 튜토리얼을 통해 다음을 습득하기:

*   Base 노드 배포 및 동기화
    

### 사전 준비 사항

**_주의_**\* 노드를 운영하는 것은 시간과 자원이 많이 들고 비용이 발생할 수 있습니다. 만약 여러분이 노드를 운영해야 하는 이유를 아직 명확히 알지 못한다면, 뒤로가기 버튼을 눌러도 됩니다.\*

### _무료인 RPC URL를 사용하자_

_초기 설정용 무료 엔드포인트:_

*   _Mainnet:_ [_https://mainnet.base.org_](https://mainnet.base.org)
    
*   _Testnet (Sepolia):_ [_https://sepolia.base.org_](https://sepolia.base.org)
    

_무료 RPC는 사용량 제한이 있어서 프로덕션 앱에는 적합하지 않습니다._

### 하드웨어 요구 사항

노드를 운영하려면 다음과 같은 하드웨어 구성하세요:

*   8코어 CPU
    
*   최소 16GB RAM
    
*   최소 2.5TB의 여유 공간이 있는 SSD
    

**정보** Amazon Elastic Block Store (EBS)를 사용할 경우, 초기 동기화 과정에서 지연 문제를 피하려면 디스크 읽기 속도가 충분히 빠른지 확인해야 합니다.

### Docker

이 튜토리얼은 여러분이 [Docker](https://www.docker.com/)에 익숙하고 도커를 설치한 사람이라고 가정합니다.

### L1 RPC URL

여러분의 전용 L1 RPC URL이 필요합니다. 이는 직접 운영하거나 서드파티, [파트너](https://docs.base.org/tools/node-providers)를 통해 진행합니다.

### 노드 운영 방법

1.  [리포지토리(repo)](https://github.com/base-org/node)를 클론하기.
    
2.  Ethereum L1 풀 노드 RPC가 필요합니다.(not Base 네트워크). `OP_NODE_L1_ETH_RPC` & `OP_NODE_L1_BEACON`을 설정하세요 (`.env.*` 파일에서 `docker-compose` 사용 시). 자체 L1 노드를 실행하는 경우, 동기화해야만 Base가 완전히 동기화될 수 있습니다.
    
3.  네트워크에 맞는 라인을 주석 해제하세요 (`.env.sepolia` 또는 `.env.mainnet`).
    
4.  `docker compose up`을 실행하세요. 다음 명령어로 응답을 확인할 수 있습니다:
    

    curl -d '{"id":0,"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false]}' \
      -H "Content-Type: application/json" http://localhost:8545
    

**주의** 노드 동기화는 며칠동안 시간이 소요될 수 있으며 많은 요청 할당량을 소모합니다. 사용량을 모니터링하고 필요한 경우 플랜을 업그레이드해야 합니다.

### 스냅샷

초기 동기화 시간을 절약하려면 최신 스냅샷을 복원할 수 있습니다. 스냅샷은 매주 업데이트됩니다.

**스냅샷 복원**

1.  Base Node 홈 디렉터리에 `geth-data` 폴더를 만듭니다. 이미 폴더가 있다면 기존 상태를 지우고 다시 생성합니다.
    
2.  다음 명령어를 실행합니다.
    

테스트넷 (full)

    wget https://sepolia-full-snapshots.base.org/$(curl https://sepolia-full-snapshots.base.org/latest)
    

테스트넷 (Archive)

    wget https://sepolia-archive-snapshots.base.org/$(curl https://sepolia-archive-snapshots.base.org/latest)
    

메인넷 (full)

    wget https://mainnet-full-snapshots.base.org/$(curl https://mainnet-full-snapshots.base.org/latest)
    

메인넷 (Archive)

    wget https://mainnet-archive-snapshots.base.org/$(curl https://mainnet-archive-snapshots.base.org/latest)
    

다운로드한 스냅샷의 압축을 풀고 그 안에 생성된 `geth` 하위 폴더를 `geth-data` 폴더에 넣어야 합니다.

루트 디렉터리로 돌아가서 노드를 시작합니다:

    cd ..
    docker compose up --build
    

이제 노드가 스냅샷의 마지막 블록부터 동기화를 시작합니다.

### 동기화 상태 확인

다음 명령어를 통해 동기화 진행 상황을 모니터링할 수 있습니다:

    echo Latest synced block behind by: $((($(date +%s)-$( \
      curl -d '{"id":0,"jsonrpc":"2.0","method":"optimism_syncStatus"}' \
      -H "Content-Type: application/json" http://localhost:7545 | \
      jq -r .result.unsafe_l2.timestamp))/60)) minutes
    

동기화가 완료되지 않았을 경우, 노드를 사용하여 배포하려고 할 때 `Error: nonce has already been used` 오류가 발생할 수 있습니다.

---

*Originally published on [Base KR community](https://paragraph.com/@0xautonomousworld/base-2)*
