How-To:InstallNRSRaspberryPi

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

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

1 Installare Nxt (e il client NRS) su Raspberry Pi

(Creato da barbarosinciler su nextcoin.org . Se questa guida ti è stata d'aiuto considera fare una donazione all'autore all'indirizzo 7121642459245273749. Il programma Java che installa Nxt sul tuo Raspberry Pi è stato scritto da davethetrousers, il suo indirizzo è 14923118471272229432)

Raspbian e il client NRS per Nxt funzionano bene su Raspberry Pi. L'utilizzo della CPU è approssimativamente ~15-20% con il web client aperto e un account sbloccato. Senza aver il web client aperto (ma con l'account sbloccato) è perlopiù a meno di ~10% (ogni tanto aumenta e PUÒ arrivare a 100%). L'uso della memoria è di circa 100MB.

Una volta installato questo software nel tuo Raspberry Pi, questo sarà lanciato automaticamente ad ogni avvio. Puoi gestirlo usando un desktop remoto dal tuo PC.

Questo tutorial parte dai presupposti seguenti; modificali di conseguenza al tuo sistema!

  • il tuo PC sta usando Windows e ha come IP 192.168.1.20.
  • l'IP del router del tuo network è 192.168.1.1

1.1 Guida di base all'installazione di Raspbian

  1. Scarica e installa Raspbian
    • Scarica il file immagine di Raspbian da [1]
    • Scarica diskimager per windows [2].
    • Installa l'immagine nella carta SD, inseriscila e avvia il Raspberry. Dovresti vedere un menu di configurazione.
      • Espandi il filesystem e cambia la password.
      • Abilità l'avvio su desktop.
      • Imposta le opzioni di internazionalizzazione (lingua, tastiera e fuso orario)
      • Sotto le impostazioni avanzate abilita ssh e definisci un hostname, ad esempio "rpi".
      • Riavvia. Ora dovresti vedere il desktop e il sistema è in funzione.

1.2 Aggiornare il sistema

  1. apri la linea di comando (LXTerminal), digita quanto segue e segui le istruzioni:
    • sudo apt-get upgrade
      sudo apt-get dist-update
  2. Controlla il tuo indirizzo IP
    • Il tuo Raspberry Pi dovrebbe ottenere un indirizzo IP da DHC, e questo può essere confermato usando il comando ifconfig nel terminale. Per configurare un indirizzo IP statico, apri la linea di comando (LXTerminal) e digita:
      • sudo nano /etc/network/interfaces
    • Rimpiazza la linea:
      iface eth0 inet dhcp
      con:
      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
    • Premi CTRL e O allo stesso tempo per salvare il file
    • Premi CTRL e X assieme per uscire
    • Riavvia il tuo Raspberry Pi.

1.3 Installa XRDP (server RDP)

  1. Apri la linea di comando (LXTerminal), digita quanto segue e segui le istruzioni;
    • sudo apt-get install xrdp
      sudo apt-get upgrade xrdp
  2. Ora puoi usare Microsoft Remote Desktop e lavorare da remoto sul Rasbperry.
    • Su windows clicca su start -> open -> e digita "mstsc"
    • Inserisci l'indirizzo IP del tuo Raspberry pi (192.168.1.10), connettiti e fai il login usando la tua password


1.4 Port forwarding per Router/firewall

  1. Assicurati d'inoltrare la porta 7874 TCP del tuo router all'indirizzo IP del tuo Raspberry (192.168.1.10)

1.5 Installare il Client NXT

