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!