Creación de un nodo nativo de Rocket Pool sin Docker

NOTA

Esta guía está diseñada para Smartnode v1.6.5 y versiones superiores.

Si está utilizando una versión anterior, debe actualizar a v1.6.5 o superior antes de configurar el modo Nativo.

En esta sección, recorreremos el proceso de instalación de la pila de Smartnode de Rocket Pool de forma nativa en su sistema, sin el uso de contenedores Docker.

El plan general es el siguiente:

  1. Crear una configuración estándar de solo staking con servicios systemd para el Cliente de Ejecución, el Cliente de Consenso / Beacon Node y el Cliente Validador
  2. Crear servicios del sistema para los componentes de Rocket Pool (los procesos node y watchtower)
  3. Configurar Rocket Pool para comunicarse con sus servicios de clientes
  4. Actualizar la definición del servicio de su Cliente Validador para usar el fee recipient y las claves de validador de Rocket Pool

Esta es una configuración bastante compleja, por lo que llevará algo de tiempo completarla.

La diversidad de sistemas operativos y distribuciones disponibles hace que sea poco práctico hacer guías disponibles para todos ellos. Las instrucciones de esta guía están adaptadas a un sistema basado en Debian (incluido Ubuntu). Para otras distribuciones o sistemas operativos, puede seguir los pasos de alto nivel descritos en la guía, pero tendrá que sustituir ciertos comandos por los que use su sistema según corresponda.

Danger

Esta guía está destinada a usuarios con experiencia en la administración y uso de sistemas Linux. Esto incluye usar la terminal, crear cuentas del sistema, administrar permisos e instalar servicios. Asumimos que está familiarizado con estas actividades: como estará administrando la mayor parte de la infraestructura usted mismo, solo proporcionamos soporte limitado para instalaciones Nativas. Si no está familiarizado con estas actividades, no recomendamos que use el Modo Nativo.

Paso 1: Configurar los Clientes de Ejecución y Consenso

El Modo Nativo extiende efectivamente una configuración estándar de solo staking, y simplemente permite que el software Smartnode se conecte a los clientes que ya ejecuta (con algunas pequeñas modificaciones).

Con ese fin, recomendamos que comience siguiendo algunas de las guías convencionales de solo staking proporcionadas por la comunidad:

Tenga en cuenta que en realidad no creará un validador como se define en esas guías - Rocket Pool lo hará por usted. Puede ignorar las partes que involucran la herramienta Staking Deposit CLI.

Simplemente necesita seguir las guías hasta el punto en que tenga un servicio de Cliente de Ejecución, un servicio de Cliente de Consenso / Beacon Node y un servicio de Cliente Validador instalados y sincronizando la cadena. Omita los pasos que implican financiar un validador y registrar su mnemónico.

Además, hay un caso especial para el fee recipient - cuando llegue a la parte de la guía donde especifica el fee recipient en la configuración de su Cliente Validador, déjelo en blanco por ahora. Describiremos cómo configurarlo para los validadores de Rocket Pool a continuación.

Una vez que sus clientes estén instalados y pueda ver en sus registros que están sincronizando las cadenas correctamente, puede seguir los siguientes pasos para configurar el Smartnode de Rocket Pool y conectarlo a sus clientes.

Paso 2: Instalar Rocket Pool

Creación de la cuenta de servicio

El primer paso es crear una nueva cuenta del sistema para los servicios de Rocket Pool y deshabilitar el acceso de inicio de sesión y shell para ella:

sudo useradd -r -s /sbin/nologin rp

Ahora, agrégese al grupo rp. Necesitará hacer esto para usar la CLI de Rocket Pool, porque tanto ella como el daemon de Rocket Pool necesitan acceder al archivo de billetera de la capa de Ejecución.

sudo usermod -aG rp $USER

Finalmente, agregue la cuenta de usuario para su Cliente Validador al grupo rp también. El nombre de esa cuenta de usuario depende de qué guía siguió para configurar su servicio VC.

Por ejemplo, si su VC se ejecuta como usuario lighthousevalidator, haría lo siguiente:

sudo usermod -aG rp lighthousevalidator

Después de esto, cierre sesión y vuelva a iniciar sesión para que los cambios surtan efecto.

Configuración de los binarios

Comience creando una carpeta para Rocket Pool y una subcarpeta de datos. Puede colocar esto donde quiera; para esta guía, lo pondré en /srv:

sudo mkdir -p /srv/rocketpool

sudo chown $USER:$USER /srv/rocketpool

Ahora, descargue los binarios de la CLI y el daemon (o ignore esto y compílelos desde el código fuente si lo prefiere). Elija la plataforma que usa su sistema de las pestañas a continuación.

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

Ahora, establezca el propietario y el grupo del daemon como rp:

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

Finalmente, establezca el bit suid y otros bits de permisos en el binario del daemon:

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