Qui hai due opzioni possibili:

  1. Usa il tuo Raspberry Pi con il pacchetto Oracle JRE incluso (i riconoscimenti vanno all'autore: davethetrousers )
    1. Scarica il file tar.gz dal sito di davethetrousers usando wget e estrailo:
      • wget http://109.230.224.65/~nxt/nxt_rasppi.tar.gz
        tar -xf nxt_rasppi.tar.gz
      • Per fare in modo che NRS venga lanciato automaticamente con l'avvio del Raspberry modifica il file run_nxt.sh nella cartella nxt:
        • nano nxt/run_nxt.sh
      • Copia il codice situato in fondo a questo documento, e incollalo nel tuo file.
      • Premi CTRL e O allo stesso tempo per salvare
      • Premi CTRL e X assieme per uscire.
      • Digita: crontab -e
      • Inserisci questo codice alla fine del file:
        @reboot /home/pi/nxt/run_nxt.sh start
      • Premi CTRL e O allo stesso tempo per salvare
      • Premi CTRL e X assieme per uscire.
    2. Ora il raspberry dovrebbe essere in grado di lanciare il software NRS all'avvio
  2. Guida passo per passo per l'installazione fornita dagli sviluppatori con Java incluso in raspbian
    1. Scarica il client NRS (ultima versione: 1.11.14) https://www.jelurida.com/nxt-client.zip
    2. Estrai il file:
      unzip nxt.zip
    3. Ora il client NRS si trova nella cartella home (/home/pi/nxt/)
    4. Digita: crontab -e
      • Inserisci questo codice alla fine del file:
        @reboot /home/pi/nxt/run.sh
      • Premi CTRL e O allo stesso tempo per salvare
      • Premi CTRL e X assieme per uscire.
    5. Ora il raspberry pi dovrebbe essere in grado di lanciare il software NRS all'avvio

1.6 Stop script for the Nxt software

  1. Create a new file in the /home/pi/nxt/ folder and name it something like "stop_nxt.sh":
    nano nxt/stop_nxt.sh
    1. If you are using davethetrousers' Java package, enter this code:
      /home/pi/nxt/ejre1.7.0_45/bin/java -Xmx1024M -cp nxt.jar;lib/*;conf nxt.Nxt STOP.PORT=11111 STOP.KEY=123456 --stop
    2. If you downloaded the Nxt software directly:
      /usr/bin/java -Xmx1024M -cp nxt.jar;lib/*;conf nxt.Nxt STOP.PORT=11111 STOP.KEY=123456 --stop
  2. Press CTRL and O at the same time to save
  3. Press CTRL and X together to exit.

Now you can stop the client on bash command line with the following command:
sudo bash nxt/stop_nxt.sh Before reboot your Pi, you should use this script to prevent a blockchain error!

Ora puoi fare un reboot del sistema con il comando:
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 Comincia a forgiare usando il client NRS

Per poter cominciare a forgiare devi sbloccare il tuo account dal tuo browser.

  1. Apri http://192.168.1.10:7876
  2. Sblocca il tuo account usando la tua passphrase (sbloccare può richiedere alcuni secondi).

Se il client è sbloccato puoi chiudere il browser e il sistema comincerà a forgiare.

1.9 Gestire errori di NRS e Java

Puoi esaminare gli errori nei log file di java (nxtout.txt e nxterr.txt) nella cartella nxt!

1.10 Hai problemi?

Dai un'occhiata alla pagina FAQ e alla pagina "problemi comuni e risoluzioni"

1.11 Altri comandi e strumenti utili

1.11.1 Monta il tuo disco rigido di windows in remoto, per lo scambio di dati con Raspberry Pi

sudo mount -t cifs //192.168.1.20/c$ /mnt -o user=myusername Dove:

  • x = È l'indirizzo IP del tuo PC windows.
  • myusername = è il tuo nome utente nel PC windows

1.11.2 Lancia il menu per il cambiamento delle impostazioni di raspbian (lingua, tastiera, fuso orario, hostname etc.)

sudo raspi-config

1.11.3 Check the built-in Java configuration

sudo update-alternatives --config java (The standard location is marked with a star, and the path is something like /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java/ The defaults are priority = 317 and auto-modus. If that is ok, confirm by pressing Enter.

1.11.4 Remote administration with putty

You can manage your raspberry with the tool "putty" through a command line SSL connection. Download the tool from [3]

1.12 run_nxt.sh file

Use the following code in your run_nxt.sh script:

#!/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