Cómo instalar el cliente NRS en Raspberry Pi

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of the page How-To:InstallNRSRaspberryPi and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎italiano • ‎português do Brasil • ‎русский • ‎українська • ‎中文(简体)‎

1 Instalando Nxt (y el cliente NRS) en Raspberry Pi

(Creado originalmente por barbarosinciler en nextcoin.org . Si te resulta de utilidad, por favor dona algunos Nxt a su dirección 7121642459245273749. El paquete Java que instala Nxt en tu Pi fue escrito por davethetrousers, en 14923118471272229432)

Tanto Raspbian como el cliente NRS corren muy bien en un Raspberry Pi. El uso de la CPU es aproximadamente de un ~15-20% con el cliente web abierto y una cuenta desbloqueada. sin el cliente web abierto (aún desbloqueado) es menos del ~10% la mayoría del tiempo (ocasionalmente llega más alto y PUEDE ocasionalmente subir a uso total) El uso de memoria es de unos 100MB.

Una vez este software está instalado en tu Raspberry Pi, será ejecutado automáticamente en el arranque. Puedes administrarlo desde escritorio remoto en otro PC.

Este tutorial asume lo siguiente; ¡ajústalo en caso contrario!

  • tu PC de instalación usa Windows y tiene como IP 192.168.1.20
  • la IP de tu router de red es 192.168.1.1

1.1 Instalación Básica de Raspbian

  1. descargar e instalar Raspbian
    • Descargar la imagen de Raspbian desde [1]
    • Descargar diskimager para Windows [2].
    • Instalar la imagen en una tarjeta SD, y arrancar el Raspberry desde la tarjeta. Deberías ver un menú de configuración.
      • Expandir el sistema de archivos y cambiar la contraseña.
      • Habilitar el arranque al escritorio.
      • Definir opciones de internationalización (idioma, teclado y zona horaria)
      • Bajo opciones avanzadas, habilita ssh y define un nombre de host como "rpi".
      • Reinicia. Ahora deberías ver un escritorio y el sistema está ejecutándose

1.2 Actualiza el sistema

  1. abre la línea de comandos bash (LXTerminal), escribe lo siguiente, y sigue las instrucciones:
    • sudo apt-get upgrade
      sudo apt-get dist-update
  2. Revisa tu configuración IP
    • Tu Pi debería escoger una dirección IP de DHC, y eso se puede confirmar mediante el comando ifconfig en el terminal. Para configurar una IP estática, abre la línea de comandos bash (LXTerminal) e introduce lo siguiente:
      • sudo nano /etc/network/interfaces
    • Cambia la siguiente entrada desde:
      iface eth0 inet dhcp
      Hasta:
      iface eth0 inet static
      address 192.168.1.10
      netmask 255.255.255.0
      gateway 192.168.1.1
      network 192.168.1.0
      broadcast 192.168.1.255
    • Pulsa CTRL y O a la vez para guardar el archivo
    • Pulsa CTRL y X a la vez para salir
    • Reinicia tu Pi

1.3 Instala XRDP (servidor RDP)

  1. Abre la línea de comandos bash (LXTerminal) e introduce lo siguiente, siguiendo las instrucciones:
    • sudo apt-get install xrdp
      sudo apt-get upgrade xrdp
  2. Ahora puedes usar Escritorio Remoto de Microsoft y trabajar en remoto con el Raspberry.
    • En windows, ve a inicio -> abrir -> y teclea "mstsc"
    • Introduce la dirección de tu Raspberry (192.168.1.10), conéctate y entra con tu contraseña


1.4 Enrutamiento de puertos en Router/firewall

  1. Asegúrate de enrutar el puerto TCP 7874 en tu router de red a la dirección IP de tu Raspberry (192.168.1.10)

1.5 Instala el Cliente NXT

