Creazione di un Nodo Rocket Pool Nativo senza Docker

NOTA

Questa guida è progettata per Smartnode v1.6.5 e superiori.

Se stai utilizzando una versione precedente, devi aggiornare alla v1.6.5 o superiore prima di configurare la modalità Nativa.

In questa sezione, illustreremo il processo di installazione dello stack Smartnode di Rocket Pool nativamente sul tuo sistema, senza l'uso di container Docker.

Il piano generale è il seguente:

  1. Creare una configurazione standard di solo-staking con servizi systemd per l'Execution Client, il Consensus Client / Beacon Node e il Validator Client
  2. Creare servizi di sistema per i componenti di Rocket Pool (i processi node e watchtower)
  3. Configurare Rocket Pool per comunicare con i tuoi servizi client
  4. Aggiornare la definizione del servizio Validator Client per utilizzare il fee recipient e le chiavi di validazione di Rocket Pool

Questa è una configurazione piuttosto complessa, quindi richiederà del tempo per essere completata.

La diversità dei Sistemi Operativi e delle distro disponibili rende impraticabile fornire guide per tutti. Le istruzioni in questa guida sono adattate a un sistema basato su Debian (incluso Ubuntu). Per altre distro o sistemi operativi, puoi seguire i passaggi di alto livello descritti nella guida ma dovrai sostituire alcuni comandi con quelli utilizzati dal tuo sistema, se necessario.

Danger

Questa guida è destinata a utenti esperti nell'amministrazione e nell'uso di sistemi Linux. Ciò include l'uso del terminale, la creazione di account di sistema, la gestione dei permessi e l'installazione di servizi. Assumiamo che tu sia familiare con queste attività - poiché gestirai la maggior parte dell'infrastruttura da solo, forniamo solo supporto limitato per le installazioni Native. Se non sei familiare con queste attività, non ti consigliamo di utilizzare la Modalità Nativa.

Passo 1: Configurare l'Execution e il Consensus Client

La Modalità Nativa estende efficacemente una configurazione standard di solo-staking, e consente semplicemente al software Smartnode di collegarsi ai client che già esegue (con alcune piccole modifiche).

A tal fine, ti consigliamo di iniziare seguendo alcune delle guide convenzionali di solo staking fornite dalla community:

Nota che non creerai effettivamente un validatore come definito in quelle guide - Rocket Pool lo farà per te. Puoi ignorare le porzioni che coinvolgono lo strumento Staking Deposit CLI.

Devi semplicemente seguire le guide fino al punto in cui hai un servizio Execution Client, un servizio Consensus Client / Beacon Node e un servizio Validator Client tutti installati e sincronizzati con la chain. Salta i passaggi che comportano il finanziamento di un validatore e la registrazione del suo mnemonico.

Inoltre, c'è un caso speciale per il fee recipient - quando arrivi alla porzione della guida in cui specifichi il fee recipient nella configurazione del tuo Validator Client, lascialo vuoto per ora. Descriveremo come configurarlo per i validatori Rocket Pool di seguito.

Una volta che i tuoi client sono installati e puoi vedere nei loro log che stanno sincronizzando correttamente le chain, puoi seguire i passaggi successivi per configurare lo Smartnode di Rocket Pool e collegarlo ai tuoi client.

Passo 2: Installare Rocket Pool

Creazione dell'Account di Servizio

Il primo passo è creare un nuovo account di sistema per i servizi Rocket Pool e disabilitare l'accesso login e shell per esso:

sudo useradd -r -s /sbin/nologin rp

Ora, aggiungiti al gruppo rp. Dovrai farlo per poter utilizzare la CLI di Rocket Pool, perché sia essa che il daemon di Rocket Pool devono accedere al file del wallet dell'Execution layer.

sudo usermod -aG rp $USER

Infine, aggiungi l'account utente per il tuo Validator Client al gruppo rp. Il nome di quell'account utente dipende da quale guida hai seguito per configurare il tuo servizio VC.

Ad esempio, se il tuo VC viene eseguito come utente lighthousevalidator, faresti quanto segue:

sudo usermod -aG rp lighthousevalidator

Dopo questo, disconnettiti e riconnettiti affinché le modifiche abbiano effetto.

