Docker 없이 Native Rocket Pool 노드 생성하기
이 가이드는 Smartnode v1.6.5 이상 버전용으로 설계되었습니다.
이전 버전을 사용 중이라면 Native 모드를 구성하기 전에 v1.6.5 이상으로 업그레이드해야 합니다.
이 섹션에서는 Docker 컨테이너를 사용하지 않고 시스템에 Rocket Pool Smartnode 스택을 네이티브로 설치하는 과정을 안내합니다.
전반적인 계획은 다음과 같습니다:
- Execution Client, Consensus Client / Beacon Node, Validator Client를 위한
systemd서비스로 표준 솔로 스테이킹 설정 생성 - Rocket Pool 구성 요소(node 및 watchtower 프로세스)를 위한 시스템 서비스 생성
- 클라이언트 서비스와 통신하도록 Rocket Pool 구성
- Rocket Pool의 fee recipient와 validator 키를 사용하도록 Validator Client 서비스 정의 업데이트
이것은 상당히 복잡한 설정이므로 완료하는 데 시간이 걸립니다.
사용 가능한 운영 체제와 배포판의 다양성으로 인해 모든 경우에 대한 가이드를 제공하는 것은 비실용적입니다. 이 가이드의 지침은 Debian 기반 시스템(Ubuntu 포함)에 맞춰져 있습니다. 다른 배포판이나 운영 체제의 경우, 가이드에 설명된 상위 수준 단계를 따를 수 있지만 시스템에 맞는 명령으로 대체해야 합니다.
이 가이드는 Linux 시스템 관리 및 사용에 경험이 있는 사용자를 위한 것입니다. 여기에는 터미널 사용, 시스템 계정 생성, 권한 관리 및 서비스 설치가 포함됩니다. 이러한 활동에 익숙하다고 가정합니다 - 인프라의 대부분을 직접 관리하므로 Native 설치에 대해서는 제한적인 지원만 제공합니다. 이러한 활동에 익숙하지 않다면 Native Mode를 사용하지 않는 것이 좋습니다.
1단계: Execution 및 Consensus Client 설정
Native Mode는 기본적으로 표준 솔로 스테이킹 설정을 확장하며, 이미 실행 중인 클라이언트에 Smartnode 소프트웨어를 연결할 수 있도록 합니다(몇 가지 작은 수정 포함).
이를 위해 커뮤니티에서 제공하는 기존 솔로 스테이킹 가이드를 먼저 따르는 것이 좋습니다:
- Somer Esat의 클라이언트별 가이드: https://github.com/SomerEsat/ethereum-staking-guides
- CoinCashew 가이드: https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet
참고로 실제로 해당 가이드에서 정의된 대로 validator를 생성하지 않습니다 - Rocket Pool이 대신 수행합니다. Staking Deposit CLI 도구와 관련된 부분은 무시할 수 있습니다.
Execution Client 서비스, Consensus Client / Beacon Node 서비스, Validator Client 서비스가 모두 설치되고 체인을 동기화하는 지점까지만 가이드를 따르면 됩니다. validator 자금 조달 및 니모닉 기록과 관련된 단계는 건너뛰세요.
또한 fee recipient에 대한 특별한 경우가 있습니다 - Validator Client 구성에서 fee recipient를 지정하는 가이드 부분에 도달하면 지금은 비워 두세요. 아래에서 Rocket Pool validator를 위해 설정하는 방법을 설명하겠습니다.
클라이언트가 설치되고 로그에서 체인을 제대로 동기화하고 있는 것을 확인하면 다음 단계에 따라 Rocket Pool Smartnode를 설정하고 클라이언트에 연결할 수 있습니다.
2단계: Rocket Pool 설치
서비스 계정 생성
첫 번째 단계는 Rocket Pool 서비스를 위한 새 시스템 계정을 생성하고 로그인 및 셸 액세스를 비활성화하는 것입니다:
이제 자신을 rp 그룹에 추가하세요.
Rocket Pool CLI를 사용하려면 이 작업을 수행해야 합니다. CLI와 Rocket Pool 데몬 모두 Execution 레이어 지갑 파일에 액세스해야 하기 때문입니다.
마지막으로 Validator Client의 사용자 계정도 rp 그룹에 추가하세요.
해당 사용자 계정의 이름은 VC 서비스를 설정하기 위해 따른 가이드에 따라 다릅니다.
예를 들어 VC가 lighthousevalidator 사용자로 실행되는 경우 다음을 수행합니다:
이 작업 후 로그아웃했다가 다시 로그인하여 변경 사항을 적용하세요.
바이너리 설정
먼저 Rocket Pool용 폴더와 데이터 하위 폴더를 만드세요.
원하는 곳에 배치할 수 있습니다. 이 가이드에서는 /srv에 배치하겠습니다:
이제 CLI 및 데몬 바이너리를 다운로드하세요(또는 원한다면 소스에서 빌드하는 것을 무시하세요). 아래 탭에서 시스템에서 사용하는 플랫폼을 선택하세요.
이제 데몬의 소유자와 그룹을 rp로 설정하세요:
마지막으로 데몬 바이너리에 suid 비트를 설정하고 다른 권한 비트를 설정하세요:
이렇게 하면 데몬이 항상 rp 사용자로 실행되어 항상 적절한 권한이 설정됩니다.
이 작업을 수행하지 않으면 Smartnode가 권한 오류로 실패할 가능성이 높습니다. 이 명령을 반드시 실행하세요!
설치 폴더 설정
CLI 및 Daemon이 설치되면 Smartnode가 존재할 것으로 예상하는 폴더 구조와 관련 파일을 설정해야 합니다. 먼저 다음 폴더를 생성하세요:
다음으로, 아래 스크립트를 다운로드하세요 - Rocket Pool은 fee recipient를 변경하거나(나중에 설명) 새 minipool을 생성한 후 새 키를 로드하기 위해 Validator Client를 중지하거나 재시작해야 할 때 이를 사용합니다:
이제 선택한 편집기로 ~/.profile을 열고 끝에 다음 줄을 추가하세요:
저장한 다음 프로필을 다시 로드하세요:
이렇게 하면 rp 명령으로 Rocket Pool의 CLI와 상호 작용할 수 있으며, 이는 편리한 단축키입니다.
서비스 생성
다음으로 Rocket Pool 노드 데몬을 위한 systemd 서비스를 생성합니다.
이것은 각 체크포인트 이후 RPL 보상을 자동으로 확인하고 청구하며, node deposit을 통해 minipool을 생성한 후 스테이크하는 서비스입니다.
또한 watchtower 서비스도 생성합니다.
이것은 Oracle DAO 회원이거나 나중에 자체 보상 간격 트리를 생성하려는 경우(나중에 보상 청구 섹션에서 설명) 사용됩니다.
rp-node 서비스를 생성하세요:
내용:
서비스의 로그 파일을 생성하여 출력을 볼 수 있도록 합니다 - 이것은 rocketpool service logs node의 동작을 대체합니다:
내용:
저장한 다음 실행 가능하게 만드세요:
이제 다음을 실행하여 노드의 로그를 볼 수 있습니다:
이제 서비스가 설치되었습니다.
비밀번호 없는 스크립트 액세스 설정
다음 단계는 새 validator 키가 생성되거나 비상 상황이 감지되면 rp 사용자가 Validator Client를 재시작하거나 중지할 수 있도록 하는 것입니다.
visudo를 사용하여 새 sudoers 파일을 생성하세요:
다음 줄을 추가하세요:
여기서 <validator service name>은 VC 서비스의 이름입니다(예: lighthousevalidator)
이제 /srv/rocketpool/restart-vc.sh를 수정하세요:
- 끝에 있는 줄의 주석을 해제하고
sudo systemctl restart <validator service name>으로 변경하세요
또한 /srv/rocketpool/stop-validator.sh도 수정하세요:
- 끝에 있는 줄의 주석을 해제하고
sudo systemctl stop <validator service name>으로 변경하세요
완료되었습니다!
이제 node 프로세스가 필요에 따라 자동으로 VC를 재시작하거나 중지할 수 있습니다.
3단계: Smartnode 구성
이제 모든 서비스가 생성되었으므로 Smartnode 스택을 구성할 차례입니다.
Smartnode 스택 구성(Native Mode) 가이드를 방문하고 완료되면 여기로 돌아오세요.
서비스 활성화 및 실행
모든 서비스가 설치되었으므로 이제 다음을 수행할 차례입니다:
- 서비스가 손상되면 자동으로 재시작되고 재부팅 시 자동으로 시작되도록 활성화
- 모두 시작
지갑 설정
다음으로 새 노드 지갑을 생성하거나 기존 지갑을 복구하세요. 가이드의 지갑 설정 부분의 지침을 주의 깊게 따르고 완료되면 여기로 돌아오세요.
완료되면 서비스 로그 파일 스크립트를 사용하여 새 지갑이 성공적으로 로드되었는지 확인하세요. 다음 명령을 사용하여 이를 확인해야 합니다:
제대로 작동하면 다음 출력이 표시됩니다:
4단계: VC 서비스 정의 업데이트
솔로 스테이킹 설정과 달리 Rocket Pool은 validator 키를 자동으로 생성하고 관리합니다. Rocket Pool이 올바르게 작동하도록 방금 생성한 VC 서비스 정의 파일에 몇 가지 조정을 해야 합니다:
- Fee Recipient
- VC의 데이터 또는 지갑 디렉토리
- VC의 키 및 시크릿 디렉토리
각 클라이언트에 대해 단계별로 설명하겠습니다.
Fee Recipient 파일 설정
이 단계를 따르는 것이 매우 중요합니다 - 이를 수행하지 않고 잘못된 fee recipient를 사용하면 validator에 페널티가 적용되고 Beacon Chain 잔액에서 공제됩니다!
fee recipient는 Execution 레이어에서 우선권 수수료 및 MEV 보상을 받을 주소를 지정하기 위해 Validator Client에 제공하는 인수입니다. Rocket Pool은 fee recipient에 대해 두 가지 다른 주소를 가지고 있습니다:
- Smoothing Pool에 옵트인한 경우 Smoothing Pool의 주소여야 합니다
- Smoothing Pool에서 옵트아웃한 경우 노드의 Fee Distributor 주소여야 합니다
Smoothing Pool 및 Fee Distributor에 대한 자세한 내용은 가이드의 Fee Distributor와 Smoothing Pool 섹션을 참조하세요.
Rocket Pool의 node 서비스는 필요한 주소를 자동으로 감지하고 구성 파일에 설정한 다음 Validator Client 서비스를 재시작하여 변경 사항을 적용합니다.
Validator Client 서비스는 해당 구성 파일을 자동으로 사용할 수 있으므로 fee recipient를 하드 코딩할 필요가 없습니다.
Validator Client용으로 방금 생성한 systemd 서비스 정의 파일을 여세요.
ExecStart 줄 앞에 다음 줄을 추가하세요:
그런 다음 fee recipient 인수를 다음과 같이 수정하세요. 아래 탭에서 선택한 클라이언트를 선택하세요:
--suggested-fee-recipient address를 --suggested-fee-recipient ${FEE_RECIPIENT}로 변경하세요Rocket Pool 서비스보다 먼저 Validator Client를 시작하면 이 파일이 아직 존재하지 않기 때문에 오류가 발생할 수 있습니다. 걱정하지 마세요. 이 파일은 Rocket Pool을 초기화하고 서비스를 시작하면 생성됩니다.
데이터 및 키 디렉토리 설정
다음으로 VC가 데이터를 저장하고 Rocket Pool이 생성하는 validator 키를 로드할 위치를 알려줘야 합니다. 아래 탭에서 사용하는 클라이언트를 클릭하세요:
다음 디렉토리를 생성하고 소유자를 rp로 설정하세요:
이제 Lighthouse VC의 서비스 정의 파일에서 다음 매개변수를 추가하거나 새 값으로 변경하세요:
umask 완화
기본적으로 시스템은 일반적으로 node 데몬이 새 폴더를 생성할 때마다 그룹 권한에서 +w 비트를 제거하는 umask 구성으로 제공됩니다.
이것은 여러 consensus client에 문제가 됩니다. minipool 예치 중 새 validator 키를 생성할 때 Smartnode가 생성하는 디렉토리에 잠금 파일이나 기타 메타데이터와 같은 것을 실제로 작성하기 때문입니다.
이를 방지하고 VC가 올바르게 작동하도록 하려면 umask 설정을 완화하세요.
예를 들어 0022 대신 rp 사용자에 대해 0002로 설정하는 것을 고려해야 합니다.
모든 시스템이 다르므로 운영 체제를 다루는 가이드를 참조하여 이 작업을 수행하는 방법을 배우세요.
이 단계는 자동 스테이킹 및 검증 작업이 제대로 처리되도록 하는 데 중요합니다.
minipool이 12시간 스크럽 검사를 통과하고 staking 상태에 들어간 후 VC 로그에서 권한 문제가 발견되면 VC 서비스가 해당 폴더에 쓸 수 있도록 validator 키가 포함된 폴더에서 sudo chmod 775를 실행해야 할 수 있습니다.
VC 서비스 다시 로드
이러한 변경 사항을 적용한 후 다음을 사용하여 VC 서비스를 다시 로드하고 재시작할 수 있습니다:
Prysm을 사용하지 않는 경우, VC의 로그를 주의 깊게 확인하여 성공적으로 시작되었고 다음이 올바르게 정의되었는지 확인하세요:
- fee recipient
- 데이터 경로
- 지갑 / 키 / 시크릿 경로
예를 들어 ps aux | grep fee로 실행 중인 프로세스를 필터링하여 VC가 사용한 fee recipient를 확인할 수 있습니다.
/srv/rocketpool/data/validators/rp-fee-recipient-env.txt에 정의된 것과 동일해야 합니다.
모두 올바른 값을 사용하고 있다면 축하합니다! Rocket Pool 노드를 성공적으로 설정했으며 가이드의 다음 섹션을 따라 사용 방법을 배울 수 있습니다.
다음 단계
이제 클라이언트가 설치되었으므로 다음으로 노드 보안 섹션의 보안 제안 사항을 살펴보는 것이 좋습니다. Native 설정을 실행하고 있으므로 이러한 작업 중 일부를 이미 수행했을 가능성이 높습니다. 그럼에도 불구하고 적어도 탐색해 보고 권장 보안 태세가 시스템에 얼마나 잘 맞는지 확인하는 것이 좋습니다.