Anleitung: Installation NRSRaspberryPi

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 Installation Nxt (und den NRS Klienten) auf dem Raspberry Pi

(Ursprünglich erstellt von barbarosinciler auf nextcoin.org. Sofern dies für dich von Wert ist, bitte spende ihm einige Nxt an 7121642459245273749. Das Java Paket, welches Nxt auf deinem Pi installiert, ist geschrieben von davethetrousers, Konto 14923118471272229432)

Raspbian und der NRS Klient für Nxt laufen beide sehr gut auf einem Raspberry Pi. Die CPU Auslastung liegt bei ungefähr ~15-20%, wenn der Klient und ein Konto geöffnet sind. Ohne offenen Klienten liegt die Auslastung die meiste Zeit bei weniger als ~10% (ab und zu schlägt diese nach oben aus und KANN auch mal voll auslasten). Der benötigte Speicherplatz liegt bei ungefähr 100 MB.

Sobald die Software einmal auf dem Raspberry Pi installiert ist, wird diese automatisch starten. Du kannst die Software administrieren, indem du von einem anderen Computer auf das Raspberry Pi zugreifst.

Diese Anleitung macht folgende Annahmen; passe entsprechend an!

  • dein PC läuft auf Windows und hat die IP 192.168.1.20
  • dein Netzwerkrouter hat die IP 192.168.1.1

1.1 Generelle Raspbian Installationsanleitung

  1. Lade Raspbian runter und installiere dieses
    • Lade das Raspbian Bild runter von [1]
    • Lade "diskimager for windows" runter [2].
    • Installiere das Bild auf einer SD Card und boote das Raspberry von der Karte. Du solltest nun ein Konfigurationsmenü sehen.
      • Weite das "filesystem" aus und wechsle dein Passwort
      • Erlaube das booten zum Desktop
      • Setze die internationalen Optionen (Sprache, Tastatur und Zeitzone)
      • Ermögliche "ssh" unter fortgeschrittenen Optionen und setzte einen Hostnamen wie z.B. "rpi".
      • Boote erneut. Nun solltest du einen Desktop sehen und das System läuft.

1.2 Aktualisiere das System

  1. öffne die Eingabeaufforderung (LXTerminal), gib folgendes ein und folge den Instruktionen:
    • sudo apt-get upgrade
      sudo apt-get dist-update
  2. Überprüfe deine IP Konfiguration
    • Dein Pi sollte eine IP Adresse von DHC übernehmen - dies kann mit dem ifconfig Befehl überprüft werden. Um eine statische IP zu konfigurieren, öffne die Eingabeaufforderung (LXTerminal) und gib folgendes ein:
      • sudo nano /etc/network/interfaces
    • Ändere den folgenden Eintrag von
      iface eth0 inet dhcp
      zu
      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
    • Drücke Ctrl (Strg) und O zur selben Zeit um zu speichern
    • Drücke Ctrl (Strg) und X zusammen, um zu beenden
    • Boote dein Pi erneut

1.3 Installiere XRDP (RDP Server)

  1. Öffne die Eingabeaufforderung (LXTerminal), gib folgendes ein und folge den Instruktionen:
    • sudo apt-get install xrdp
      sudo apt-get upgrade xrdp
  2. Nun kannst du Microsoft Remote Desktop verwenden und vom Computer auf auf dem Raspberry arbeiten.
    • In Windows: Gehe zu Start -> Öffnen -> und schreibe "mstsc"
    • Gib die Adresse des Raspberry's ein (192.168.1.10), verbinde und loge dich ein mit deinem Passwort


1.4 Router/Firewall Port Weiterleitung

  1. Gehe sicher, dass du den TCP Port 7874 tcp auf deinem Netzwerkrouter zur IP deines Raspberry's (192.168.1.10) weiterleitest

1.5 Installieren des Nxt Klienten

