NXTER.ORG

如何在树莓派Pi 2上面运行Nxt节点

nxt-raspberry-pi2

Nxt 是目前为止最具创新的点对点网络。它是一个开源的去中心化的区块链平台,使用了股权证明共识机理,已经运行了2年多时间。目前,Nxt所使用的技术也被Ethereum所采用,而Nxt仍保持一贯的低调神秘。

但是Nxt的开发者一直在忙于开发,在最新的发布版本中带来了很多新的功能特征API文档也进行了扩充,而运行软件依旧需要很小的系统资源。生产区块的“全节点”可以运行在价格为50美金的树莓派Pi 2上。

你所需要的内容如下:

  • Raspberry Pi 2
  • 8GB+ microSDHC card (推荐Class 6 或更高)
  • Micro USB 电源线
  • Cat 5 网线 或 USB wifi 适配器
  • USB 键盘、显示器+HDMI线

安装系统

我们将使用Linux,因为它可靠、安全并且免费。Raspbian是在树莓派上使用最广泛的Linux系统,支持和维护都很好。最新版本的Raspbian是 “Jessie” (2015-11-21),可以在 RaspberryPi.org上下载。这是专用节点,只能远程登访问,因为我建议使用Jessie Lite ,因为我们不需要window管理器。

有很多方法可以将镜像写入microSDHC卡,安装指导文件包括了LinuxOS X 和Windows.

“很容易就能搞定它…”

系统配置

准备好microSDCH卡之后就可以开始使用树莓派了。将内存卡插入树莓派,插入USB键盘、网线和HDMI连接线,插入电源线。

系统启动后,你就能看到登陆界面了。默认用户名是pi ,默认密码是 raspberry。登陆之后就可以运行下列命令来俺安装最新的系统更新文件:

sudo apt-get update
sudo apt-get upgrade

接着,启动系统配置:

sudo raspi-config

首先将默认密码修改为安全的密码。选择”2 Change User Password” 来设置新密码。

选择 “9 Advanced Options”

因为我们没有使用窗口管理器,我们可以给系统分配一些GPU内存。选择 “A3 Memory Split” 并将值设定为 16。

如果你想用其它电脑通过SSH来访问你的节点,你可以在”A4 SSH”中激活。我强烈推荐强化你的SSH安装

最后,选择 “1 Expand Filesystem”来重写你的microSDHC卡的部分数据表以使用全部内存。

一旦完成设置,点击ESC退出,重启系统:

sudo reboot

再次登录,检查根系统文件已经扩展:

df -h

根系统文件的大小应该选择接近你的SDHC卡的内存容量。

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  2.2G   13G  14% /

接下来通过编辑交换配置文件来增加交换并重启服务:

sudo nano /etc/dphys-swapfile

修改 CONF_SWAPSIZE并将其设定为 512 或 1024 ,然后保存文件 (CTRL-O, ENTER, CTRL-X).

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=1024

重启swapfile 服务:

sudo service dphys-swapfile restart

网络配置

因为这是一个全节点,你需要允许点对点的网络流量通过你的路由防火墙。每一个网络配置都是不一样的,因此这部分是通用指南。假定你用DHCP连接到路由,你的树莓派应该有一个本地IP地址,否则你将需要配置静态IP地址。显示当前网络配置:

ifconfig eth0

eth0   Link encap:Ethernet  HWaddr b1:ff:4a:a4:ff:1b
       inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0

inet addr 是你的本地IP, HWaddr 是你的MAC 地址。在你的路由器设置中,找到端口转发设置,并将TCP/UDP端口转向你的树莓派的本地IP地址。如果你没有使用静态IP地址,你应该为MAC地址和本地IP地址设置一个DHCP静态永久租用(又称为DHCP预留)。这样的话树莓派将会有相同的本地IP地址。

安装Java

Nxt 需要Java 8。你可以下载并安装 Oracle JRE, 或者你可以可以安装 OpenJDK JRE:

sudo apt-get install openjdk-8-jreYou love Java.

确认Java是否安装正确以及版本:

java -version

你应该会看到类似这样的输出:

