Nodes/solana/localhost/installation

solana

Solana 노드 설치 가이드

10분 읽기 · localhost/installation

list목차(20)

Solana 노드 설치 가이드

Solana CLI 설치 후, 검증자(Validator) 또는 RPC 노드로 solana-validator를 실행하기 위한 절차입니다.
RPC 노드는 동일 바이너리를 --no-voting 등으로 실행합니다.

참고: Setup a Validator, Setup an RPC Node, Installing Solana CLI.

목차


사전 요구사항

하드웨어

  • CPU: AVX2 지원 x86_64 (Intel Ice Lake+, AMD Gen 3+ 권장). Requirements 참고.
  • RAM: 검증자 256 GB+ 권장, RPC 노드에서 --account-index 사용 시 512 GB+ 권장.
  • 디스크: Ledger용 1 TB+ NVMe, Accounts용 500 GB+ NVMe (별도 디스크 권장). 최소 2 TB 마운트 권장.
  • 네트워크: 1 Gbit/s 대칭 이상.

소프트웨어

  • OS: Ubuntu 20.04 권장 (공식 빌드 환경). 다른 Linux/macOS는 소스 빌드 또는 설치 도구 사용.
  • 권한: 검증자/RPC를 실행할 전용 사용자(예: sol) 사용 권장.

디스크 준비 (Ubuntu)

Ledger·Accounts를 별도 파티션에 마운트하는 예시입니다.

# 디스크 공간 확인
df -h

# 블록 디바이스 확인 (미포맷 디스크는 UUID 없음)
lsblk -f

# 예: /dev/nvme0n1 포맷 후 마운트 (Ledger)
sudo mkfs -t ext4 /dev/nvme0n1
sudo mkdir -p /mnt/ledger
sudo chown -R sol:sol /mnt/ledger
sudo mount /dev/nvme0n1 /mnt/ledger

# 예: /dev/nvme1n1 포맷 후 마운트 (Accounts)
sudo mkfs -t ext4 /dev/nvme1n1
sudo mkdir -p /mnt/accounts
sudo chown -R sol:sol /mnt/accounts
sudo mount /dev/nvme1n1 /mnt/accounts

재부팅 후에도 마운트하려면 /etc/fstab에 UUID로 등록하세요.


Solana CLI 설치

노드 서버와 별도로, 키 생성·vote 계정 생성 등은 로컬 PC에서 Solana CLI를 설치해 수행할 수 있습니다.
노드 서버에도 동일하게 CLI를 설치하면 solana-validator를 실행할 수 있습니다.

방법 1: Solana 설치 도구 사용 (권장)

Linux / macOS:

# 특정 버전 설치 (v1.18.18은 예시, 최신은 릴리스 페이지 확인)
sh -c "$(curl -sSfL https://release.solana.com/v1.18.18/install)"

# 채널 이름 사용: stable, beta, edge
# sh -c "$(curl -sSfL https://release.solana.com/stable/install)"

# PATH에 추가 (설치 후 안내 메시지 참고)
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"

# 버전 확인
solana --version

업데이트는 solana-install update 또는 동일한 install 스크립트로 원하는 버전을 다시 지정하면 됩니다.

Windows:
Installing Solana CLI - Windows에 따라 solana-install-init 사용.

방법 2: 사전 빌드 바이너리 수동 설치

  1. Solana Releases에서

    • Linux: solana-release-x86_64-unknown-linux-gnu.tar.bz2
    • macOS: solana-release-x86_64-apple-darwin.tar.bz2
      다운로드.
  2. 압축 해제 후 bin을 PATH에 추가:

tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2
cd solana-release
export PATH=$PWD/bin:$PATH
solana --version

방법 3: 소스에서 빌드

Installing Solana CLI - Build From Source 참고.
Rust, 빌드 의존성(protobuf, llvm, libclang 등) 설치 후 저장소 클론·빌드:

# Debian/Ubuntu 의존성 예시
apt-get install build-essential pkg-config libudev-dev llvm libclang-dev protobuf-compiler

# 소스 빌드 후
./scripts/cargo-install-all.sh .
export PATH=$PWD/bin:$PATH

검증자/RPC 노드 준비

1. 키 생성 (검증자만 해당)

RPC 전용 노드는 vote 계정이 없어도 되므로, identity 키페이어만 있으면 됩니다.
검증자로 운영할 경우 로컬 PC에서 다음 키를 생성하고, authorized-withdrawer는 안전한 곳에 보관합니다.

