# Guía detallada: Lido CSM con Google Cloud credits

### 1. Prerrequisitos

1. Instala WireGuard, un cliente de VPN necesario para conectarse a la interfaz visual de Dappnode. Puedes instalarlo para tu sistema operativo desde aquí <https://www.wireguard.com/install/>.

### 2. Configuración de una cuenta en Google Cloud

1. Abre <https://cloud.google.com/free> y activa el free trial. Te pedirán los detalles de tu tarjeta de crédito, pero no te cobrarán nada.
2. Dirígete a la consola de Google

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2Fnomm2ysMdJ8B36WUcFs2%2Fimage.png?alt=media&#x26;token=b328b765-2db4-4ac2-8071-341b1faac434" alt=""><figcaption></figcaption></figure>

3. Crea una VM (Máquina Virtual)

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FxrPCbfjogaXOzk5Z4OaN%2Fimage.png?alt=media&#x26;token=b0a90c6e-fbd4-43d5-a406-e02756f68219" alt=""><figcaption></figcaption></figure>

4. Selecciona la siguiente configuración en la sección **Configuración de la máquina**:
5. **Nombre:** Pon cualquier nombre, como `Workshop-de-Lido`
6. **Región:** Escoge tu región de preferencia para esta prueba. Por favor recuerda que para cualquier uso en Mainnet lo ideal es diversificar geográficamente y no escoger las ubicaciones populares como Europa o EEUU.
7. **Zona:** Cualquier zona.
8. **Configuración de la máquina:** E2
9. **Tipo de máquina:** e2-standard-8, 16GB memory

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FWisuTFGbNnjVXpVpYL5z%2Fimage.png?alt=media&#x26;token=7b158b39-50b4-4dc2-a113-a111c0c7c446" alt=""><figcaption></figcaption></figure>

5. En la sección **SO y almacenamiento** haz click en cambiar.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2Fp01wW5Ea7mUfJlLQaXYD%2Fimage.png?alt=media&#x26;token=0f2bf7c4-29e8-491e-87cf-db2f82d2db82" alt=""><figcaption></figcaption></figure>

6. Selecciona la siguiente configuración:

   1. **Sistema operativo:** Debian
   2. **Versión:** Debian GNU/Linux 12 (bookworm)
   3. **Tipo de disco de arranque:** Disco persistente balanceado
   4. **Tamaño:** 300 GB

   <figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FBSKP6jWHGtyRWATwOvtR%2Fimage.png?alt=media&#x26;token=a5d55038-0fc9-4272-8351-d2777b21d3be" alt=""><figcaption></figcaption></figure>
7. En la sección de **Redes**, marca las casillas de tráfico HTTP y HTTPs

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FGkhdA27JQ6i89K8b9Ug6%2Fimage.png?alt=media&#x26;token=bc6ae057-8108-4100-822b-25a5dee5e710" alt=""><figcaption></figcaption></figure>

8. En la sección **Observabilidad**, desmarca ambas opciones.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FncsUdMUyaNZU7z9tT5Lj%2Fimage.png?alt=media&#x26;token=637fe527-f356-470e-bf12-8dbf392a5507" alt=""><figcaption></figcaption></figure>

9. Cuando hayas terminado haz click en “Crear” en la parte de abajo de la pantalla. Deberías ver algo así:

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FduIk973PX4oOCLoxRZ04%2Fimage.png?alt=media&#x26;token=3afea2f9-9655-4fe3-ae58-044844810306" alt=""><figcaption></figcaption></figure>

10. Ahora tenemos que abrir el puerto de WireGuard en la consola para poder acceder a ella más tarde. Para eso dirígete a <https://console.cloud.google.com/net-security/firewall-manager/firewall-policies/> y haz click en **Crear regla de firewall**.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FNEbCue395SOUn4kIZhfB%2Fimage.png?alt=media&#x26;token=819d8b54-f1df-45f2-b91c-fbe47709492a" alt=""><figcaption></figcaption></figure>

11. Configura el Firewall de la siguiente forma:

    1. **Nombre:** Wireguard
    2. **Destinos:** Todas las instancias de red
    3. **Filtro de origen y rango:** IPv4 con rango 0.0.0.0/0
    4. **Protocolos y puertos:** Protocolos y puertos especificos > UDP 51820

    <div><figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FnccoNLGqwbxb6wpA1GAC%2Fimage.png?alt=media&#x26;token=19dcf183-8093-41ed-bf72-ffe08234b07c" alt=""><figcaption></figcaption></figure> <figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2Fsy0WFzk3GbI8MrR0o0c2%2Fimage.png?alt=media&#x26;token=3fa78442-44dd-47b0-a6af-555fcedcdcb5" alt=""><figcaption></figcaption></figure></div>