Configurazione dei Binari

Inizia creando una cartella per Rocket Pool e una sottocartella data. Puoi metterla dove vuoi; per questa guida, la metterò in /srv:

sudo mkdir -p /srv/rocketpool

sudo chown $USER:$USER /srv/rocketpool

Ora, scarica i binari CLI e daemon (o ignora questo e costruiscili dal sorgente se preferisci). Scegli la piattaforma utilizzata dal tuo sistema dalle schede seguenti.

Linux x64
Linux arm64
macOS x64
macOS arm64
sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-cli-linux-amd64 -O /usr/local/bin/rocketpool

sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-daemon-linux-amd64 -O /usr/local/bin/rocketpoold

sudo chmod +x /usr/local/bin/rocketpool

Ora, imposta il proprietario e il gruppo del daemon su rp:

sudo chown rp:rp /usr/local/bin/rocketpoold

Infine, imposta il bit suid e altri bit di permesso sul binario daemon:

sudo chmod u+sx,g+sx,o-rwx /usr/local/bin/rocketpoold

Questo assicurerà che il daemon venga sempre eseguito come utente rp, in modo che abbia sempre i permessi appropriati impostati.

NOTA

Lo Smartnode molto probabilmente fallirà con errori di permessi se non esegui questo comando. Assicurati di eseguire questo comando!

Configurazione della Cartella di Installazione

Con la CLI e il Daemon installati, dovrai configurare la struttura delle cartelle e i file associati che lo Smartnode si aspetta esistano. Inizia creando le seguenti cartelle:

mkdir -p /srv/rocketpool/data/validators && sudo chmod 775 /srv/rocketpool/data/validators

mkdir /srv/rocketpool/data/rewards-trees

mkdir /srv/rocketpool/data/custom-keys

sudo chown -R rp:rp /srv/rocketpool/data

Successivamente, scarica i seguenti script - Rocket Pool li utilizzerà quando deve fermare o riavviare il tuo Validator Client per modificare il suo fee recipient (discusso più avanti) o caricare nuove chiavi dopo aver creato un nuovo minipool:

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/restart-vc.sh -O /srv/rocketpool/restart-vc.sh

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/stop-validator.sh -O /srv/rocketpool/stop-validator.sh

chmod +x /srv/rocketpool/restart-vc.sh

chmod +x /srv/rocketpool/stop-validator.sh

Ora apri ~/.profile con l'editor di tua scelta e aggiungi questa riga alla fine:

alias rp="rocketpool -d /usr/local/bin/rocketpoold -c /srv/rocketpool"

Salvalo, quindi ricarica il tuo profilo:

source ~/.profile

Questo ti permetterà di interagire con la CLI di Rocket Pool con il comando rp, che è una bella scorciatoia.

Creazione dei Servizi

Successivamente, creeremo un servizio systemd per il daemon del nodo Rocket Pool. Questo è il servizio che controllerà automaticamente e rivendicherà le ricompense RPL dopo ogni checkpoint, e metterà in stake i minipool una volta creati tramite node deposit.

Creeremo anche un servizio watchtower. Questo verrà utilizzato se sei un membro dell'Oracle DAO, o se vuoi mai generare i tuoi alberi degli intervalli di ricompensa (discusso nella sezione Rivendicare le Ricompense più avanti).

Node
Watchtower

Crea il servizio rp-node:

sudo nano /etc/systemd/system/rp-node.service

Contenuto:

[Unit]
Description=rp-node
After=network.target

[Service]
Type=simple
User=rp
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/rocketpoold --settings /srv/rocketpool/user-settings.yml node

[Install]
WantedBy=multi-user.target

Crea un file di log per il servizio, in modo da poter osservare il suo output - questo sostituirà il comportamento di rocketpool service logs node:

nano /srv/rocketpool/node-log.sh

Contenuto:

#!/bin/bash
journalctl -u rp-node -b -f

Salvalo, quindi rendilo eseguibile:

chmod +x /srv/rocketpool/node-log.sh

Ora puoi osservare i log del nodo semplicemente eseguendo:

sudo /srv/rocketpool/node-log.sh

I servizi sono ora installati.