solana-keygen new -o validator-keypair.json
solana-keygen new -o vote-account-keypair.json
solana-keygen new -o authorized-withdrawer-keypair.json

2. Vote 계정 생성 (검증자만 해당)

RPC 전용이면 이 단계는 생략합니다.

solana config set --url https://api.testnet.solana.com   # 또는 mainnet-beta
solana config set --keypair ./validator-keypair.json
solana airdrop 1   # testnet/devnet만 가능, mainnet은 SOL 입금 필요
solana create-vote-account -ut \
  --fee-payer ./validator-keypair.json \
  ./vote-account-keypair.json \
  ./validator-keypair.json \
  ./authorized-withdrawer-keypair.json

3. 시스템 튜닝 (Linux)

검증자/RPC 노드 서버에서 적용합니다. 공식 문서의 System Tuning 내용을 참고해, sysctl·limits 설정을 추가합니다.

# 예: sysctl 설정 (문서의 21-solana-validator.conf 내용 적용)
sudo bash -c 'cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
# Solana validator tuning
vm.max_map_count=1000000
EOF'
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf

# nofile limit (문서의 90-solana-nofiles.conf 내용 적용)
sudo bash -c 'cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
sol soft nofile 1000000
sol hard nofile 1000000
EOF'

실제 값과 파일 내용은 Setup a Validator - System Tuning를 따라 주세요.

4. 클러스터별 예시 명령

엔트리포인트·--expected-genesis-hash·--known-validator는 클러스터마다 다릅니다.
공식 예시: Available Clusters.

Testnet RPC 노드 예시 (identity만 사용, vote 없음):

solana-validator \
  --identity /home/sol/validator-keypair.json \
  --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
  --known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
  --known-validator eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ \
  --known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
  --known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
  --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
  --only-known-rpc \
  --full-rpc-api \
  --no-voting \
  --ledger /mnt/ledger \
  --accounts /mnt/accounts \
  --log /home/sol/solana-rpc.log \
  --rpc-port 8899 \
  --rpc-bind-address 0.0.0.0 \
  --private-rpc \
  --dynamic-port-range 8000-8020 \
  --entrypoint entrypoint.testnet.solana.com:8001 \
  --entrypoint entrypoint2.testnet.solana.com:8001 \
  --entrypoint entrypoint3.testnet.solana.com:8001 \
  --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
  --wal-recovery-mode skip_any_corrupted_record \
  --limit-ledger-size

Mainnet Beta용 예시는 Clusters - Mainnet Beta를 그대로 참고해 --entrypoint, --expected-genesis-hash, --known-validator를 바꾸면 됩니다.


RPC 노드 전용 설정

RPC 전용으로 쓸 때 알아두면 좋은 옵션입니다.

플래그 설명
--no-voting 합의에 참여하지 않음. RPC 전용 시 사용.
--full-rpc-api 모든 RPC 메서드 활성화.
--private-rpc RPC 포트를 gossip에 공개하지 않음.
--limit-ledger-size 로컬에 보관할 블록 수 제한. 전체 체인을 저장하지 않음.
--rpc-port JSON-RPC HTTP 포트 (기본 8899).
--rpc-bind-address 0.0.0.0 RPC를 모든 인터페이스에서 수신.

Ledger 크기 제한

Solana는 TPS가 높아, RPC 노드가 전체 체인을 디스크에 두기 어렵습니다.
--limit-ledger-size로 보관 블록 수를 제한하고, 오래된 히스토리는 Solana Bigtable 등으로 조회하는 구성을 권장합니다.

계정 인덱싱 (Account indexing)

getProgramAccounts, SPL 토큰 관련 RPC 등이 느릴 때 --account-index로 인덱스를 켜면 성능이 좋아질 수 있습니다.

--account-index program-id
--account-index spl-token-mint
--account-index spl-token-owner

여러 개 지정 가능. 사용 시 RAM 512 GB 이상 권장.


실행 및 확인

실행

  • 위와 같이 solana-validator 명령을 직접 실행하거나,
  • validator.sh 스크립트로 만든 뒤 systemd 서비스로 등록해 사용할 수 있습니다.

동작 확인

  • RPC: curl http://localhost:8899 -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
  • 로그: --log로 지정한 파일 또는 stdout 확인.
  • 버전: solana --version, solana-validator --version

자세한 운영·모범 사례는 Best Practices, Setup an RPC Node를 참고하세요.

solana 다른 챕터