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 Instalação do Nxt (e do cliente NRS) em Raspberry Pi

(Originalmente criado por barbarosinciler do nextcoin.org. Considere doar algumas moedas Nxt a ele no endereço 7121642459245273749. O pacote Java que instala o Nxt em seu Pi foi escrito por davethetrousers, pelo 14923118471272229432)

O Raspbian e o cliente NRS para Nxt rodam muito bem em um Raspberry Pi. Uso da CPU é de aproximadamente ~15-20% com o cliente web aberto e uma conta desbloqueada. Com o cliente web fechado (ainda desbloqueado) é menos de ~10% na maioria do tempo (ocasionalmente ocorrem picos maiores e as vezes dá carga total). O uso de memória é de cerca de 100MB.

Uma vez que este software está instalado no seu Raspberry Pi, ele será iniciado automaticamente na inicialização. Você pode administrá-lo usando o desktop remoto a partir de outro PC.

Este tutorial faz as seguintes suposições; ajuste em conformidade!

  • O seu computador está rodando o Windows e tem um IP 192.168.1.20
  • IP do seu roteador de rede é 192.168.1.1

1.1 Guia básico de instalação de Raspbian

  1. baixe e instale o Raspbian
    • Faça download do Raspbian de [1]
    • Baixa o diskimager para Windows [2].
    • Instale a imagem em um cartão SD, e inicialize o Raspberry do cartão. Você vai ver um menu de configuração.
      • Expanda o sistema de arquivos e altere a sua senha.
      • Ativar a inicialização para desktop.
      • Defina as opções de internacionalização (idioma, teclado e fuso horário)
      • Em Opções avançadas libere o ssh e define um nome de host para algo como "RPI".
      • Reinicie. Agora você deve ver um desktop e o sistema está funcionando.

1.2 Atualize o sistema

  1. abre o terminal bash (LXTerminal), digite o seguinte e siga as instruções:
    • sudo apt-get upgrade< br />sudo apt-get dist-update
  2. Verifique a configuração IP
    • Seu Pi deve obter um endereço IP do DHC, e isso pode ser confirmado com o comando ifconfig em um terminal. Para configurar um IP estático, abra a linha de comando bash (LXTerminal) e digite o seguinte: #**sudo nano /etc/network/interfaces
    • Mude a seguinte entrada de:
      iface eth0 inet dhcp
      para:
      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
    • Pressione CTRL+O para salvar o arquivo
    • Pressione CTRL+X para sair
    • Reinicie o Pi

1.3 Instale XRDP (servidor RDP)

  1. Abra a linha de comando bash (LXTerminal) e digite o seguinte, e siga as instruções:
    • sudo apt-get install xrdp
      sudo apt-get upgrade xrdp
  2. Agora você pode usar o Microsoft Remote Desktop e trabalhar remotamente no Rasberry.
    • No windows vá para start -> open -> e digite "mstsc"
    • Entre com o seu endereço de Raspberry (192.168.1.10), conecta e faça login com a sua senha


1.4 Redirecionamento de portas do roteador/firewall

  1. Certifique-se de transmitir a porta TCP 7874 no seu roteador de rede para o IP do seu Rasberry (192.168.1.10)

1.5 Instala o cliente NXT

Você tem duas opções possíveis:

  1. Use seu Raspberry Pi com o pacote autônomo do Oracle JRE incluído (todos os créditos para o autor: davethetrousers)
    1. Faça o download do tar.gz do mirror de davethetrousers com wget e o extraia:
      • wget http://109.230.224.65/~nxt/nxt_rasppi.tar.gz < br /> tar -xf nxt_rasppi.tar.gz
      • Para iniciar NRS automaticamente em cada reinicialização, edite o arquivo run_nxt.sh na pasta NXT:
        • nano nxt/run_nxt.sh
      • Copie o código localizado no final deste documento, e o cole em seu arquivo.
      • Pressione CTRL+O para salvar
      • Pressione CTRL+X para sair.
      • Digite: crontab -e
      • Coloque o seguinte código no final do arquivo:
        @reboot /home/pi/nxt/run_nxt.sh start
      • Pressione CTRL+O para salvar
      • Pressione CTRL+X para sair.
    2. Agora, o Raspberry deve ser capaz de carregar o software NRS no boot
  2. Instalação passo a passo do mirror do desenvolvedor o raspbian java incluso
    1. Faça o download do cliente NRS (versão atual: 1.11.14) https://www.jelurida.com/nxt-client.zip
    2. Descompacte o arquivo: < br / > unzip nxt.zip
    3. Agora, o cliente NRS está na sua pasta pessoal (/home/pi/nxt/)
    4. Faça um novo arquivo nna pasta /home/pi/nxt e o nomeia mais ou menos assim "run_nxt.sh":
      nano nxt/run_nxt.sh
    5. Copie o código localizado no final deste documento, e o cola em seu arquivo.
    6. Pressione CTRL+O para salvar, pressione CTRL+X juntos para sair.
    7. Digite: crontab -e
      • Coloque o seguinte código no final do arquivo:
        @reboot /home/pi/nxt/run_nxt.sh start
      • Pressione CTRL+O para salvar
      • Pressione CTRL+X para sair.
    8. Agora, o Raspberry deve ser capaz de carregar o software NRS no boot

1.6 O script para parar o software Nxt

  1. Crie um novo arquivo na pasta /home/pi/nxt/ e o nomeia, por exemplo, "stop_nxt.sh":
    nano nxt/stop_nxt.sh
    1. Se você estiver usando pacote Java de davethetrousers, insira este 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. Se você baixou o software Nxt diretamente:
      /usr/bin/java -jar /home/pi/nxt/start.jar STOP.PORT=11111 STOP.KEY=123456 --stop
  2. Pressione CTRL+O para salvar
  3. depois, CTRL+X para sair.

Agora você pode parar o cliente com o seguinte comando:
sudo bash nxt/stop_nxt.sh Antes de reiniciar o Pi, você deve usar este script para evitar um erro do blockchain!

Agora você pode reinicializar o sistema:
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 Iniciar manualmente o forjamento com o cliente NRS

Para começar a forjar você precisará estar conectado com o seu navegador.

  1. Abre https://192.168.1.10:7875
  2. Confirme a notificação SSL
  3. Clique no cadeado
  4. Desbloqueie a sua conta com a sua senha (este desbloqueio leva alguns segundos). Se o cliente é desbloqueado você pode fechar o navegador e o sistema começará a forjar.

1.9 Manuseando os erros de NRS e Java

Pode verificar os logs de java (nxtout.txt and nxterr.txt) na pasta nxt folder para ver os erros!

1.10 Problemas?

Verifique o FAQ e "common problems and resolutions"!

1.11 Ferramentas e comandas adicionais

1.11.1 Monta o seu harddrive do windows remotamente, para compartilhamento de dados com o Raspberry Pi

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

  • x = O endereço IP do seu PC Windows
  • myusername = o seu username no PC windows

1.11.2 Acessar o menu para mudar as configurações do raspbian (idioma, teclado, fuso horário, hostname etc.)

sudo raspi-config

1.11.3 Verifique a configuração interna do Java

sudo update-alternatives --config java (A localização padrão é marcada com uma estrela, e o caminho é algo como /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java/) Os padrões são priority = 317 e auto-modus. Se isso é OK, confirme pressionando Enter.

1.11.4 Administração remota com putty

Você pode gerenciar o seu Raspberry com a ferramenta "putty" através de uma conexão de linha de comando SSL. Baixe a ferramenta de [3]

1.12 o arquivo run_nxt.sh

Usa o seguinte código no 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