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: 사전 빌드 바이너리 수동 설치
-
- Linux:
solana-release-x86_64-unknown-linux-gnu.tar.bz2 - macOS:
solana-release-x86_64-apple-darwin.tar.bz2
다운로드.
- Linux:
압축 해제 후
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를 참고하세요.