Solana 노드 설치 가이드 (Ubuntu)
Ubuntu 서버에서 Solana(Agave) RPC/Validator 노드를 설치·실행하는 절차입니다.
전용 계정 sol을 사용하며, systemd 서비스와 logrotate로 운영합니다.
참고: Setup a Validator, Setup an RPC Node, Agave Releases.
Step 01 — 서버 접속 및 sol 계정 준비
Step01-01) 설치할 서버로 접속
# 예: SSH 별칭 사용
ssh 2
Step01-02) sol 계정 유무 확인
sol 계정이 있으면 Step02-01로 이동합니다.
cat /etc/passwd | grep sol
Step01-03) sol 계정이 없을 때만 실행 (계정 추가)
sudo adduser --disabled-password sol
sudo passwd -d sol
sudo su
echo 'sol ALL=NOPASSWD: ALL' >> /etc/sudoers
exit
Step 02 — sol 계정에서 노드 설치·설정
Step02-01) sol 계정으로 전환
su sol
cd /home/sol
프롬프트 예: sol@node1:/home/ubuntu$ → 작업 디렉토리를 /home/sol로 이동합니다.
기존 Solana 서비스가 있다면 중지·비활성화 후 정리:
# 서비스 중지 및 비활성화
sudo systemctl stop solana
sudo systemctl disable solana
이전 설치 파일·데이터 정리 (재설치 시):
sudo rm -rf /mnt/cryptocur-data/solana
sudo rm -rf logrotate.sol
sudo rm -rf solana.service
sudo rm -rf validator-keypair.json
sudo rm -rf .local/share/solana
sudo rm -rf .config/solana
sudo rm -rf solana-rpc.log*
Step02-02) sol 실행 파일을 받을 폴더 생성
이미 있으면 생략합니다.
mkdir -p /home/sol/bin
Step02-03) 새 버전 설치 및 config 설정
1) Agave(Solana) 바이너리 다운로드 및 압축 해제
최신 버전은 Agave Releases에서 확인하세요. 아래는 v2.1.21 예시입니다.
cd /home/sol
wget https://github.com/anza-xyz/agave/releases/download/v2.1.21/solana-release-x86_64-unknown-linux-gnu.tar.bz2
tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2
압축 해제 후 solana-release/ 디렉토리가 생성됩니다. 바이너리 경로는 ./solana-release/bin/ 입니다.
2) CLI 설정 (RPC URL, 키페이어)
./solana-release/bin/solana config get
설정 파일 기본 위치: /home/sol/.config/solana/cli/config.yml
./solana-release/bin/solana config set --url https://api.mainnet-beta.solana.com/
./solana-release/bin/solana-keygen new -o validator-keypair.json
BIP39 패스프레이즈는 선택 사항(엔터로 생략 가능). 생성된 시드 구문과 pubkey는 안전한 곳에 보관하세요.
./solana-release/bin/solana config set --keypair /home/sol/validator-keypair.json
3) 커널 파라미터 (sysctl)
/etc/sysctl.d/21-solana-validator.conf 존재 여부를 확인한 뒤, 없으면 생성합니다. 이미 있으면 이 단계는 생략합니다.
# 확인
sudo cat /etc/sysctl.d/21-solana-validator.conf
없다면 아래로 생성:
sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
# Increase UDP buffer size
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
# Increase memory mapped files limit
vm.max_map_count = 2000000
# Increase number of allowed open file descriptors
fs.nr_open = 2000000
EOF"
적용:
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf
4) systemd 전역 limit 설정
/etc/systemd/system.conf를 편집해 다음 두 줄을 추가합니다.
DefaultLimitNOFILE=2000000
DefaultLimitNPROC=2000000
sudo vim /etc/systemd/system.conf
# 추가 후 저장
# 적용 확인
sudo cat /etc/systemd/system.conf
5) validator 실행 스크립트
/home/sol/bin/validator.sh를 만들어 systemd에서 실행합니다.
실제 경로는 solana-release 또는 사용 중인 릴리스 디렉토리명에 맞게 수정하세요 (예: agave-validator).
예시 validator.sh:
cat /home/sol/bin/validator.sh
#!/bin/bash
exec /home/sol/solana-release/bin/agave-validator \
--identity /home/sol/validator-keypair.json \
--known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \
--known-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \
--known-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \
--known-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \
--only-known-rpc \
--full-rpc-api \
--no-voting \
--ledger /mnt/cryptocur-data/solana \
--limit-ledger-size 1000000000 \
--rocksdb-fifo-shred-storage-size 5000000000000 \
--log /home/sol/solana-rpc.log \
--rpc-port 3000 \
--rpc-bind-address 0.0.0.0 \
--private-rpc \
--enable-rpc-transaction-history \
--dynamic-port-range 8000-8020 \
--entrypoint entrypoint.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint4.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint5.mainnet-beta.solana.com:8001 \
--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
--wal-recovery-mode skip_any_corrupted_record \
--no-port-check
실제 설치 경로가 solana-release가 아니라 버전 디렉토리(예: 2.1.21-solana-release)라면 exec 라인의 경로를 해당 bin/agave-validator로 바꾸세요.
Step02-04) 노드 데이터 저장 디렉토리 생성
이미 있으면 생략합니다.
sudo mkdir -p /mnt/cryptocur-data/solana
sudo chown -R sol:sol /mnt/cryptocur-data/solana
Step02-05) systemd 서비스 등록 및 실행
1) 서비스 유닛 파일 생성
/home/sol/solana.service에 생성합니다.
sudo bash -c "cat > /home/sol/solana.service <<EOF
[Unit]
Description=Solana Validator
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=sol
LimitNOFILE=2000000
LimitNPROC=2000000
LogRateLimitIntervalSec=0
ExecStart=/home/sol/bin/validator.sh
[Install]
WantedBy=multi-user.target
EOF"
2) systemd에 링크 후 활성화·시작
sudo ln -sf /home/sol/solana.service /etc/systemd/system/solana.service
sudo systemctl enable --now solana
3) logrotate 설정
로그 로테이션으로 디스크 사용을 제한합니다.
cat > /home/sol/logrotate.sol <<EOF
/home/sol/solana-rpc.log {
rotate 24
hourly
missingok
postrotate
systemctl kill -s USR1 solana.service
endscript
}
EOF
sudo cp /home/sol/logrotate.sol /etc/logrotate.d/sol
sudo systemctl restart logrotate.service
확인
- 서비스 상태:
sudo systemctl status solana - 로그:
journalctl -u solana -f또는tail -f /home/sol/solana-rpc.log - RPC (예: 포트 3000):
curl http://localhost:3000 -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
자세한 설정·플래그는 configuration.md, 문제 발생 시 troubleshooting.md를 참고하세요.