Esto asegurará que el daemon siempre se ejecute como el usuario rp, por lo que siempre tendrá los permisos adecuados establecidos.

NOTA

El Smartnode muy probablemente fallará con errores de permisos si no hace esto. ¡Por favor, asegúrese de ejecutar este comando!

Configuración de la carpeta de instalación

Con la CLI y el Daemon instalados, necesitará configurar la estructura de carpetas y los archivos acompañantes que el Smartnode espera que existan. Comience creando las siguientes carpetas:

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

A continuación, descargue los siguientes scripts - Rocket Pool los usará cuando necesite detener o reiniciar su Cliente Validador para cambiar su fee recipient (discutido más adelante) o cargar nuevas claves después de crear un nuevo 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

Ahora abra ~/.profile con su editor de elección y agregue esta línea al final:

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

Guárdelo, luego recargue su perfil:

source ~/.profile

Esto le permitirá interactuar con la CLI de Rocket Pool con el comando rp, que es un atajo agradable.

Creación de los servicios

A continuación, crearemos un servicio systemd para el daemon del nodo de Rocket Pool. Este es el servicio que verificará y reclamará automáticamente las recompensas de RPL después de cada checkpoint, y activará minipools una vez que los haya creado mediante node deposit.

También crearemos un servicio de watchtower también. Esto se usará si es miembro del Oracle DAO, o si alguna vez desea generar sus propios árboles de intervalos de recompensas (discutido en la sección Reclamar recompensas más adelante).

Node
Watchtower

Cree el servicio rp-node:

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

Contenido:

[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

Cree un archivo de registro para el servicio, para que pueda ver su salida - esto reemplazará el comportamiento de rocketpool service logs node:

nano /srv/rocketpool/node-log.sh

Contenido:

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

Guárdelo, luego hágalo ejecutable:

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

Ahora puede ver los registros del nodo simplemente ejecutando:

sudo /srv/rocketpool/node-log.sh

Los servicios ahora están instalados.

Configuración del acceso sin contraseña a los scripts

El siguiente paso es dar al usuario rp la capacidad de reiniciar el Cliente Validador cuando se crean nuevas claves de validador, y detener el Cliente Validador si se detecta una condición de emergencia.

Cree un nuevo archivo sudoers usando visudo:

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

Agregue las siguientes líneas:

Cmnd_Alias RP_RESTART = /usr/bin/systemctl restart <nombre del servicio del validador>
Cmnd_Alias RP_STOP = /usr/bin/systemctl stop <nombre del servicio del validador>
rp    ALL=(ALL) NOPASSWD: RP_RESTART, RP_STOP

Donde <nombre del servicio del validador> es el nombre de su servicio VC (por ejemplo, lighthousevalidator)

Ahora, modifique /srv/rocketpool/restart-vc.sh:

  • Descomente la línea al final y cámbiela a sudo systemctl restart <nombre del servicio del validador>

También modifique /srv/rocketpool/stop-validator.sh:

  • Descomente la línea al final y cámbiela a sudo systemctl stop <nombre del servicio del validador>

¡Todo listo! El proceso node ahora puede reiniciar o detener su VC según sea necesario automáticamente.

Paso 3: Configurar el Smartnode

Ahora que todos sus servicios están creados, es hora de configurar la pila de Smartnode.

Por favor visite la guía Configuración de la pila de Smartnode (Modo Nativo), y regrese aquí cuando haya terminado.

Habilitar y ejecutar los servicios

Con todos los servicios instalados, es hora de:

  • Habilitarlos para que se reinicien automáticamente si se rompen, y se inicien automáticamente en un reinicio
  • Iniciarlos todos
sudo systemctl daemon-reload

sudo systemctl enable rp-node rp-watchtower

sudo systemctl start rp-node rp-watchtower

Configuración de una billetera

A continuación, cree una nueva billetera de nodo o recupere una billetera existente. Por favor siga cuidadosamente las instrucciones en la sección Configuración de una billetera de la guía, luego regrese aquí cuando haya terminado.

Una vez hecho esto, use los scripts de archivo de registro del servicio para verificar que cargaron exitosamente su nueva billetera. También debe verificar esto usando el siguiente comando:

rp wallet status

Si funciona correctamente, debería producir la siguiente salida:

Your Smartnode is currently using the Hoodi Test Network.

The node wallet is initialized.
Node account: <dirección>

Paso 4: Actualizar la definición del servicio VC

A diferencia de una configuración de solo staking, Rocket Pool genera y administra sus claves de validador automáticamente. Hay algunos ajustes que deberá hacer en el archivo de definición del servicio VC que acaba de crear para que funcione correctamente con Rocket Pool, incluyendo:

  • El Fee Recipient
  • El directorio de datos o billetera del VC
  • Los directorios de claves y secretos del VC

Cubriremos estos paso a paso para cada cliente.

Configuración del archivo de Fee Recipient

NOTA

Es crucial que siga estos pasos - no hacerlo y usar el fee recipient incorrecto resultará en penalizaciones aplicadas a sus validadores y deducciones tomadas de su saldo de Beacon Chain!

El fee recipient es el argumento que proporciona a su Cliente Validador que especifica la dirección en la capa de Ejecución a la que desea que se envíen sus tarifas prioritarias y recompensas de MEV. Rocket Pool tiene dos direcciones diferentes para el fee recipient:

  • Si ha optado por el Smoothing Pool, debe ser la dirección del Smoothing Pool
  • Si ha optado por no participar en el Smoothing Pool, debe ser la dirección del Fee Distributor de su nodo

Para obtener más información sobre el Smoothing Pool y su Fee Distributor, consulte la sección Fee Distributors y el Smoothing Pool de la guía.

El servicio node de Rocket Pool establecerá esto automáticamente detectando cuál debe ser y configurándolo en un archivo de configuración y reiniciando su servicio de Cliente Validador para recoger el cambio. Su servicio de Cliente Validador puede usar ese archivo de configuración automáticamente para que no necesite codificar el fee recipient.

Abra el archivo de definición del servicio systemd que acaba de crear para su Cliente Validador. Antes de la línea ExecStart, agregue esta línea:

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

Luego modifique su argumento de fee recipient de la siguiente manera; seleccione su cliente de elección de las pestañas a continuación:

Lighthouse
Nimbus
Prysm
Teku
Cambie --suggested-fee-recipient address a --suggested-fee-recipient ${FEE_RECIPIENT}
NOTA

Si inicia su Cliente Validador antes de los servicios de Rocket Pool, puede dar error porque este archivo aún no existe. No se preocupe, este archivo será creado por Rocket Pool una vez que haya inicializado e iniciado sus servicios.

Configuración de los directorios de datos y claves

A continuación, debe indicarle al VC dónde almacenar sus datos y cargar las claves de validador que genera Rocket Pool. Haga clic en el cliente que usa en las pestañas a continuación:

Lighthouse
Nimbus
Prysm
Teku

Cree los siguientes directorios y establezca su propietario como 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

Ahora, agregue o cambie los siguientes parámetros en el archivo de definición del servicio del VC de Lighthouse a estos nuevos valores:

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

Relajar umask

Por defecto, su sistema normalmente vendrá con una configuración de umask que eliminará el bit +w de los permisos de grupo cada vez que el daemon node cree una nueva carpeta. Esto es problemático para varios clientes de consenso, porque en realidad escribirán cosas como archivos de bloqueo u otros metadatos en los directorios que el Smartnode crea cuando genera nuevas claves de validador durante un depósito de minipool.

Para combatir esto y asegurar que su VC funcione correctamente, por favor relaje su configuración de umask. Por ejemplo, en lugar de 0022, debería considerar establecerlo en 0002 para el usuario rp.

Cada sistema es diferente, así que consulte una guía que cubra su sistema operativo para aprender cómo hacer esto.

ADVERTENCIA

Este paso es crucial para asegurar que las tareas automáticas de staking y validación se manejen correctamente. Si nota problemas de permisos en los registros de su VC después de que su minipool pase la verificación de depuración de 12 horas y entre en estado staking, probablemente necesitará ejecutar sudo chmod 775 en la carpeta que contiene sus claves de validador para que su servicio VC pueda escribir en esa carpeta.

Recarga del servicio VC

Con estos cambios realizados, ahora puede recargar y reiniciar el servicio VC usando lo siguiente:

sudo systemctl daemon-reload

sudo systemctl restart <vc-service>

Si no usa Prysm, por favor observe los registros del VC cuidadosamente para asegurarse de que se inició correctamente y que los siguientes estén definidos correctamente:

  • El fee recipient
  • La ruta de datos
  • La ruta de billetera / claves / secretos

Puede verificar esto con, por ejemplo, ps aux | grep fee para filtrar los procesos en ejecución y ver el fee recipient que su VC ha usado. Debe ser el mismo que se define en /srv/rocketpool/data/validators/rp-fee-recipient-env.txt.

Si todos están usando los valores correctos, entonces ¡felicitaciones! Ha configurado exitosamente su nodo de Rocket Pool y puede seguir las siguientes secciones de la guía para aprender a usarlo.

Próximos pasos

Ahora que sus clientes están instalados, le recomendamos que eche un vistazo a las sugerencias de seguridad en la sección Asegurar su nodo a continuación. Como está ejecutando una configuración Nativa, es probable que ya haya hecho algunas de estas cosas; sin embargo, no está de más al menos explorarlo y ver qué tan bien se ajusta la postura de seguridad recomendada con su sistema.