Nodes/solana/localhost/dns-install-ver/installation

solana

Solana 노드 설치 가이드 (Ubuntu)

9분 읽기 · localhost/dns-install-ver/installation

list목차(11)

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를 참고하세요.

solana 다른 챕터