¿Como correr un nodo de Monero en un Raspberry Pi? | Guía definitiva
Pagina Web: Satoshilov.com
Youtube Chanel: https://www.youtube.com/btclovera
Un nodo completo almacena una copia de la cadena de bloques de Monero en su totalidad. Sin nodos no hay Monero, así que al correr uno, estarás colaborando a la estabilidad y descentralización de la red.
Una billetera de Monero, como podría ser CakeWallet o Monerujo e incluso la GUI Wallet oficial de Monero, necesita conectarse a un nodo para así intercambiar información con la red de Monero. Con esto quiero decir que al correr un nodo, no solo estarás contribuyendo a la red, sino que estarás ganando mucha mayor privacidad y seguridad.
Un Raspberry Pi tiene un consumo eléctrico bastante bajo, menos de 10 euros al año en España. Con lo cual tener el nodo funcionando 24/7 no supondrá un gasto económico elevado teniendo en cuenta las ventajas que ganamos.
En ésta guía nos enfocaremos en dos formas de correr un nodo de Monero en una Pi. 1) Utilizando el software PiNodeXMR y 2) el sistema operativo oficial de la Pi, el Raspberry Pi OS junto con los demás paquetes necesarios para correr nuestro nodo.
Requisitos para un nodo
- Raspberry Pi 4B 4G. En teoría debería funcionar también el 3B. (Si estas en España te recomiendo este — LINK)
- SSD de 120GB mínimo ya que la cadena de bloques de Monero está alrededor de los 80GB. Puedes usar un HDD pero ten en cuenta que el rendimiento será inferior en el momento de la sincronización. También podrías utilizar una tarjeta SD, pero el intercambio de datos constante podría dañarla en el largo plazo.
- SD Card (Si compras todo por separado) (8 GB Mínimo, Recomendado 16GB) ésto será necesario para la instalación del sistema operativo.
- Power Supply 12V (Si compras todo por separado)
- Case HDD USB para el SSD (Puedes usar también un disco duro USB portable, pero se recomienda altamente un SSD) también puedes utilizar cualquier adaptador a USB para conectar el disco duro a la Pi.
- Cable de red RJ45 si no deseas conectarte vía WiFi
- Monitor o pantalla si deseas utilizar la interfaz gráfica.
- Muchas ganas de aprender!!!
Raspberry Pi OS (Antiguo Raspbian)
Para facilitar la instalación y que sea la mas sencillo posible, utilizaremos una interfaz gráfica. Para ello descargaremos e instalaremos el sistema operativo oficial de la Raspberry Pi.
Raspberry Pi OS es una distribución del sistema operativo GNU/Linux basado en Debian, y por lo tanto libre para la SBC Raspberry Pi, orientado a la enseñanza de informática.
Descargar y grabar Raspberry Pi OS en SD
Lo primero que haremos será descargar la imagen con interfaz gráfica (sin software recomendado) desde su sitio web oficial. https://www.raspberrypi.org/downloads/raspberry-pi-os/ la imagen en cuestión es la ‘Raspberry Pi OS (32-bit) with desktop‘ .
Una vez descargada deberemos grabar la imagen con el programa etcher. Si no lo tienes, lo puedes descargar por el siguiente enlace: https://www.balena.io/etcher/.
Una vez tengamos la imagen y el programa etcher, deberemos introducir nuestra SD card en nuestro PC, ejecutar el programa etcher, seleccionar la imagen con el SO del raspberry pi luego la SD card y por ultimo seleccionamos flashear.
Una vez finalizado el proceso solo queda introducirla en nuestro raspberry pi y encenderlo.
Correr y configurar el sistema operativo
Una vez arranquemos nuestro Raspberry Pi por primera vez, tendremos una ventana de configuración. En ésta ventana configuraremos algunas opciones básicas.
Seleccionaremos nuestro idioma país y zona horaria si es necesario. Importante colocar una contraseña al usuario pi
. Luego tendremos la opción para conectarnos a una red WiFi, si tuviéramos cable no sería necesario (que por estabilidad es lo recomendable). En éste apartado también podremos actualizar el software con las últimas actualizaciones. Una vez terminemos el sistema se reiniciará.
El siguiente paso será ir al menú desplegable — Preferencias — Configuración del Raspberry Pi.
En el menú de sistemas podremos cambiar el nombre de nuestro dispositivo, en este caso le he puesto ‘NodoPi‘. También se ha activado la casilla ‘Esperar red‘ de tal manera que al encender nuestro Pi, espere a que haya conexión a la red antes de iniciar.
Lo segundo que haremos es irnos a la pestaña ‘interfaces‘ y activar los servicios que necesitaremos, en éste caso el SSH y el VNC. El SSH nos permitirá conectarnos con nuestra raspberry Pi a través de un túnel cifrado, vía consola de comandos. El VNC, nos permite conectarnos de manera remota a nuestra Pi mediante una interfaz gráfica lo cual es mucho mas amigable.
Por último, es importante darle una contraseña al usuario root
para ello simplemente en la terminal colocaremos lo siguiente:
sudo passwd
Instalar Software recomendado (Opcional)
Lo siguiente que haremos será instalar un par de programas que nos vendrán de gran ayuda en el futuro para nuestra Pi.
Utilidad de Disco: Instalaremos un programa que nos permitirá gestionar los discos conectados en nuestro dispositivo de manera bastante intuitiva y sencilla. Para ello simplemente escribiremos el siguiente comando en nuestra terminal:
sudo apt install gnome-disk-utility
Monitor del Sistema: Éste es un programa que me gusta bastante y que viene instalado de manera predeterminada en Linux Mint. Básicamente sirve para monitorizar los procesos y recursos de nuestro sistema. Para instalarlo escribiremos el siguiente comando:
sudo apt install gnome-system-monitor
Editor de Texto: La raspberry Pi cuenta con un editor de texto sencillo ‘mousepad‘ con lo cual, podríamos instalar uno mas potente y tenerlo listo para utilizarlo de ser necesario. Para ello colocaremos lo siguiente:
sudo apt install gedit
Cambiar opciones de Montaje (opcional)
Si hemos decidido instalar la aplicación Discos, entonces podremos configurar de manera sencilla la forma en que nuestro disco SSD inicia, la ubicación en donde se monta y algunas cositas mas.
Si vamos al menú desplegable — Accesorios — Discos. Accederemos a la aplicación instalada.
Formatear el disco a Ext4: Puedes optar por formatear el SSD (con éste mismo programa) a la Ext4, también podrías dejarlo en NTFS si a futuro deseas poder conectarlo en sistemas operativo como Windows.
Opciones de Montaje: Si detienes el disco (imagen con número 1) y luego accedes a las opciones del mismo (imagen con número 2). Podremos cambiar las opciones de montaje. Tildar la casilla ‘Montar al inicio‘ para que el disco duro se monte de forma automática al iniciar el SO. Si destildamos la casilla ‘Mostrar en la interfaz de usuario‘ No se nos mostrará el ícono del SSD en el escritorio.
Punto de Montaje: En éste apartado podremos elegir la ruta donde se montará el SSD, nosotros para mejor comodidad podremos elegir la ruta /mnt/blockchain.
Identificador: Hemos cambiado el identificador a /dev/sda por dos razones, la primera para que sea mas sencillo identificar el SSD y la segunda para que si por alguna razón cambiamos de SSD a uno de mayor capacidad las modificaciones que se harán serán mínimas. (Sobre todo en los servicios).
Descargar y Verificar las firmas de Monero CLI
El siguiente paso será descargar la última versión de Monero CLI, al momento de la edición es la 0.17.0.1 — Oxygen Orion. Para nuestro Raspberry Pi, descargaremos la Linux ARMv7 a través del siguiente enlace: https://www.getmonero.org/downloads/. Para descargar el cliente puedes hacerlo a través del navegador visitando el sitio web anterior, o bien utilizando la terminal ejecutando el siguiente comando:
wget https://downloads.getmonero.org/cli/linuxarm7
El siguiente paso antes de comenzar a descomprimir el cliente, es verificar tanto el hash SHA256 como la autenticidad del archivo que contiene los hashes.
Verificar las firmas y SHA256
Primero descargaremos el documento hashes.txt el cual contiene todos los hashes SHA256 de cada programa y versión disponible en la página web de Monero. Puedes hacerlo a través de https://www.getmonero.org/downloads/ o bien con el siguiente comando en la terminal:
wget https://www.getmonero.org/downloads/hashes.txt
El siguiente paso será descargar la clave pública de binaryFate, que es el desarrollador que ha firmado el documento hashes.txt descargado anteriormente. Para ello en una terminal ejecutaremos el siguiente comando:
wget -O binaryfate.asc https://raw.githubusercontent.com/monero-project/monero/master/utils/gpg_keys/binaryfate.asc
Verificar la firma
Debemos verificar que la firma descargada (clave de binaryFate) sea la correcta. Para ello en una terminal ejecutaremos el siguiente comando:
gpg --keyid-format long --with-fingerprint binaryfate.asc
Deberás comprobar que la huella de clave sea la que te muestro a continuación, de lo contrario si no coincide NO SIGAS.
Huella de Clave = 81AC 591F E9C4 B65C 5806 AFC3 F0AF 4D46 2A0B DF92
Importar la firma
Si todo está bien, simplemente deberemos importar la firma a nuestra base de datos, para ello en una terminal ejecutaremos el siguiente comando:
gpg --import binaryfate.asc
Una vez importada correctamente procederemos a verificar el documento hashes.txt, para asegurarnos de que su contenido es realmente legitimo.
Verificar Hashes.txt
Para verificar la autenticidad de dicho archivo simplemente ejecutaremos el siguiente comando en una terminal, recuerda que debes estar en la ubicación donde se ha descargado:
gpg --verify hashes.txt
Deberás obtener un resultado de firma correcta como el que te muestro en la siguiente imagen:
Como observamos la firma es correcta para dicho documento, con lo cual podemos seguir. Si no es correcta NO SIGAS.
Obtener SHA256 y Compararlo
Para obtener el hash SHA256, en una terminal ejecuta el siguiente comando:
sha256sum linuxamr7
Luego deberás abrir el documento hashes.txt y buscar el hash sha256 para la versión que hemos descargado, la cual es la linuxAMRv7. En una terminal puedes ejecutar el siguiente comando:
gedit hashes.txt
Por ultimo compara los hashes como te muestro en la siguiente imagen:
Instalar Monero CLI Versión: 0.17.0.1 — Oxygen Orion
Ahora que ya hemos comprobado todo, el siguiente paso será descomprimir el cliente que hemos descargado. Para ello simplemente nos ubicamos sobre él y haciendo click derecho le damos a descomprimir. Si en ésta ubicación abrimos una terminal y ejecutamos ./monerod
entonces correríamos nuestro nodo para que comience a sincronizarse. Sin embargo es necesario realizar algunas modificaciones antes de comenzar a ejecutar nuestro nodo.
Crear una carpeta Monero (Opcional)
Para mayor comodidad lo primero que haremos será crear una carpeta con nombre Monero y dentro de ella copiar todo lo que hemos descargado, como el documento hashes.txt, la firma pública de binaryFate y el comprimido y todos los extraídos del CLI linuxarm7 de la siguiente manera:
Crear carpeta en el SSD para la blockchain
Al igual que el punto anterior, crearemos una carpeta dentro de nuestro disco duro SSD con el nombre Monero. De esta manera tendremos todo un poco mas organizado. Recuerda que habíamos cambiado la ruta de montaje a /mnt/blockchain ahora si vamos a ello entrando en el gestor de archivos posteriormente en raíz del sistema — mnt — blockchain en ésta ubicación podremos crear la carpeta para la cadena de bloques de Monero. Tu si quieres puedes crear diferentes carpetas.
Copiar la cadena de bloques desde otro equipo (opcional)
Si decides descargar la cadena de bloques desde una fuente externa o bien desde otro equipo con mayor capacidad de procesamiento, lo puedes hacer. Por ejemplo podrías descargar la cadena de bloques desde un PC normal, y luego copiarla en la ubicación que hemos creado, en este caso ‘Monero‘. Recuerda que si la partición es Ext4 solo podrás leer este SSD en equipos Linux, si es NTFS podrás leerlo tanto en linux como en Windows. Si no, simplemente omite este paso y sincronizaremos y descargaremos todo desde nuestro Raspberry Pi.
Comandos Adicionales para Daemon
Existen una serie de comandos adicionales para arrancar el daemon que, según el marcador que indiquemos tendremos un resultado u otro. Aquí te dejaré una lista con algunos de los comandos adicionales con los cuales puedes correr tu nodo:
- –rpc-bind-ip [Dirección IP] Esto vincula el daemon a una dirección ip. Si quieres utilizar tu nodo fuera de tu red local, deberás usar tu ip publica (externa). También puedes colocar tu IP local para que puedas usar el nodo con los dispositivos conectados a tu propia red.
- –rpc-bind-ip 0.0.0.0 En una red de área local, 0.0.0.0 significa ‘todas las direcciones IP dentro de la red local’. De esta forma todos los dispositivos conectados a tu red local podrán utilizar el nodo.
- –rpc-bind-port [puerto] Vincula el daemon a un puerto en especifico, es muy importante de utilizar el comando que te dejaré justo abajo para que tu nodo sea seguro.
- –restricted-rpc Restringe las acciones que los usuarios externos pueden realizar cuando están conectados al nodo a través de RPC. ACTIVALO
- –confirm-external-bind Deberás activarlo si deseas utilizar las funciones RPC.
- –rpc-login usuario:contraseña permite establecer un usuario y una contraseña para poder conectarse a tu nodo.
- –limit_up Limita la velocidad de carga a un valor en concreto, se expresa en Kb/s.
- –limit_down Lo mismo pero para la descarga.
- –data-dir (ruta) Muy importante si se utiliza el CLI Wallet, para ubicar la dirección o ruta de almacenamiento de la cadena de bloques.
- –out-peers (número de peers) Establece un número máximo de pares salientes a los cuales te conectas. De manera predeterminado son 8.
- –add-peer IP:puerto De manera manual añades un par al que conectarte.
Ejemplo
Por ejemplo, si quisieras correr tu nodo indicando la ruta donde se guardará la cadena de bloques, tendríamos que ubicarnos en la carpeta Monero (en nuestro caso) y ejecutar:
pi@NodoPi:~/Monero $ ./monerod --data-dir TU-RUTA
Ésto lo tendríamos que hacer cada vez que ejecutáramos el daemon. Para facilitar un poco las cosas podemos crear un acceso directo con los parámetros predeterminados, de modo que con un simple doble click al icono de monero, nuestro Daemon se ejecute con los marcadores que deseamos.
Crear Icono de arranque Monero
Para mayor comodidad a la hora de correr nuestro nodo de Monero, podemos crear un ícono que al ejecutarlo, corra el monerod con todos los marcadores (comandos adicionales) que deseamos sin hacer nada en la terminal. Para ello haremos lo siguiente:
Descargar el icono
Primero que nada abriremos una terminal y nos ubicaremos en la carpeta donde están todos nuestros programas, firmas, hashes.txt incluido el monerod (la carpeta Monero que hemos creado anteriormente). Para ello simplemente escribimos en la consola cd Monero
(Si has creado otra carpeta pues debes indicar el nombre de la misma.)
Una vez aquí, procederemos a descargar el logo de Monero para nuestro icono, ejecutando el siguiente comando:
wget https://www.getmonero.org/press-kit/symbols/monero-symbol-480.png
Una vez descargado, lo renombraremos como monero. Mira la siguiente imagen:
Crear documento monero.desktop
Ahora lo que haremos, será crear un archivo llamado monero.desktop el cual contendrá todas las instrucciones necesarias para ejecutar nuestro daemon (nodo) con los comandos o marcadores adicionales. Para ello simplemente haz click derecho y ‘New file’ le damos el nombre de monero.desktop. A éste archivo le damos click drecho y ‘Editor de textos’ dentro copiaremos el siguiente contenido:
[Desktop Entry]
Comment=Nodo de Monero
Exec=/home/pi/Monero/./monerod –rpc-bind-ip=0.0.0.0 –rpc-bind-port=18081 –restricted-rpc –confirm-external-bind –datar-dir /mnt/blockchain/Monero
GenericName=Monero
Icon=/home/pi/Monero/monero.png
Name=Monero
Categories=Finance;Network;
StartupNotify=true
StartupWMClass=monero
Terminal=true
Type=Application
MimeType=x-scheme-handler/monero;
Descripción
En el apartado Exec= Colocamos la ubicación del daemon monerod, en mi caso es la que se refleja allí seguido de los marcadores o comandos adicionales que deseamos ejecutar.
En Icon= Colocamos la ubicación de la imagen que tendrá el icono de Monero, en este caso en la misma carpeta que creamos denomnada ‘Monero’.
Name= Colocaremos el nombre de nuestro icono Monero en este caso.
Cerramos y guardamos. Luego deberemos instalarlo a través de la terminal, corriendo el siguiente comando:
pi@NodoPi:~/Monero $ sudo desktop-file-install monero.desktop
Con ésto habremos finalizado y nuestro icono se habrá creado, ahora podemos correr nuestro nodo de manera sencilla con todos los comandos adicionales que querramos.
Si haces click en el icono recien creado, entonces nuestro daemon monerod se ejecutará y nuestro nodo comenzará a sincronizarse.
Sincronizado
Una vez tu nodo esté sincronizado, puedes ejecutar el comando help para ver los diferentes comandos que existen. Ahora ya tienes tu nodo corriendo, si has copiado la cadena de bloques desde otro equipo la sincronización será rápida. De lo contrario deberemos esperar un poco hasta que sicnronice completamente.
Abrir Puertos en tu router
Es posible que necesites abrir el puerto 18081 y 18080 para tu nodo de Monero, cada router es diferente. Te dejaré un enlace para que veas como se hace si vives en España o tu conexión es con Movistar. https://satoshilov.com/como-correr-un-nodo-de-monero-guia-definitiva/#10
PinodeXMR Nodo de Monero
La siguiente forma de instalar un nodo de Monero, de una manera sencilla y con una interfaz web, es utilizar el software de PiNodeXMR. Es un programa que de manera muy sencilla podremos correr un nodo de Monero en unos instantes.
Podemos descargar la imagen pre configurada o bien instalar Raspberry Pi OS y sobre éste PiNodeXMR.
Para no hacer la guía demasiado pesada, he decidido dividirla en dos partes. La guia completa para instalar PiNodeXMR paso a paso la encontrarás en el siguiente enlace:
https://satoshilov.com/wp-content/uploads/2020/05/Pinode-e1589650468278.jpeg