Aquí tienes dos opciones posibles:

  1. Utilizar tu Raspberry Pi con el paquete independiente incluido Oracle JRE (todo el crédito para su autor: davethetrousers )
    1. Descarga el archivo tar.gz desde el mirror de davethetrousers con wget, y extráelo:
      • wget http://109.230.224.65/~nxt/nxt_rasppi.tar.gz
        tar -xf nxt_rasppi.tar.gz
      • Para empezar NRS de forma automática en el arranque del Raspberry, edita el archivo run_nxt.sh en la carpeta nxt:
        • nano nxt/run_nxt.sh
      • Copia el código que se encuentra al final de este documento, y pégalo en tu archivo.
      • Pulsa CTRL y O a la vez para guardar
      • Pulsa CTRL y X a la vez para salir.
      • Introduce: crontab -e
      • Inserta el código al final del archivo:
        @reboot /home/pi/nxt/run_nxt.sh
      • Pulsa CTRL y O a la vez para guardar
      • Pulsa CTRL y X a la vez para salir
    2. Ahora el raspberry debería poder cargar el archivo NRS en el arranque

1.6 Detener el script del software Nxt

  1. Crea un archivo nuevo en la carpeta /home/pi/nxt/ y nómbralo algo así como "stop_nxt.sh":
    nano nxt/stop_nxt.sh
    1. Si usas el paquete Java de davethetrousers, introduce el siguiente código:
      /home/pi/nxt/ejre1.7.0_45/bin/java -jar /home/pi/nxt/start.jar STOP.PORT=11111 STOP.KEY=123456 --stop
    2. Si descargaste directamente el software de Nxt:
      /usr/bin/java -jar /home/pi/nxt/start.jar STOP.PORT=11111 STOP.KEY=123456 --stop
  2. Pulsa CTRL y O a la vez para guardar
  3. Pulsa CTRL y X a la vez para salir.

Ahora puedes detener el cliente desde la línea de comandos con el comando siguiente:
sudo bash nxt/stop_nxt.sh ¡Antes de reiniciar tu Pi, deberías usar este script para evitar un error en la cadena de bloques!

Ahora puedes reiniciar el sistema con:
sudo reboot

1.7 Connecting from your PC instead of localhost

  1. Create a nxt.properties file under the nxt/conf/ folder. You can create the file from command line using the command nano nxt/conf/nxt.properties and write the following in it. Make sure to modify the IP accordingly to yours:
    nxt.allowedBotHosts=127.0.0.1; localhost; 192.168.1.20; 0:0:0:0:0:0:0:1;
    nxt.allowedUserHosts=127.0.0.1; localhost; 192.168.1.20; 0:0:0:0:0:0:0:1;
  2. Press CTRL and O at the same time to save
  3. Press CTRL and X together to exit

1.8 Empezar manualmente a forjar con el cliente NRS

Para empezar a forjar necesitarás haber entrado en tu cuenta una vez a través de tu navegador.

  1. Abre https://192.168.1.10:7875
  2. Confirma la notificación de SSL
  3. Haz clic en el candado
  4. Desbloquea tu cuenta con su contraseña (desbloquear una cuenta lleva unos segundos).

Si el cliente está desbloqueado, puedes cerrar el navegador y el sistema comenzará a forjar.

1.9 Manejando errores de NRS y Java

Puedes revisar los archivos de registro java (nxtout.txt and nxterr.txt) en la carpeta nxt si obtienes errores.

1.10 ¿Tienes problemas?

¡Revisa las preguntas frecuentes y la página de "problemas comunes y soluciones"!

1.11 Comandos y herramientas útiles adicionales

1.11.1 Monta tu disco duro local de windows remotamente, para compartir datos con el Raspberry Pi

sudo mount -t cifs //192.168.1.20/c$ /mnt -o user=miusuario Donde:

  • x = la dirección IP de tu PC con Windows
  • miusuario = tu usuario en el PC con Windows

1.11.2 Arrancar el menú para cambiar la configuración de raspbian (idioma, teclado, zona horaria, nombre de host, etc.)

sudo raspi-config

1.11.3 Revisar la configuración de Java integrada

sudo update-alternatives --config java La localización estándar está marcada con un asterisco, y la ruta es algo como /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java/ Los valores por defecto son priority = 317 y auto-modus. Si es correcto, confirma pulsando Enter.

1.11.4 Administración remota con putty

Puedes administrar tu raspberry con la herramienta "putty" a través de una conexión SSL por la línea de comandos. Descarga la herramienta desde [3]

