[Tutorial] Construyendo un nodo Low Cost para NXT

Bueno, antes de todo quiero decir que aquí redactaré como lo hice para tener en mi casa un nodo para NXT con un consumo ridículo de 5W y sin apenas inversión. Si te animas a montarte el tuyo propio y no entiendes algún punto del tutorial, avísame en los comentarios ;).

Al lio:

Materiales:

-Como mínimo, la Raspberry Pi B (o B+), aunque recomiendo la nueva RaspBerry Pi 2.
-Tarjeta de memoria mínimo 4GB, recomiendo 8GB o 16GB.
-Cable y conexión por ethernet (Aunque si tenemos un adaptador Wi-fi, podría servir igual) .
-Disipador de calor pasivo. Venden plaquitas de metal que se pegan sobre los chips donde se genera el calor y ayudan a disipar el calor. También venden un mini-ventilador (de 1€ o 2€) que se puede conectar al GPIO y refrigera la Raspberry Pi, este paso lo dejo al gusto.
-Programa Putty o similar (para las conexiones SSH).

Lo primero es que tendremos que instalar la distribución “Debian”, si tenéis cualquier duda en la instalación podéis preguntarme, pero creo que vienen bastante bien en la página web oficial.

Lo segundo que hará que hacer será hacer un poco de overclock a la raspberry pi (En el caso de tener la Raspberry PI 2 no creo que haga falta). Si vamos a instalar Raspbian desde cero, en el instalador se nos permitirá poner el overclock que queramos, con ponerlo en modo “medium” nos bastará. Otra cosa bastante importante es cambiar la memoria RAM que dedicaremos a la GPU, que pondremos al mínimo posible (16MB en la rasp pi B) ya que la raspberry no tendrá ninguna pantalla conectada, por lo que podremos dedicar más RAM al nodo. (Todo esto se hace de forma visual en el instalador de raspbian). Si ya teníamos Raspbian instalado de antes, mediante SSH pondremos el comando:

sudo raspi-config

Una vez tengamos nuestra raspberry pi con debian instalado y colocada en su sitio y conectada por ethernet (o Wi-Fi), nos conectaremos por SSH y le asignaremos una IP estática:

sudo nano /etc/network/interfaces

Y deberemos de modificar su contenido para que se nos quede tal que así:

Gateway es la puerta de enlace de vuestro router, en address la dirección que queremos que tenga nuestra raspberry pi en nuestra red local.

Para aplicar cambios pulsamos “Control + O” para guardar, y más tarde “Control + X” para cerrar de editar el archivo.

Finalmente reiniciamos la rasp para que se inicie con la nueva IP:

sudo reboot

Una vez que ya tenemos la IP estática, Raspbian instalado, Overclock preparado y memoria RAM asignada correctamente, procedemos a actualizar el software de la Raspberry Pi:

sudo apt-get update

Ahora necesitaremos instalar la versión Java necesaria para ejecutar el nodo:

sudo apt-get install openjdk-7-jre

Tras la instalación, ahora sí que podremos empezar descargando el cliente de NXT, descargándolo con el siguiente comando:

wget https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.4.16.zip

(Si a la hora de realizar el tutorial hay una nueva versión, simplemente cambiar el link de descarga por el más actual).

Simplemente y tras finalizar la descarga, descomprimiremos:

unzip nxt-client-1.4.16.zip -d ./

Si quisiéramos tener los archivos en una ruta específica, sustituimos el “./” por la ruta que queramos.

En este paso tendremos que saber si nuestro internet cuenta con una IP dinámica o con una IP estática, ya que si la tenemos dinámica debiéramos instalar no-ip para tener una url fija de nuestro servidor (lo que nos vendrá bien principalmente para el hallmark).

Si tenemos dinámica seguimos por aquí, si tenemos estática este paso nos lo podremos saltar:

Lo primero que habrá que hacer es crearnos una cuenta en No-IP. y en “HOST/REDIRECTS” nos creamos nuestra url al gusto:

Y ahora tendremos que instalar no-ip en nuestra raspberry pi. Comenzamos la instalación con:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

y descomprimimos el paquete descargado:

tar -zxvf noip-duc-linux.tar.gz

Tras esto, nos colocamos en la carpeta en la que se ha descomprimido, compilamos e instalamos (y en el proceso se nos pedirá nuestra cuenta y usuario en No-IP):

cd noip-2.1.9-1/
make
sudo make install

Después de la instalación, toca preparar la raspberry pi para que auto-ejecute a no-ip al iniciarse:

sudo nano /etc/init.d/noip2

y copiamos y pegamos esto:

#! /bin/bash
### BEGIN INIT INFO
# Provides: lo que sea
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: lo que sea
# Description:
#
### END INIT INFO
sudo /usr/local/bin/noip2

Como ya dijimos anteriormente, “Control + O” para guardar y “Control + X” para salir.
Ahora le daremos permiso a nuestro script para que pueda ser ejecutado:

sudo chmod +x /etc/init.d/noip2

y lo ponemos en la cola de ejecución:

sudo update-rc.d noip2 defaults

Y finalmente lo iniciamos:

sudo /usr/local/bin/noip2

Y con esto ponemos FIN a la etapa de NO-IP. Si tenéis IP estática, todo el procedimiento anterior nos lo podremos saltar y continuaremos a partir de aquí:

Nos situaremos en la carpeta NXT/CONF, esto dependerá de donde hayamos descomprimido el cliente NXT la primera vez:

cd ./nxt/conf

y usaremos el siguiente comando:

cp nxt-default.properties nxt.properties

y nos pondremos a editar nuestro archivo de configuración:

sudo nano nxt.properties

cambiaremos lo siguiente:

nxt.myAddress=nxtspainnode.ddns.net [Aquí vuestra URL de no-ip (sin www o http://) o vuestra dirección estática].
nxt.myPlatform=Soy una bonita RPi :D  [Aquí ponemos lo que queramos xD].
nxt.enableAPIServer=true
nxt.allowedBotHosts=*
nxt.apiServerHost=0.0.0.0
nxt.myHallMark=

(Lo último lo dejamos en blanco, más adelante veremos como se hace el HallMark)

Tras esto y como imagino que querremos tener el nodo abierto las 24h sin tener que estar conectados por SSH y con el terminar abierto, instalaremos la aplicación “screen” que sirve para dejar un programa abierto en la raspberry pi y que no se cierre cuando nos deslogueemos en la conexión SSH [para esto también se puede hacer uso de nohup, pero a mí me mola más el screen]. Para instalarlo simplemente:

sudo apt-get install screen

Cuando ya lo tengamos instalado, haremos el siguiente comando para “abrir una terminar que nunca se cerrará”:

screen bash

Dentro de esta nueva terminal SSH, nos iremos a la carpeta de nuestro cliente NXT y:

cd ./nxt [en mi caso]
sudo bash run.sh

Si cerramos el cliente SSH (putty o el programa que usemos) y simplemente queremos regresar a la ventana SHELL donde esta corriendo nuestro servidor:

screen -r

Si queremos cerrar el cliente NXT, simplemente pulsamos “Control + C” mientras estamos en la shell que está ejecutando al cliente.

Tras esto comprobaremos que todo se inicia bien, y podremos entrar en el nodo mediante nuestro navegador favorito en:

192.168.1.101:7876

[En nuestro caso, vuestra IP cambiará si habéis seleccionado otra en el primer paso del tutorial].

Ahora y para hacer a nuestro público, deberemos abrir el puerto 7874 desde nuestro router, accediendo a él desde la puerta de enlace:
192.168.1.1” [en mi caso]

Y dependiendo de nuestra compañía y tipo de Router, nos encontraremos con un método u otro de configuración, en mi caso tendremos esto:


Y tras esto, ya tendremos nuestro nodo público y en cuestión de minutos aparecerá en la lista de peerexplorer:

¡Hay que llenar el peerexplorer de RPis!.

Aunque bueno, ¡No nos debemos contentar con simplemente tener nuestro nodo!, tendremos que instalarle HallMark, ¿no?. Para ello accedemos a nuestro nodo mediante:

~:7876/admin.html

Y veremos algo tal que:

Public IP: URL de no-ip o nuestra IP estática
Weight: 100 (Esto es irrelevante si solo vamos a tener un nodo).
Date: con el formato: YYYY-MM-DD (Y = año, M = mes, D = día). Es el día de la creación del Hallmark.
Secret phrase: La frase secreta de nuestra cuenta de NXT que estará abierta en ese nodo.

Tras rellenar todo, le damos a “submit” y nos saldrá una respuesta tal que:

{"Hallmark":"[u]fjeriuowfoirfywfergtryhho8e9yr34242[/u]"}

Bueno, la clave será muchísimo más larga, simplemente la copiamos (lo que hay subrayado) y lo copiamos tal cual en el campo “nxt.myHallMark=” de la configuración del servidor. Recordemos:

cd ./nxt/conf
sudo nano nxt.properties

Mi caso:

Tras esto, guardamos el fichero (recordamos: “control + O” guardar, “control + X” cerrar) y reiniciamos nuestro querido servidor y ya estará todo listo.

Consejo para nodos nuevos: [OPCIONAL]:
Debido a que la cadena de bloques puede llegar a tardar bastante en descargarse, una opción es que nos descarguemos manualmente la blockchain de http://peerexplorer.com/ y la insertemos en nuestra raspberrypi mediante FTP:

Primero instalaremos el FTP con el comando:

sudo apt-get install vsftpd

Después de la instalación abriremos la configuración y cambiaremos lo siguiente:

sudo nano /etc/vsftpd.conf

-LOCAL_ENABLE: YES
-WRITE_ENABLE: YES

y por último reiniciamos el servidor FTP de la rasp para que admita las nuevas configuraciones:

sudo service vsftpd restart

En el ordenador recomiendo tener a FILEZILLA como cliente FTP (es gratuito), pero podéis tener el que queráis. Con el cliente accedéis al FTP poniendo como IP la local Ip que le tengáis asignada a la raspberry pi. Puerto 80 y usuario y contraseña son las mismas que las del SSH.

No voy a explicar como se usa un cliente FTP por que creo que es demasiado sencillo… Aunque cualquier duda podéis preguntar. Después de haber subido através del FTP la blockchain, podremos apagar el servidor FTP de la raspberry para que no consuma RAM y ejecutar nuestro nodo:

 sudo service vsftpd stop

¡Muchas gracias por la atención prestada!

6 Me gusta

¡Bueno!, pues ya está el tutorial terminado (por favor algún mod lo edite para incluír todas las imágenes a las que quité el “http://” del principio para poder publicarlo.
¿Os gusta?, si queréis agradecerme, podéis invitarme a una caña enviando algo a “NXT-46ZE-BQYK-R26H-8HRRB”, añadiendo un simple comentario agradeciéndome o comprando la rasp pi2 u otro articulo a través del enlace que está en la noticia (ya que me llevo un pequeño porcentaje…).

Un saludo, estoy aquí para cualquier cosa :wink:

2 Me gusta

Hola Ruben! Mirá de configurar tu changetip, seguro que alguno recibes!
http://forobits.com/t/ya-puedes-enviar-y-recibir-tips-en-forobits/280/

Yo por mi parte, ya tienes mis NXT forjando en tu pool, con los fondos para el pool, tus birras, o para que hagas un giveaway!


El tutorial, segun me han dicho, esta de fábula! Lo unico que será diferente en cada caso es el router, en mi caso, despues de varios días, no supe abrir los puertos y desistí cuando hice mi pool para le monetary system.

En cualquier caso, espero verte por aqui con tus opiniones :smile:

Gracias por la guía, te envíe un tip en nxt :wink:

Podrías también subir la info del pool, pues no me importaría dejar mis nxt forjando contigo. Hace tiempo si que trataba de dejar el pc puesto para forjar, pero ceder la forja es mucho más práctico, y si encima se usa para montar nodos, genial.

Hostia, muy currado el tutorial, enhorabuena!!

Gracias a todos por vuestro apoyo! ^-^.

Cuando tenga algo más de tiempo me configuraré el changetip y por supuesto que publicaré sobre la pool benéfica.

Un saludo!

Me apunto este hilo ya que voy a intentar instalar Debían en mi viejo Samsung Galaxy S2 y voy a intentar hacer un nodo. Ya que la lista de espera de la Rasperri 2 creo que es bestial.
Ya os contare… Y a ver lo que gasta.

introduzca descripción del enlace aquí

Me apunto. Gracias por el tutorial

Podria intentar harcerlo desde un viejo blackberry curve 8520 que tengo. He visto en paginas internet que puedo instalar un sistema linux en mi blackberry via linberry. Pero el problema es que todos mis PC estan bajo windows. Como bajar linberry en mi blackberry desde windows 7 ? Gracias si me pueden ayudar.

Joer, con Blackberry ni idea, con android es facil, te bajas el programa Linux Deploy y pruebas, si tu movil es uno con arquitectura ARMv7: http://forum.xda-developers.com/showthread.php?t=1596800 y tienes unos 5 gigas libres, puedes intentarlo. (una vez que instalas linux deploy y el linux (es automatico), haces que arranquen los servicios ssh y te bajas el JuiceSSH y a trabajar.

Yo con el Mi4 no he tenido muchos, problemas… pero no cuenta por que es un tocho telefono. Ahora mismo estoy intentando instar un debian en un S.Galaxy SII. que con sus escasos 700 megas de ram, a ver como lo mueve.

Para que mas o menos nos hagamos una idea los ARMv7 son los mismos que usa el rasperri PI. Tengo curiosidad si este movil con sus 4 añitos puede mover una BlockChain… ya os ire contando.

2 Me gusta

Una ayudita por favor,!!! ya tengo todo instalado, pero me esta dando una especie de error, aunque se esta cargando bien la cadena de bloques y me ponia que el cliente esta funcionando bien… me dice:

FINE:Peer “un IP aleatoria” version null returned error {“cause”:“java.io.IOException: java.util.concurrent.TimeoutException:Idle timeout expired 30000/30000 ms”,“error”:“Your peer is blacklisted”}, request was:{“sharedAdress”:true,“plataform”:SGS2",“protocol”:1,application":“NRS”.“hallmark”:11 …! anouncedAddress":nxt …

¿¿A que debe ser este error??? :frowning:

y hay otra cosa, desde mi RED accedo mediante el puerto :7876 , pero tu has puesto que debemos abrir el puerto :7874 en el router… ¿Eso esta bien? se NATea internamente un puerto sobre el otro?

joer… algo me falla pero no se el que cachis… por cierto, al final no he conseguido hacerlo funcionar en Debia, solo el KALI linux, que esta basado en debian … asik lo mismo monta que monta tanto… pero bueno a ver si furrula.

Na se me colapsa el nodo a los 2 minutos por no tener suficiente RAM, ni SWAP… Seguiremos probando…

1 me gusta

Magnifico post.

Una pregunta desde mi total desconocimiento. ¿Seria posible montar todo esto, y usar una pequeña placa solar para alimentar el nodo sin necesidad de gasto eléctrico? (O por lo menos, una parte importante de las horas)

En teoria si, aunque no lo he probado personalmente.

La Raspberry Pi tiene un consumo de unos pocos Watts-hora. De hecho, habitualmente se alimenta con un cargador de teléfono móvil de 5v (en mi caso de 5v y 1A máx)

Hay tutoriales por internet que explican como utilizar energía solar como fuente de alimentación:

1 me gusta

Hola buenas, tiene algún tipo de rentabilidad???

con 15.000 nxt, generas 5,78 nxt en 60 dias. aprox.

Una preguntilla para los entendidos en nodos, Yo tengo en una Raspberry un nodo, y me conecto a el directamente con la IP de la red privada + /index.html . Me dice al meter la clave que la conexion no es segura.

Claro, cualquier aque este en mi red puede sniffar la contraseña, la pregunta es… ¿desde fuera tambien podrian?

EL remedio para solucionarlo es poner https? alguien lo tiene puesto en su nxt-properties ?? gracias!!

Te respondí aquí https://nxtforum.org/index.php?topic=14071.msg235928#msg235928