### 3. Instalar Dappnode

1. Abre el menú desplegable de la pestaña **Conectar**. Por comodidad selecciona la opción “Abrir en otra ventana del navegador”. Haz click en **Autorizar** cuando te lo soliciten.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FnywqiAf8aW8xlES5gZoz%2Fimage.png?alt=media&#x26;token=6febe9d2-af1c-43ba-ad90-c8ded9725583" alt=""><figcaption></figcaption></figure>

2. Ahora que estamos en la interfaz de linea de comando vamos a instalar Dappnode mediante scripts. Puedes leer más en la documentación oficial de Dappnode <https://docs.dappnode.io/>.
3. Copia y pega los siguientes comandos:
   1. Actualiza todos los paquetes del sistema

      ```jsx
      sudo apt update -y && sudo apt upgrade -y
      ```
   2. Instala servicios que son pre-requisitos.

      ```jsx
      sudo wget -O - https://prerequisites.dappnode.io | sudo bash
      ```
   3. Instala Dappnode.

      ```jsx
      sudo wget -O - https://installer.dappnode.io | sudo bash
      ```
   4. Reinicia la maquina.

      ```jsx
      sudo shutdown -r now
      ```
4. Al reiniciar la máquina se perderá la conexión. Vuelve a abrir la terminal en otra pestaña como en el paso 1. Deberías ver algo como esto:

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FCzWcISE7fZHHxaJd5iQB%2Fimage.png?alt=media&#x26;token=f7652be6-7a17-4205-9184-e163ba2b14d8" alt=""><figcaption></figcaption></figure>

### 4. Acceder a Dappnode

1. Usa el comando `dappnode_connect` para ver todas las formas de acceder a la interfaz de Dappnode. En este caso estaremos usando el los credenciales de **WireGuard**.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2Fd8WvThcszwJJImRBJEsR%2Fimage.png?alt=media&#x26;token=23785f64-35ad-4ea4-a723-5bb9e1e852a3" alt=""><figcaption></figcaption></figure>

Por ejemplo:

```
[Interface]
PrivateKey = uIz2EnOQYdrBJH3qiYL5I8OSXfp+NqXGNPKrNzX02lg=
ListenPort = 51820
Address = 10.24.0.2/32
DNS = 172.33.1.2, 10.20.0.2

[Peer]
PublicKey = DXDtdMps60FXkRpCp75wsYe8tGrqDCQlHZ39Ea4ZiTI=
PresharedKey = VIEwmWlIcLI48owu4nKBta7D25/P2qDBjjEO0dVd4+Y=
AllowedIPs = 172.33.0.0/16, 10.20.0.0/24
Endpoint = 8db634b28e82639f.dyndns.dappnode.io:51820

```

2. Abre WireGuard y en la esquina inferior izquierda haz click en “Añadir Tunnel vacío”.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FPtIRDwVEvaiUoaKuZbCR%2Fimage.png?alt=media&#x26;token=58be2aed-5392-432c-b38e-58a9db03c84d" alt=""><figcaption></figcaption></figure>

1. Vuelve a la terminal y copia los credenciales, un ejemplo es:

   ```jsx
   [Interface]
   Address = 10.24.0.2
   PrivateKey = AIBMuyREhY4K94w2azghxG9NJWHhOmBfvBI+B4pEwVs=
   ListenPort = 51820
   DNS = 172.33.1.2,10.20.0.2

   [Peer]
   PublicKey = 6+ICyimhPEu22egPCaAhU5ClDwbgxp2oSBrfImLS7wI=
   PresharedKey = 9JadZ1DLo4EDhSCdLJgZDnmDgVvfEpnn5BZdy77ipvU=
   Endpoint = 6a30df7055d895c4.dyndns.dappnode.io:51820
   AllowedIPs = 172.33.0.0/16,10.20.0.0/24
   ```
2. Pega los credenciales y ponle un nombre cualquiera al tunnel. Haz click en **Save** para guardar el tunnel.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FLGCahC1SY7NXNI7BOKOq%2Fimage.png?alt=media&#x26;token=1ebc0204-40d7-4ab8-822d-386a8a7975aa" alt=""><figcaption></figcaption></figure>