Du hast 2 mögliche Optionen hier:

  1. Benutze dein Raspberry Pi mit dem inklusiven, einzigartigen Oracle JRE Paket (alle Komplimente an den Author: davethetrousers )
    1. Lade die Datei tar.gz runter von davethetrousers' mirror mit wget und entpacke diese:
      • wget http://109.230.224.65/~nxt/nxt_rasppi.tar.gz
        tar -xf nxt_rasppi.tar.gz
      • Um NRS automatisch auf dem Raspberry zu starten reboot-bearbeite die Datei run_nxt.sh im Nxt-Ordner:
        • nano nxt/run_nxt.sh
      • Kopiere den Code am Ende dieses Dokuments und füge es in deiner Datei ein.
      • Drücke Ctrl (Strg) und O gleichzeitig, um zu speichern
      • Drücke Ctrl (Strg) und X zusammen, um zu beenden.
      • Gib ein: crontab -e
      • Gib den Code am Ende der folgenden Datei ein:
        @reboot /home/pi/nxt/run_nxt.sh start
      • Drücke Ctrl (Strg) und O gleichzeitig, um zu speichern
      • Drücke Ctrl (Strg) und X zusammen, um zu beenden.
    2. Nun sollte das Raspberry in der Lage sein, die NRS Software beim Starten zu laden
  2. Schritt für Schritt Installation von Entwicklern mit eingebauter raspbian Java
    1. Lade den NRS Klienten runter (aktulle Version: 1.11.15) https://www.jelurida.com/nxt-client.zip
    2. Entpacke die Datei:
      unzip nxt.zip
    3. Nun ist der NRS Klient in deinem Home-Ordner (/home/pi/nxt/)
    4. Gib ein: crontab -e
      • Gib folgenden Code am Ende der Datei ein:
        @reboot /home/pi/nxt/run.sh
      • Drücke Ctrl (Strg) und O gleichzeitig, um zu speichern
      • Drücke Ctrl (Strg) und X zusammen, um zu beenden.
    5. Nun sollte das Raspberry in der Lage sein, die NRS Software beim Starten zu laden

1.6 Stoppe Skript für die Nxt Software

  1. Erstelle eine neue Datei im Ordner /home/pi/nxt/ und nenne diese "stop_nxt.sh":
    nano nxt/stop_nxt.sh
    1. Sofern du davethetrousers Java Paket nutzt, gib folgenden Code ein:
      /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. Sofern du die Nxt Software direkt heruntergeladen hast:
      /usr/bin/java -Xmx1024M -cp nxt.jar;lib/*;conf nxt.Nxt STOP.PORT=11111 STOP.KEY=123456 --stop
  2. Drücke Ctrl (Strg) und O gleichzeitig, um zu speichern
  3. Drücke Ctrl (Strg) und X gleichzeitig, um zu beenden

Nun kannst du den Klienten über die Eingabeaufforderung mit folgendem Befehl stoppen:
sudo bash nxt/stop_nxt.sh Vor dem Neustarten solltest du diesen Skript benutzen, um einen Blockchainfehler zu vermeiden!

Nun kannst du das System neustarten mit:
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 Manuelles Starten des Forgings mit dem NRS Klienten

Um mit dem Forgen zu starten, muss du mit dem Internetbrowser einmal eingeloggt sein.

  1. Öffne http://192.168.1.10:7876
  2. Entsperre dein Konto mit deinem Passwort (dauert wenige Sekunden)

Wenn der Klient entsperrt ist, kannst du den Browser schliessen und das System beginnt mit forgen.

1.9 Handhabung von NRS und Java Fehlern

Du kannst die java logfiles (nxtout.txt and nxterr.txt) im Nxt-Ordner nach Fehlern überprüfen.

1.10 Hast du Probleme?

Wirf ein Blick in unser FAQ und die "üblichen Probleme und Lösungen"!

1.11 Zusätzliche nützliche Befehle und Tools

1.11.1 Errichte deine lokale Windows Festplatte ferngesteuert für den Datenaustausch mit dem Raspberry Pi

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

  • x = Die IP-Adresse deine Windows PC's
  • myusername = dein Username auf deinem Windows PC

1.11.2 Starte das Einstellungsmenü (Sprache, Tastatur, Zeitzone, Hostname, etc.)

sudo raspi-config

1.11.3 Überprüfe die eingebaute Java Konfiguration

sudo update-alternatives --config java (Die Standartlokation ist gekennzeichnet mit einem Stern und der Pfad ist ungefähr so) /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java/. Die Standards sind priority = 317 und auto-modus. Wenn das OK ist, bestätige mit drücken von Enter.

1.11.4 Ferngesteuerte Administration mit putty

Du kannst dein Raspberry mit dem Tool "putty" administrieren durch eine command line SSL Verbindung. Lade das Tool runter von [3]

1.12 run_nxt.sh Datei

Benutze folgenden Code in deinem run_nxt.sh Skript:

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