Raspberry pi でNEMフルノードを構築しちゃいましょう

in #japanese7 years ago

今やNEM界隈では、スーパーノードを立てる目的以外に、わざわざNIS(NEM Infrastructure Server)を立てる人はそんなに多くありません。
大抵の人はNano Walletという素晴らしいクライアントがありますのでね😊

今回は、そんな「物好き」なヒトのために、Raspberry Piを使ったNEMのフルノードを構築する流れを簡単にご紹介します。

Raspberry Pi 3の購入


Amazonで購入するのが手っ取り早いです。

初めての方は周辺機器もセットになった スターターキット を購入しちゃいましょう。

リンク先のセット内容は、

  • Raspberry Pi 3 Model B 本体
  • Raspberry 専用ケース
  • モニター用HDMIケーブル
  • microSDカード
  • ヒートシンク
  • USBカードリーダー
  • 5V 2.5A RPI3専用電源アダプタ
  • ミニファン

こんな感じですが、HDMIケーブルやmicroSD、USBカードリーダーを既に持っている場合は流用してOKです👍

但し、重要なポイントは ヒートシンク5VのACアダプタ 、それから ミニファン です!

Raspberry piは、非常に省電力なのですが、ちょっと頑張っただけでかなり高熱になります。
そのため、CPUは出来る限り冷却した方が良いので、ヒートシンクは是非つけておきたいんですよね。
とはいえ、ヒートシンクは両面テープで貼り付けるだけのものなので、ミニファンもあると尚良いというわけで。

それから5VのACアダプタ。
これがですね、ありがちな罠。
スマホのACアダプタを流用できないわけではないのですが、これやっちゃうとラズパイの動作が非常に不安定になります。
今後、NEMフルノードを24時間365日立ち上げっぱなしにしておくつもりであれば、ラズパイ3専用アダプタと銘打っているものを購入しておくことをオススメします。

Raspberry piの初期設定

line.png

これはもう、ググったら星の数ほど先達のサイトが出てきますので、そちらを是非!(単なる手抜き)
ちなみに、私はラズパイの管理はWindowsからTeraTermでコンソール操作する形態です。

Raspberry piへのNIS導入

line.png

本題です。

説明に入る前に、Raspberry piにNISをインストールし終えた状態のスクリーンショットを貼っておきます。
ncc.jpg

画面最上部に

NISは同期されました!(現在同期しているブロック:1264871)

と表示されています。
これは、本日2017年8月31日19時30分現在の、NEMノード数です。

1ブロック目から順に同期しますので、結構時間がかかります。
気長に待って同期させるのでもOKですが、あらかじめ100万2千ブロック目までのノードデータベースをダウンロードして、ラズパイNISのDBに入れておけば同期を早めることもできます。

これは、NISに同梱されているNCC(NEM Community Client)画面で、NCCはその名のとおり「クライアント」です。ラズパイのIPアドレスを指定してブラウザ上で使えるシロモノ。

ここで重要なポイントですが NCCは既に開発が終了している ということです。
最終版がver.0.6.91ですので、本当に「物好き」な人向けですね。

あくまでもNCCのみ開発が終了していて、ノード維持のために必要なNISは着実にver.upしています。
(現時点のNIS最新版はver.0.6.93)
その意味では、ラズパイのNISは定期的にアップデートしておきましょう。


NISは、NEM公式サイトから入手します。

名称未設定-1.jpg
NEM公式サイトの "GET STARTED" へ飛ぶと DOWNLOADS ページが表示されますので、ページ下部の "NIS STANDALONE (.TGZ)" をクリックして

nis-0.6.93.tgz

をダウンロードします。

これをラズパイにSCP転送とかsamba共有フォルダとかでテキトーに転送し(説明が適当…)、任意のディレクトリに解凍します。

解凍後は "package" ディレクトリが出来上がります。

packageディレクトリ下には、
nis1.jpg
こんな感じのファイル資源が展開されまして、このpackageディレクトリ下にある nix.runNis.sh シェルを叩けばNIS同期が始まるというわけです。

./nix.runNis.sh

を打つと、javaが走り始めていきますね。ボーッと眺めていつものように1杯のコーヒーを飲むのも良し、飽きたら寝るのも良し。
気長に待っていれば遅くとも丸1日くらいあればフルノードの出来上がり♪

NIS同期の状態を知るためにNCCが使える

line.png

そんなわけで、NISが同期されたかどうかをブラウザ上で確認したくなります。

先ほどダウンロードした nis-0.6.93.tgz ファイルには ncc ディレクトリがありました。
実は、最新版NISであるver.0.6.93から、このnccディレクトリにはjavaのconfigファイルしか入っていない状態になりました。

ここで、敢えて0.6.93より一つ前の0.6.91バージョンから、NCCを走らせるために必要なjava資源を持ってきます。

先ほどのDOWNLOADSサイトの最下部に

Backup Client Resources
If you are having issues downloading from the links above, download them directly from our download page

という一文があります。

download page リンクをクリックして、
2017-08-31_20h37_32.png

/last-ncc

ディレクトリへ移動し、その中の nis-ncc-0.6.91.tgz をダウンロードしましょう。

このうち、NCCに必要なファイルは /package/ncc ディレクトリ下の
2017-08-31_20h40_58.png
config.properties以外の全てのファイルです。

ブラウザ上で動作するUIを構成する web ディレクトリ以下全て、それらを動かすjarファイル3つが、先ほどラズパイにインストールした0.6.93と差異があることが分かりますよね。

ここまで準備できたら、再度 package ディレクトリまで戻り、今度は
./nix.runNcc.sh
でシェルを叩きます。

コンソール上でまたjavaのメッセージが流れて、少し待ってからラズパイのIPアドレスをブラウザに

http://(ラズパイのIPアドレス):8989/ncc/web/index.html

でEnterターンッ!

とすると無事にNCCログイン画面が出ます。

既にNEMウォレットを持っている方は、*.wltファイルをインポートすることもできますし、ログイン画面から新しいウォレットを作ることもできます。

また、NCC上で作成したウォレットファイル(*.wlt)は、jsonファイルとしてエクスポートしてNanoWalletへインポートすることも可能です。

それでは皆様、楽しいNEMライフを!
(最後駆け足になっちゃった…)