3. Una vez guardado, activa el tunnel en el botón mostrado en la captura de abajo.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FP8Pl8BhCZti9SJoHSF6M%2Fimage.png?alt=media&#x26;token=a75b35b0-74fd-44b7-82ca-f813962b3022" alt=""><figcaption></figcaption></figure>

1. Por último, accede a <http://my.dappnode/>. Configura tu nombre de usuario y contraseña, y guarda el token de seguridad. Después de esto sigue las instrucciones de la interfaz de Dappnode y configura:
   1. Repository Source: Remote (Esto para testnet, si configuras mainnet puedes usar tus clientes como fuente del repositorio, lo que sería lo recomendable para tu setup final).
   2. System Auto Updates: Off (Las actualizaciones automaticas pueden causarte problemas de performance si alguna actualización va mal. Mejor hacerlas manual en un momento donde puedas prestarle atención a tu nodo).
   3. Enable System Notifications: Para este workshop lo dejaremos vacío, aquí puedes configurar un bot de telegram y correo que te avise sobre el estatus de tu máquina.

### 5. Configurar tu nodo en Dappnode

1. Visita la pestaña de Stakers<http://my.dappnode/stakers/>. Selecciona la red (Hoodi en este caso), clientes de ejecución y consenso, activa Web3signer y relays MEV-Boost de la [lista de relays validados por Lido para Hoodi](https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=1bdbf633d0c980ddb2c3000ce3c37311).\
   \
   Desplázate hacia abajo, haz clic en Aplicar cambios y espera a que los clientes se instalen.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FFwZv2CV7ELOxHYwg5LUC%2Fimage.png?alt=media&#x26;token=fb23f03b-7fca-40ef-bc9c-19ee0986af77" alt=""><figcaption></figcaption></figure>

2. En el Dashboard verás el estado de tus clientes. Cuando veas ambos en verde estarán sincronizados y será seguro moverse al siguiente paso:

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FoFyuk7zwdeKTA2SUwEhh%2Fimage.png?alt=media&#x26;token=6693a9bc-2678-499d-875d-b263ec5c441c" alt=""><figcaption></figcaption></figure>

### 6. Generar llaves para Lido CSM (testnet)

1. Entra a <https://wagyu.gg/> e instala la herramienta.
2. Genera una frase secreta de recuperación y selecciona la red. Anota la frase y confírmala.
3. Elige el número de validadores que quieres generar. Cifra los keystores con una contraseña segura.
4. **IMPORTANTE:** Define la dirección de retiro (withdrawal address) como la bóveda de retiros de Lido:
   1. **Hoodi:** `0x4473dCDDbf77679A643BdB654dbd86D67F8d32f2`
5. Confirma la contraseña.
6. Selecciona la carpeta destino para almacenar los keystores y los datos del depósito. Recibirás:
   1. `keystore-m_<timestamp>.json`: el keystore para ponerlo en tu nodo
   2. `deposit_data-<timestamp>.json`: los datos del depósito

### 7. Importar las llaves a tu nodo y al protocolo de Lido

#### 7.1. Importar las llaves a Dappnode

1. Dirígete al paquete **web3signer** en tu Dappnode.
2. Haz click en el botón **Import**, después arrastra los keystores que generaste en la sección anterior, pon la contraseña y selecciona ***Lido*** como staking protocol, esto configurará el fee recipient automáticamente a la dirección de Lido.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2F0gEolrMXSqyBFep84C3y%2Fimage.png?alt=media&#x26;token=a9a63fbb-31ea-4b3f-be24-b9f059c37f63" alt=""><figcaption></figcaption></figure>

#### 7.2. Importar las llaves a Lido CSM

1. Ingresa a la página de CSM de Lido en Hoodi (<https://csm.testnet.fi/>) y conecta tu wallet.
2. Haz click en Create a Node Operator.
3. Dentro del widget, sube tu archivo `deposit data`, revisa que tengas suficiente testnet ETH y deposítalo en el protocolo.

<figure><img src="https://949886706-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSK9OujZPPl6YX0DQQZVC%2Fuploads%2FO7D7v8mzIzVAXlTipslt%2Fimage.png?alt=media&#x26;token=034b1038-f740-4d18-8670-38f700c19dc0" alt=""><figcaption></figcaption></figure>