1.12 Archivo run_nxt.sh

Utiliza el siguiente código en tu script run_nxt.sh:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          NXTserver
# Required-Start:    $local_fs $remote_fs $network $syslog $named $sshd
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop NXT server
### END INIT INFO

if [ `id -u` != "0" ] && [ "$1" = "start" -o "$1" = "stop" ] ; then
  echo "You must be root to start/stop nxt."
  exit 1
fi

# Settings
nxtdir=/home/pi/nxt
nxt=nxt.jar
java=/usr/bin/java
nxtpid=/var/run/nxt.pid
nxtlog=/home/pi/nxt/nxt.log
nxtuser=pi
nxtgroup=pi
nxtnice=19
timeout=700
maxmem=120
# end Settings

# check for exist files and dirs
test -d $nxtdir || exit 0
test -f $nxtdir/$nxt || exit 0
test -f $java || exit 0

# make sure $nxtdir is ours!
chown -R $nxtuser:$nxtgroup $nxtdir

. /lib/lsb/init-functions

function status {

    start-stop-daemon -T --pidfile "$nxtpid" && echo "NXT server is started." \
    || { echo "NXT server is stopped." ; return 1; }

    return 0;
}

case "$1" in
    start)
        log_daemon_msg "Starting NXT server..." "" || true

        # check if server is running
        if [ -e $nxtpid ]; then
            pid=`cat $nxtpid`
            var=`ps -p$pid | wc -l`

            if [ $var -lt "2" ]; then
                # clear logfile
                echo -n > $nxtlog
            else
                echo -n " NXT server is already running!"
                log_end_msg 0 || true
                exit 0
            fi
        fi
        
        # Enable Debug for more info when starting NXT
        if cat $nxtdir/conf/nxt.properties | grep -q  "nxt.debug="; then
            if cat $nxtdir/conf/nxt.properties | grep -q  "nxt.debug=true"; then
                # Debug is enabled, nothing todo...
                echo -n ""
            elif cat $nxtdir/conf/nxt.properties | grep -q  "nxt.debug=false"; then
                echo nxt.debug=true >> $nxtdir/conf/nxt.properties
            fi
        else
            echo nxt.debug=true >> $nxtdir/conf/nxt.properties
        fi
                
        # n minute timeout.
        sleep $timeout &
        timerPid=$!

        # check log file and generate status-msg; will be killed when server is started or timeout hit
        tail -q -n0 -F --pid=$timerPid $nxtlog 2> /dev/null | while read line; do

            if echo $line | grep -q  "Scanning blockchain"; then
                echo -n " Scanning blockchain"            
            elif echo $line | grep -q  "processed block"; then
                echo -n "."            
            fi

            if echo $line | grep -q  "started successfully."; then
                echo -n "NXT server started successfully."
                log_end_msg 0 || true
                # stop the timer..
                kill $timerPid > /dev/null 2>&1
				$nxtdir/traffic_shaper.sh > /dev/null 2>&1
            fi
        done &
        
        # start server
        if start-stop-daemon --start --name nxt --nicelevel $nxtnice --chuid $nxtuser:$nxtgroup --pidfile $nxtpid -m --chdir $nxtdir --exec $java >> $nxtlog 2>&1 -- -Xmx"$maxmem"m -cp $nxt:lib/*:conf nxt.Nxt >> $nxtlog 2>&1 & then
            # wait for the timer to expire (or be killed)
            wait %sleep > /dev/null 2>&1
        else
            log_end_msg 1 || true
        fi
        ;;
    stop)
        log_daemon_msg "Stopping NXT server..." || true

        # check if server is running
        if start-stop-daemon --stop --pidfile $nxtpid > /dev/null 2>&1; then
            
            while status > /dev/null; do
                sleep 1;
            done
            
            echo -n " NXT server stopped."
            log_end_msg 0 || true
            rm $nxtpid  > /dev/null 2>&1
        else 
            echo -n " NXT server is not running!"
            log_end_msg 0 || true
            exit 0
        fi
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    status)
        status
        ;;
    *)
        echo "usage:`basename $0` start | stop | restart | status"
        exit 1
        ;;
esac