Criando um Node Nativo do Rocket Pool sem Docker
Este guia foi projetado para o Smartnode v1.6.5 e superior.
Se você estiver usando uma versão anterior, deve atualizar para v1.6.5 ou superior antes de configurar o modo Nativo.
Nesta seção, vamos percorrer o processo de instalação da stack do Smartnode do Rocket Pool nativamente no seu sistema, sem o uso de containers Docker.
O plano geral é o seguinte:
- Criar uma configuração padrão de solo-staking com serviços
systemdpara o Cliente de Execução, o Cliente de Consenso / Beacon Node e o Cliente Validador - Criar serviços de sistema para os componentes do Rocket Pool (os processos node e watchtower)
- Configurar o Rocket Pool para se comunicar com seus serviços de cliente
- Atualizar a definição do serviço do Cliente Validador para usar o destinatário de taxa do Rocket Pool e as chaves do validador
Esta é uma configuração bastante envolvida, então levará algum tempo para ser concluída.
A diversidade de Sistemas Operacionais e distros disponíveis torna impraticável disponibilizar guias para todos eles. As instruções neste guia são adaptadas para um sistema baseado em Debian (incluindo Ubuntu). Para outras distros ou sistemas operacionais, você pode seguir as etapas de alto nível descritas no guia, mas terá que substituir certos comandos pelos que seu sistema usa, conforme apropriado.
Este guia é destinado a usuários experientes em administração e uso de sistemas Linux. Isso inclui usar o terminal, criar contas de sistema, gerenciar permissões e instalar serviços. Assumimos que você está familiarizado com essas atividades - como você estará gerenciando a maior parte da infraestrutura por conta própria, fornecemos apenas suporte limitado para instalações Nativas. Se você não está familiarizado com essas atividades, não recomendamos que use o Modo Nativo.
Passo 1: Configurar os Clientes de Execução e Consenso
O Modo Nativo efetivamente estende uma configuração padrão de solo-staking e simplesmente permite que o software Smartnode se conecte aos clientes que ele já executa (com algumas pequenas modificações).
Para isso, recomendamos que você comece seguindo alguns dos guias convencionais de solo staking fornecidos pela comunidade:
- Conjunto de guias por cliente de Somer Esat: https://github.com/SomerEsat/ethereum-staking-guides
- Guias CoinCashew: https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet
Observe que você não criará realmente um validador conforme definido nesses guias - o Rocket Pool fará isso por você. Você pode ignorar as partes que envolvem a ferramenta Staking Deposit CLI.
Você simplesmente precisa seguir os guias até o ponto em que você tenha um serviço de Cliente de Execução, um serviço de Cliente de Consenso / Beacon Node e um serviço de Cliente Validador todos instalados e sincronizando a chain. Pule as etapas que envolvem financiar um validador e registrar seu mnemônico.
Além disso, há um caso especial para o destinatário de taxa - quando você chegar à parte do guia onde especifica o destinatário de taxa na configuração do seu Cliente Validador, deixe em branco por enquanto. Descreveremos como configurá-lo para validadores do Rocket Pool abaixo.
Depois que seus clientes estiverem instalados e você puder ver em seus logs que eles estão sincronizando as chains corretamente, você pode seguir os próximos passos para configurar o Smartnode do Rocket Pool e conectá-lo aos seus clientes.
Passo 2: Instalar o Rocket Pool
Criando a Conta de Serviço
O primeiro passo é criar uma nova conta de sistema para os serviços do Rocket Pool e desabilitar o acesso de login e shell para ela:
Agora, adicione-se ao grupo rp.
Você precisará fazer isso para usar a CLI do Rocket Pool, porque ela e o daemon do Rocket Pool precisam acessar o arquivo da carteira da camada de Execução.
Finalmente, adicione a conta de usuário do seu Cliente Validador ao grupo rp também.
O nome dessa conta de usuário depende de qual guia você seguiu para configurar seu serviço VC.
Por exemplo, se seu VC roda como usuário lighthousevalidator, você faria o seguinte:
Depois disso, saia e entre novamente para que as alterações tenham efeito.
Configurando os Binários
Comece criando uma pasta para o Rocket Pool e uma subpasta de dados.
Você pode colocar isso onde quiser; para este guia, vou colocar em /srv:
Agora, baixe os binários da CLI e do daemon (ou ignore isso e construa-os a partir do código-fonte, se preferir). Escolha a plataforma que seu sistema usa nas abas abaixo.
Agora, defina o proprietário e o grupo do daemon como rp:
Finalmente, defina o bit suid e outros bits de permissão no binário do daemon:
Isso garantirá que o daemon sempre seja executado como usuário rp, para que sempre tenha as permissões adequadas definidas.
O Smartnode provavelmente falhará com erros de permissão se você não fizer isso. Por favor, certifique-se de executar este comando!
Configurando a Pasta de Instalação
Com a CLI e o Daemon instalados, você precisará configurar a estrutura de pastas e os arquivos que o Smartnode espera que existam. Comece criando as seguintes pastas:
Em seguida, baixe os seguintes scripts - o Rocket Pool os usará quando precisar parar ou reiniciar seu Cliente Validador para alterar seu destinatário de taxa (discutido mais tarde) ou carregar novas chaves após você criar um novo minipool:
Agora abra ~/.profile com seu editor de escolha e adicione esta linha no final:
Salve, então recarregue seu perfil:
Isso permitirá que você interaja com a CLI do Rocket Pool com o comando rp, que é um atalho conveniente.
Criando os Serviços
Em seguida, criaremos um serviço systemd para o daemon do node do Rocket Pool.
Este é o serviço que verificará automaticamente e reivindicará recompensas RPL após cada checkpoint, e apostará minipools depois que você os criar via node deposit.
Também criaremos um serviço watchtower.
Isso será usado se você for membro do Oracle DAO ou se quiser gerar suas próprias árvores de intervalo de recompensas (discutido na seção Reivindicando Recompensas mais tarde).
Crie o serviço rp-node:
Conteúdo:
Crie um arquivo de log para o serviço, para que você possa assistir sua saída - isso substituirá o comportamento de rocketpool service logs node:
Conteúdo:
Salve, então torne executável:
Agora você pode assistir os logs do node simplesmente executando:
Os serviços estão agora instalados.
Configurando Acesso a Scripts sem Senha
O próximo passo é dar ao usuário rp a capacidade de reiniciar o Cliente Validador quando novas chaves de validador forem criadas, e parar o Cliente Validador se uma condição de emergência for detectada.
Crie um novo arquivo sudoers usando visudo:
Adicione as seguintes linhas a ele:
Onde <validator service name> é o nome do seu serviço VC (por exemplo, lighthousevalidator)
Agora, modifique /srv/rocketpool/restart-vc.sh:
- Descomente a linha no final e altere para
sudo systemctl restart <validator service name>
Também modifique /srv/rocketpool/stop-validator.sh:
- Descomente a linha no final e altere para
sudo systemctl stop <validator service name>
Tudo pronto!
O processo node agora pode reiniciar ou parar seu VC conforme necessário automaticamente.
Passo 3: Configurar o Smartnode
Agora que todos os seus serviços estão criados, é hora de configurar a stack Smartnode.
Por favor, visite o guia Configurando a Stack Smartnode (Modo Nativo) e retorne aqui quando terminar.
Habilitando e Executando os Serviços
Com todos os serviços instalados, é hora de:
- Habilitá-los para que eles reiniciem automaticamente se quebrarem e iniciem automaticamente em uma reinicialização
- Iniciá-los todos
Configurando uma Carteira
Em seguida, crie uma nova carteira de node ou recupere uma carteira existente. Por favor, siga cuidadosamente as instruções na seção Configurando uma Carteira do guia e retorne aqui quando terminar.
Uma vez feito isso, use os scripts de arquivo de log do serviço para verificar se eles carregaram com sucesso sua nova carteira. Você também deve verificar isso usando o seguinte comando:
Se funcionar corretamente, deve produzir a seguinte saída:
Passo 4: Atualizar a Definição do Serviço VC
Ao contrário de uma configuração de solo staking, o Rocket Pool gera e gerencia suas chaves de validador automaticamente. Há alguns ajustes que você precisará fazer no arquivo de definição do serviço VC que você acabou de criar para que funcione corretamente com o Rocket Pool, incluindo:
- O Destinatário de Taxa
- O diretório de dados ou carteira do VC
- Os diretórios de chaves e segredos do VC
Vamos cobrir isso passo a passo para cada cliente.
Configurando o Arquivo de Destinatário de Taxa
É crucial que você siga esses passos - não fazer isso e usar o destinatário de taxa errado resultará em penalidades sendo aplicadas aos seus validadores e deduções tiradas do seu saldo da Beacon Chain!
O destinatário de taxa é o argumento que você fornece ao seu Cliente Validador que especifica o endereço na camada de Execução para o qual você deseja que suas taxas de prioridade e recompensas MEV sejam enviadas. O Rocket Pool tem dois endereços diferentes para o destinatário de taxa:
- Se você optou pelo Smoothing Pool, deve ser o endereço do Smoothing Pool
- Se você optou por não participar do Smoothing Pool, deve ser o endereço Fee Distributor do seu node
Para saber mais sobre o Smoothing Pool e seu Fee Distributor, consulte a seção Fee Distributors e o Smoothing Pool do guia.
O serviço node do Rocket Pool definirá isso para você automaticamente, detectando qual deve ser e definindo-o em um arquivo de configuração e reiniciando seu serviço de Cliente Validador para obter a alteração.
Seu serviço de Cliente Validador pode usar esse arquivo de configuração automaticamente, para que você não precise codificar o destinatário de taxa.
Abra o arquivo de definição do serviço systemd que você acabou de criar para seu Cliente Validador.
Antes da linha ExecStart, adicione esta linha:
Em seguida, modifique seu argumento de destinatário de taxa da seguinte forma; selecione seu cliente de escolha nas abas abaixo:
--suggested-fee-recipient address para --suggested-fee-recipient ${FEE_RECIPIENT}Se você iniciar seu Cliente Validador antes dos serviços do Rocket Pool, ele pode dar erro porque este arquivo ainda não existe. Não se preocupe, este arquivo será criado pelo Rocket Pool depois que você inicializar e iniciar seus serviços.
Definindo os Diretórios de Dados e Chaves
Em seguida, você deve dizer ao VC onde armazenar seus dados e carregar as chaves de validador que o Rocket Pool gera. Clique no cliente que você usa nas abas abaixo:
Crie os seguintes diretórios e defina seu proprietário como rp:
Agora, adicione ou altere os seguintes parâmetros no arquivo de definição do serviço do VC do Lighthouse para esses novos valores:
Relaxando umask
Por padrão, seu sistema normalmente virá com uma configuração umask que removerá o bit +w das permissões do grupo sempre que o daemon node criar uma nova pasta.
Isso é problemático para vários clientes de consenso, porque eles realmente escreverão coisas como arquivos de bloqueio ou outros metadados nos diretórios que o Smartnode cria quando gera novas chaves de validador durante um depósito de minipool.
Para combater isso e garantir que seu VC funcione corretamente, por favor relaxe suas configurações de umask.
Por exemplo, em vez de 0022, você deve considerar configurá-lo para 0002 para o usuário rp.
Cada sistema é diferente, então consulte um guia que cobre seu Sistema Operacional para aprender como fazer isso.
Este passo é crucial para garantir que as tarefas automáticas de staking e validação sejam tratadas adequadamente.
Se você notar problemas de permissão nos logs do seu VC após seu minipool passar pela verificação de 12 horas e entrar no status staking, você provavelmente precisará executar sudo chmod 775 na pasta contendo suas chaves de validador para que seu serviço VC possa escrever nessa pasta.
Recarregando o Serviço VC
Com essas alterações feitas, você pode agora recarregar e reiniciar o serviço VC usando o seguinte:
Se não estiver usando Prysm, por favor assista os logs do VC cuidadosamente para garantir que ele iniciou corretamente e os seguintes estão definidos corretamente:
- O destinatário de taxa
- O caminho de dados
- O caminho da carteira / chaves / segredos
Você pode verificar isso com, por exemplo, ps aux | grep fee para filtrar os processos em execução e ver o destinatário de taxa que seu VC usou.
Deve ser o mesmo definido em /srv/rocketpool/data/validators/rp-fee-recipient-env.txt.
Se todos estiverem usando os valores corretos, então parabéns! Você configurou com sucesso seu node do Rocket Pool e pode seguir as próximas seções do guia para aprender como usá-lo.
Próximos Passos
Agora que seus clientes estão instalados, recomendamos que você dê uma olhada nas sugestões de segurança na seção Protegendo seu Node a seguir. Como você está executando uma configuração Nativa, provavelmente já fez algumas dessas coisas; no entanto, não custa pelo menos explorar e ver como a postura de segurança recomendada se encaixa no seu sistema.