Configurazione dell'Accesso allo Script senza Password

Il passo successivo è dare all'utente rp la possibilità di riavviare il Validator Client quando vengono create nuove chiavi di validazione e fermare il Validator Client se viene rilevata una condizione di emergenza.

Crea un nuovo file sudoers usando visudo:

sudo visudo -f /etc/sudoers.d/rocketpool

Aggiungi le seguenti righe:

Cmnd_Alias RP_RESTART = /usr/bin/systemctl restart <nome servizio validatore>
Cmnd_Alias RP_STOP = /usr/bin/systemctl stop <nome servizio validatore>
rp    ALL=(ALL) NOPASSWD: RP_RESTART, RP_STOP

Dove <nome servizio validatore> è il nome del tuo servizio VC (ad es. lighthousevalidator)

Ora, modifica /srv/rocketpool/restart-vc.sh:

  • Decommenta la riga alla fine e cambiala in sudo systemctl restart <nome servizio validatore>

Modifica anche /srv/rocketpool/stop-validator.sh:

  • Decommenta la riga alla fine e cambiala in sudo systemctl stop <nome servizio validatore>

Tutto pronto! Il processo node può ora riavviare o fermare il tuo VC automaticamente come richiesto.

Passo 3: Configurare lo Smartnode

Ora che tutti i tuoi servizi sono stati creati, è tempo di configurare lo stack Smartnode.

Visita la guida Configurazione dello Stack Smartnode (Modalità Nativa) e torna qui quando hai finito.

Abilitazione e Avvio dei Servizi

Con tutti i servizi installati, è tempo di:

  • Abilitarli in modo che si riavviino automaticamente se si interrompono e si avviino automaticamente al riavvio
  • Avviarli tutti
sudo systemctl daemon-reload

sudo systemctl enable rp-node rp-watchtower

sudo systemctl start rp-node rp-watchtower

Configurazione di un Wallet

Successivamente, crea un nuovo wallet del nodo o recupera un wallet esistente. Segui attentamente le istruzioni nella sezione Configurazione di un Wallet della guida, quindi torna qui quando hai finito.

Una volta fatto, usa gli script dei file di log del servizio per verificare che abbiano caricato correttamente il tuo nuovo wallet. Dovresti anche verificarlo usando il seguente comando:

rp wallet status

Se funziona correttamente, dovrebbe produrre il seguente output:

Your Smartnode is currently using the Hoodi Test Network.

The node wallet is initialized.
Node account: <address>

Passo 4: Aggiornare la Definizione del Servizio VC

A differenza di una configurazione di solo staking, Rocket Pool genera e gestisce automaticamente le sue chiavi di validazione. Ci sono alcune modifiche che dovrai apportare al file di definizione del servizio VC che hai appena creato affinché funzioni correttamente con Rocket Pool, tra cui:

  • Il Fee Recipient
  • La directory dei dati o del wallet del VC
  • Le directory delle chiavi e dei segreti del VC

Copriremo questi passaggi passo dopo passo per ogni client.

Configurazione del File del Fee Recipient

NOTA

È cruciale che tu segua questi passaggi - non farlo e usare il fee recipient sbagliato comporterà l'applicazione di penalità ai tuoi validatori e deduzioni dal tuo saldo Beacon Chain!

Il fee recipient è l'argomento che fornisci al tuo Validator Client che specifica l'indirizzo sull'Execution layer a cui desideri che vengano inviate le tue commissioni prioritarie e le ricompense MEV. Rocket Pool ha due indirizzi diversi per il fee recipient:

  • Se sei iscritto allo Smoothing Pool, deve essere l'indirizzo dello Smoothing Pool
  • Se non sei iscritto allo Smoothing Pool, deve essere l'indirizzo del Fee Distributor del tuo nodo

Per saperne di più sullo Smoothing Pool e il tuo Fee Distributor, consulta la sezione Fee Distributors e lo Smoothing Pool della guida.

Il servizio node di Rocket Pool lo imposterà automaticamente per te rilevando quale deve essere e impostandolo in un file di configurazione e riavviando il servizio Validator Client per acquisire la modifica. Il tuo servizio Validator Client può utilizzare quel file di configurazione automaticamente, quindi non è necessario codificare il fee recipient.

