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 100% complete.

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

1 Nxt (en de NRS client) op de Raspberry Pi installeren

"Oorspronkelijk gemaakt door barbarosinciler op nextcoin.org. Donaties naar: 7121642459245273749. Het Javapakket dat Nxt op je Pi installeert is geschreven door davethetrousers, account 14923118471272229432

Raspian en de NRS client voor Nxt draaien beiden goed op een Raspberry Pi. CPUgebruik is ongeveer ~15-20% met de client open en een account ontsloten. Zonder de client (maar met open account) is het meestal minder dan ~10% (soms piekt deze hoger en KAN naar full load gaan). Het geheugengebruik is ca. 100MB.

Zodra deze software op je Pi is geïnstalleerd zal deze automatisch starten bij het booten. Je kunt hem administreren via een remote desktop van een andere PC.

Deze tutorial neemt de volgende dingen aan; pas hem overeenkomstig aan!

  • Je installatie-PC draait op Windows en heeft als IP 192.168.1.20
  • De IP van je router is 192.168.1.1

1.1 Basisinstallatie Raspbian

  1. Download en installeer Raspbian
    • Download de Raspbian image van [1]
    • Download diskimager voor Windows [2].
    • Installeer de image op een SD-kaart en boot de Raspberry van de kaart. Je hoort nu een configmenu te zien.
    • Ga naar het filesysteem en verander je wachtwoord.
    • Zet "boot to desktop" aan.
      • Stel de internationalisatie opties in (taal, keyboard en tijdszone)
      • Schakel onder geavanceerde opties ssh in en stel een hostname als "rpi" in.
      • Reboot. Je hoort nu een desktop te zien en het systeem moet draaien.

1.2 Het systeem updaten

  1. Open de bash commandline (LXTerminal), en typ het volgende en volg de instructies:
    • sudo apt-get upgrade
      sudo apt-get dist-update
  2. Controleer je IP configuratie
    • Je Pi hoort een IP-adres van DHC te kiezen en dit kan bevestigd worden met het ifconfig commando in een shell. Om een statische IP te configureren open je de bash commandline (LXTerminal) en typt het volgende:
      • sudo nano /etc/network/interfaces
  • Verander het volgende:
    iface eth0 inet dhcp
    naar:
    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
    • Druk CTRL en O in om het bestand op te slaan
    • Toets CTRL en X om het programma te verlaten.
    • Reboot je Pi

1.3 Installeer XRDP (RDP Server)

  1. Open de bash commandline (LXTerminal) en typ het volgende en volg de instructies:
    • sudo apt-get install xrdp
      sudo apt-get upgrade xrdp
    • Je kunt nu Microsoft Remote Desktop gebruiken en op afstand op je Raspberry werken.
    • Ga in Windows naar Start>Open en typ "mstsc"
    • Vul je Raspberry's adres (192.168.1.10) in, verbindt en log in met je wachtwoord


1.4 Router/firewall port forwarding

  1. Zorg ervoor dat TCP poort 7874 tcp op je netwerk geforward is naar de IP van je Raspberry (192.168.1.10)

1.5 Installeer de Nxt Client

Je hebt twee opties:

  1. Gebruik je Raspberry Pi met het standalone pakket Oracle JRE hier "(alle krediet voor de auteur: davethetrousers )
    1. Download het tar.gz bestand van davethetrouser's mirror met wget en extraheer:
      • wget http://109.230.224.65/~nxt/nxt_rasppi.tar.gz
        tar -xf nxt_rasppi.tar.gz
      • Om NRS automatisch te starten op je Raspberry reboot pas je het run_nxt.sh bestand in de nxt folder aan:
        • nano nxt/run_nxt.sh
      • Kopiëer de code aan het eind van dit document en plak hem in je bestand.
      • Sla het bestand op met CTRL+O
      • Sluit het bestand af met CTRL+X
      • Voer in: crontab -e
      • Voer deze code aan het einde van het bestand in:
        @reboot /home/pi/nxt/run_nxt.sh
      • Sla het bestand op met CTRL+O
      • Sluit het bestand af met CTRL+X
    2. Nu hoort je Raspberry bij het booten de NRS software moeten laden

1.6 Stop het script voor de Nxt software

  1. Maak een nieuw bestand in de "/home/pi/nxt" folder genaamd "stop_nxt.sh":
    nano nxt/stop_nxt.sh
    1. Als je davethetrousers' Javapakker gebruikt voer je deze code in:
      /home/pi/nxt/ejre1.7.0_45/bin/java -jar /home/pi/nxt/start.jar STOP.PORT=11111 STOP.KEY=123456 --stop
    2. Als je de Nxt software direct hebt gedownload:
      /usr/bin/java -jar /home/pi/nxt/start.jar STOP.PORT=11111 STOP.KEY=123456 --stop
  2. Sla op met CTRL+O
  3. Sluit af met CTRL+X

Nu kun je de client op de bash commandline stoppen met het volgende commando:
sudo bash nxt/stop_nxt.sh Gebruik dit script voor je je Pi reboot om blockchain fouten te voorkomen!

Je kunt nu je systeem rebooten met:
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 Handmatig starten met forgen met de NRS client

Om met forgen te starten moet je eenmaal met je browser moeten inloggen.

  1. Open https://192.168.1.10:7875
  2. Bevestig de SSL waarschuwing
  3. Klik op het slot
  4. Ontsluit je account met je passphrase (ontsluiten kan een paar seconden kosten).

Wanneer de client ontsloten is kun je de browser sluiten en zal het systeem forgen.

1.9 NRS en Java fouten

Je kunt de java logbestanden (nxtout.txt en nxterr.txt) in de nxt folder controleren voor fouten!

1.10 Heb je problemen?

Controleer de FAQ en de "common problems and resolutions" pagina's!

1.11 Extra commando's en hulpmiddelen

1.11.1 Mount je locale Windows HDD op afstand, voor datasharing met je Pi

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

  • x = het IPadres van je Windows PC
  • myusername = de gebruikersnaam voor je Windows PC

1.11.2 Start het menu om Raspbian instellingen te wijzigen (taal, keyboard, tijdszone, hostnaam etc.)

sudo raspi-config

1.11.3 Controleer de ingebouwde Java configuratie

sudo update-alternatives --config java (De standaardlocatie is gemarkeerd met een ster en het pad is iets als /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java/). De standaarden zijn priority = 317 en auto-modus. Als dat OK is, bevestig het met Enter.

1.11.4 Beheer op afstand met Putty

Je kunt je Raspberry op afstand beheren met het hulpmiddel "Putty" door een commandline SSL connectie. Download Putty op [3]

1.12 run_nxt.sh file

Gebruik de volgende code in je 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