openjdk version "1.8.0_40-internal"
OpenJDK Runtime Environment (build 1.8.0_40-internal-b04)
OpenJDK Zero VM (build 25.40-b08, interpreted mode)

安装Nxt

公开代码库下载最新的Nxt版本。你可以使用wget命令来下载。目前可用的最新版本是1.7.4

wget https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.7.4.zip

确认安装文件的哈希,验证是否与已发布的签名哈希一致。你也可以验证区块链中的哈希。Jean Luc的Nxt账户是 NXT-X4LF-9A4G-WN9Z-2R322.

sha256sum nxt-client-1.7.4.zip

baf0286983fee3f718ea755dd76f5e9bb3d6a2962560368d513ffc9517d10c9b  nxt-client-1.7.4.zip

解压文件创建 “nxt” 目录:

unzip nxt-client-1.7.4.zip

在配置Nxt之前,你需要找出你的公共IP地址。可以通过以下命令进行:

curl ipinfo.io

记下你的公共IP地址,运行以下命令来创建一个新的配置文件:

nano ~/nxt/conf/nxt.properties

配置举例:

nxt.myAddress=12.34.56.78
nxt.apiServerHost=0.0.0.0
nxt.allowedBotHosts=*

如果你能在路由器上将设置端口转发,请将nxt.myAddress设定为你的公共IP地址。否则,请在配置文件中删除这一行。其它的参数,我们已经设定了API来允许从任何地方访问。完成这些设置之后,你应该考虑对你的本地网络或特定IP地址作一些访问限制。参见nxt/conf/nxt-default.properties 。保存配置文件,退出编辑。

编辑启动文件,并优化内存配置:

nano ~/nxt/run.sh

添加参数 -Xmx640m 来将默认的Java堆内存扩展至 640mb:

java -Xmx640m -cp classes:lib/*:conf nxt.Nxt

现在你可以准备启动服务器了。因为这是一次全新的安装,你的节点需要下载整个区块链来与Nxt网络保持同步。这需要的时间会长一些,取决于你的网络速度。

启动&连接

Nxt作为服务器提供API和网页客户端界面。首先,启动服务器:

cd ~/nxt
./run.sh

你应该会看到Nxt服务器启动,并同步网络。当启动完成时,你将会看到以下内容:

2016-01-03 13:43:28 INFO: Nxt server 1.7.4 started successfully.
2016-01-03 13:43:28 INFO: Copyright © 2013-2016 The Nxt Core Developers.
2016-01-03 13:43:28 INFO: Distributed under GPLv2, with ABSOLUTELY NO WARRANTY.
2016-01-03 13:43:28 INFO: Client UI is at http://localhost:7876/index.html

在PC端打开浏览器连接到树莓派本地IP之地的端口7876。

例如; http://192.168.1.10:7876

可以在网址后面加上test来查看交互式的API界面。

例如: http://192.168.1.10:7876/test

恭喜,如果你能访问登陆/test 页面,说明已经安装成功了。按住CTRL+C来停止Nxt服务器。

最后

激活SSL

在安全使用Nxt之前,你应该为节点设置SSL。如果你使用了HTTP,攻击者则可能盗取你的密码。强烈推荐配置一个自我签名的HTTPS证书。我写了一篇简单按照维基百科的指导书写了一篇简单的教程。核心开发者Riker也发布了如何设置SSL的帖子

安装屏幕

为了更方便地管理你的节点,建议安装屏幕

sudo apt-get install screen

为了使用屏幕,需要编辑run.sh和命令:

nano ~/nxt/run.sh

screen -mS nxt java -Xmx640m -cp classes:lib/*:conf nxt.Nxt

下次你用run.sh启动服务器时,你将可以通过CTRL-A, CTRL-D来从处理中分离出来。使用以下命令来回到会话中:

screen -r nxt

自动启动

可以设置自动启动Nxt服务器。你需要添加如下命令:

crontab -e

@reboot sleep 30 && cd /home/pi/nxt && ./run.sh

在本例中,Nxt服务器将会在开机30秒后启动。你也可以使用cron来设置其它任务

如果任何疑问或建议,请访问本博文的论坛帖子

View this in: English Русский Español

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据