LoginSignup
8
6

NEM NIS1 ノード (java版) 構築手順 - 2021.11

Last updated at Posted at 2021-11-08

NEM(NIS1)チェーンが過去のしがらみ体制とさよならするかどうかの岐路のハードフォークがあるというので、ノード構築して支援しようかと思いました。

と、そこにさすが松岡さん。タイミングよく最新の構築手順を投下してくださいました。感謝感激。
本記事はほぼまんまの手順で、さくらインターネットVPSでの確認した手順になります。

ノードを建てたからといってXEMをハーベスティングできてけっこう儲かるぜ、とはならないレベルのハーベスティング量なので、そこは理解しておいたほうが良いです。

参考(ほぼまんまです)
https://qiita.com/salaryman-toushi/items/390a477ff1c504d96229

さくらインターネットVPSで、メモリ8GB、SSD400GB のVPSを用立てします。(メモリ4GBプランでもいけるかも?⇒同期が途中で止まってしまう…)

https://vps.sakura.ad.jp/
OS: Ubuntu 20.04 LTS
ID: ubuntu
PW: 長い記号入りのパスワードを用意
IP: <振り出されたIPアドレス>
Host: xxx-xxx-xxxxx.vs.sakura.ne.jp

サーバーを起動させたらVPSコントロールパネルで以下の6つのポートを開けておいてください。

NIS1で必要なポート

  • 80/443 Web(let's encryptのインストールで必要)
  • 7890 http
  • 7891 https
  • 7778 WebSocket
  • 7779 WebSocket(SSL)

Ubuntuを更新

$ sudo apt update

nis-0.6.101.tgzよりjava 11が必要になりました。

Java 8 (正確にはOpenJDK8)のインストール
Java 11 (正確にはOpenJDK11)のインストール

$ sudo apt install openjdk-11-jdk

Java インストール後のバージョン確認

$ java -version

NIS1ダウンロード

ダウンロード先で最新バージョンのファイル名を確認します

https://bob.nem.ninja/
$ wget https://bob.nem.ninja/nis-0.6.xxx.tgz

解凍

$ tar -xzvf nis-0.6.xxx.tgz

ノードの起動スクリプトを修正

$ vim ~/package/nix.runNis.sh

メモリ使用量の最大値を緩和およびノード起動コマンドをバックグラウンドで動作させるようにする

#!/bin/bash

cd nis
-java -Xms512M -Xmx1G -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter
+nohup java -Xms4G -Xmx6G -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter &
cd -

config-user.propertiesを作成してホスト名等を記述

  • config.propertiesを書き換えることで設定は可能ですが非推奨のようです
$ vim ~/package/nis/config-user.properties
----
nem.host = xxx-xxx-xxxxx.vs.sakura.ne.jp

# https://nemnodes.org/nodes/ の Name に載ります。識別が楽に。
nis.bootName = BOOTNAME

# ハーベスト接続人数の上限値。4がデフォルト。
nis.unlockedLimit = 10
----

実行権限の付与

$ cd ~/package
$ sudo chmod +x nix.runNis.sh

ノードの起動

$ ./nix.runNis.sh

プロセス確認

$ ps aux | grep java
ubuntu     16651 56.0 28.3 11054936 2315280 ttyS0 Sl  19:35   0:54 java -Xms1G -Xmx4G -cp .:./*:../libs/* org.nem.deploy.CommonStarter

ノード情報をブラウザで確認

http://xxx-xxx-xxxxx.vs.sakura.ne.jp:7890/node/info

ブロック高を確認

http://xxx-xxx-xxxxx.vs.sakura.ne.jp:7890/chain/height

ヘルスチェック状況を確認

http://xxx-xxx-xxxxx.vs.sakura.ne.jp:7890/heartbeat

5分程待ってノードリストに掲載されるかを確認
https://nemnodes.org/nodes/
⇒<振り出されたIPアドレス> で検索したらひとまず掲載される。詳細情報の掲載はもう少し時間がかかる。

続いてSSL化です。

pipをインストール

$ sudo apt install python3-pip

必要なライブラリをインストール

$ sudo pip3 install btrees
$ sudo pip3 install zope
$ sudo pip3 install zope-schema

Let's Encryptをインストール

$ sudo pip3 install letsencrypt

Let's Encryptを実行

$ sudo letsencrypt certonly --standalone -d xxx-xxx-xxxxx.vs.sakura.ne.jp

stunnelをインストール

$ sudo apt-get install stunnel4

設定を追記

$ sudo vim /etc/stunnel/stunnel.conf
----
[nis]
accept = 0.0.0.0:7891
connect = 7890
cert = /etc/letsencrypt/live/xxx-xxx-xxxxx.vs.sakura.ne.jp/fullchain.pem
key = /etc/letsencrypt/live/xxx-xxx-xxxxx.vs.sakura.ne.jp/privkey.pem

[websocket]
accept = 0.0.0.0:7779
connect = 7778
cert = /etc/letsencrypt/live/xxx-xxx-xxxxx.vs.sakura.ne.jp/fullchain.pem
key = /etc/letsencrypt/live/xxx-xxx-xxxxx.vs.sakura.ne.jp/privkey.pem
----

再起動

$ sudo systemctl restart stunnel4

ブラウザでSSLアクセス確認

https://xxx-xxx-xxxxx.vs.sakura.ne.jp:7891/node/info
https://xxx-xxx-xxxxx.vs.sakura.ne.jp:7891/chain/height
https://xxx-xxx-xxxxx.vs.sakura.ne.jp:7891/heartbeat

3か月に1回証明書更新

Let's Encryptは3か月で証明書が切れるので、3か月に1回、certbot renewコマンドを実行する等して証明書の更新を行う必要があります。

certbotのインストール

$ sudo apt install certbot

certbot renewコマンドの実行は、cron等で自動化するのが便利だと思います。

なおノードのXEMハーベスト設定やスーパーノードプログラムに関しては端折ってあります。公式ドキュメントなどで調べてみてください。

ノード構築者が集うSlack

ノードの更新手順はこちら

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6