Anleitung: Installation NRSRaspberryPi
Contents
-
1 Installation Nxt (und den NRS Klienten) auf dem Raspberry Pi
- 1.1 Generelle Raspbian Installationsanleitung
- 1.2 Aktualisiere das System
- 1.3 Installiere XRDP (RDP Server)
- 1.4 Router/Firewall Port Weiterleitung
- 1.5 Installieren des Nxt Klienten
- 1.6 Stoppe Skript für die Nxt Software
- 1.7 Connecting from your PC instead of localhost
- 1.8 Manuelles Starten des Forgings mit dem NRS Klienten
- 1.9 Handhabung von NRS und Java Fehlern
- 1.10 Hast du Probleme?
- 1.11 Zusätzliche nützliche Befehle und Tools
- 1.12 run_nxt.sh Datei
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
Generelle Raspbian Installationsanleitung
- 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.
Aktualisiere das System
- öffne die Eingabeaufforderung (LXTerminal), gib folgendes ein und folge den Instruktionen:
sudo apt-get upgrade
sudo apt-get dist-update
- Ü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
- Dein Pi sollte eine IP Adresse von DHC übernehmen - dies kann mit dem
Installiere XRDP (RDP Server)
- Öffne die Eingabeaufforderung (LXTerminal), gib folgendes ein und folge den Instruktionen:
sudo apt-get install xrdp
sudo apt-get upgrade xrdp
- 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
Router/Firewall Port Weiterleitung
- Gehe sicher, dass du den TCP Port 7874 tcp auf deinem Netzwerkrouter zur IP deines Raspberry's (192.168.1.10) weiterleitest
Installieren des Nxt Klienten
Du hast 2 mögliche Optionen hier:
- Benutze dein Raspberry Pi mit dem inklusiven, einzigartigen Oracle JRE Paket (alle Komplimente an den Author: davethetrousers )
- 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.
- Nun sollte das Raspberry in der Lage sein, die NRS Software beim Starten zu laden
- Lade die Datei
- Schritt für Schritt Installation von Entwicklern mit eingebauter raspbian Java
- Lade den NRS Klienten runter (aktulle Version: 1.8.3) https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.8.3.zip
- SHA256 hash -
c1c09d2fe3de922745ec14b961d4a232a6d81f7cad663b9ea7f9e21642456466(source: Developers Release) - How to verify SHA256 checksums (du solltest wirklich hier überprüfen, um sicherzugehen, dass der Hash mit dem deiner runtergeladenen Datei übereinstimmt bevor du etwas installierst!)
- SHA256 hash -
- Entpacke die Datei:
unzip nxt.zip
- Nun ist der NRS Klient in deinem Home-Ordner (
/home/pi/nxt/
) - 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.
- Gib folgenden Code am Ende der Datei ein:
- Nun sollte das Raspberry in der Lage sein, die NRS Software beim Starten zu laden
- Lade den NRS Klienten runter (aktulle Version: 1.8.3) https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.8.3.zip
Stoppe Skript für die Nxt Software
- Erstelle eine neue Datei im Ordner /home/pi/nxt/ und nenne diese "stop_nxt.sh":
nano nxt/stop_nxt.sh
- 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
- 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
- Sofern du davethetrousers Java Paket nutzt, gib folgenden Code ein:
- Drücke Ctrl (Strg) und O gleichzeitig, um zu speichern
- 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
Connecting from your PC instead of localhost
- Create a
nxt.properties
file under thenxt/conf/
folder. You can create the file from command line using the commandnano 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;
- Press CTRL and O at the same time to save
- Press CTRL and X together to exit
Manuelles Starten des Forgings mit dem NRS Klienten
Um mit dem Forgen zu starten, muss du mit dem Internetbrowser einmal eingeloggt sein.
- Öffne http://192.168.1.10:7876
- 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.
Handhabung von NRS und Java Fehlern
Du kannst die java logfiles (nxtout.txt and nxterr.txt) im Nxt-Ordner nach Fehlern überprüfen.
Hast du Probleme?
Wirf ein Blick in unser FAQ und die "üblichen Probleme und Lösungen"!
Zusätzliche nützliche Befehle und Tools
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
Starte das Einstellungsmenü (Sprache, Tastatur, Zeitzone, Hostname, etc.)
sudo raspi-config
Ü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.
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]
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