Apri il file di definizione del servizio systemd che hai appena creato per il tuo Validator Client. Prima della riga ExecStart, aggiungi questa riga:

EnvironmentFile=/srv/rocketpool/data/validators/rp-fee-recipient-env.txt

Quindi modifica il tuo argomento fee recipient come segue; seleziona il client di tua scelta dalle schede seguenti:

Lighthouse
Nimbus
Prysm
Teku
Cambia --suggested-fee-recipient address in --suggested-fee-recipient ${FEE_RECIPIENT}
NOTA

Se avvii il tuo Validator Client prima dei servizi di Rocket Pool, potrebbe generare un errore perché questo file non esiste ancora. Non preoccuparti, questo file verrà creato da Rocket Pool una volta che avrai inizializzato e avviato i suoi servizi.

Impostazione delle Directory dei Dati e delle Chiavi

Successivamente, devi dire al VC dove archiviare i suoi dati e caricare le chiavi di validazione generate da Rocket Pool. Fai clic sul client che usi nelle schede seguenti:

Lighthouse
Nimbus
Prysm
Teku

Crea le seguenti directory e imposta il loro proprietario su rp:

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/validators

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/secrets

sudo chown -R rp:rp /srv/rocketpool/data/validators/lighthouse

sudo chmod -R 775 /srv/rocketpool/data/validators/lighthouse

Ora, aggiungi o modifica i seguenti parametri nel file di definizione del servizio Lighthouse VC con questi nuovi valori:

--datadir /srv/rocketpool/data/validators/lighthouse

Rilassamento di umask

Per impostazione predefinita, il tuo sistema verrà tipicamente fornito con una configurazione umask che rimuoverà il bit +w dai permessi di gruppo ogni volta che il daemon node crea una nuova cartella. Questo è problematico per diversi consensus client, perché scriveranno effettivamente cose come file di blocco o altri metadati nelle directory che lo Smartnode crea quando genera nuove chiavi di validazione durante un deposito minipool.

Per combattere questo e assicurarti che il tuo VC funzioni correttamente, rilassa le tue impostazioni umask. Ad esempio, invece di 0022, dovresti considerare di impostarlo su 0002 per l'utente rp.

Ogni sistema è diverso, quindi consulta una guida che copra il tuo Sistema Operativo per imparare come farlo.

AVVISO

Questo passaggio è cruciale per garantire che le operazioni automatiche di staking e validazione siano gestite correttamente. Se noti problemi di permessi nei log del tuo VC dopo che il tuo minipool supera il controllo di scrub di 12 ore ed entra nello stato staking, dovrai probabilmente eseguire sudo chmod 775 sulla cartella contenente le tue chiavi di validazione in modo che il tuo servizio VC possa scrivere in quella cartella.

Ricaricamento del Servizio VC

Con queste modifiche apportate, puoi ora ricaricare e riavviare il servizio VC utilizzando quanto segue:

sudo systemctl daemon-reload

sudo systemctl restart <vc-service>

Se non usi Prysm, osserva attentamente i log del VC per assicurarti che si sia avviato correttamente e che siano definiti correttamente i seguenti elementi:

  • Il fee recipient
  • Il percorso dei dati
  • Il percorso wallet / chiavi / segreti

Puoi verificarlo con, ad esempio, ps aux | grep fee per filtrare i processi in esecuzione e guardare il fee recipient utilizzato dal tuo VC. Dovrebbe essere lo stesso definito in /srv/rocketpool/data/validators/rp-fee-recipient-env.txt.

Se stanno tutti utilizzando i valori corretti, allora congratulazioni! Hai configurato con successo il tuo nodo Rocket Pool e puoi seguire le sezioni successive della guida per imparare come usarlo.

Prossimi Passi

Ora che i tuoi client sono installati, ti consigliamo di dare un'occhiata ai suggerimenti di sicurezza nella sezione Proteggere il tuo Nodo successivamente. Poiché stai eseguendo una configurazione Nativa, probabilmente hai già fatto alcune di queste cose; tuttavia, non fa male almeno esplorarla e vedere quanto bene la postura di sicurezza raccomandata si adatti al tuo sistema.