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-jre-headless
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ハーベスト設定やスーパーノードプログラムに関しては端折ってあります。公式ドキュメントなどで調べてみてください。
- https://nemproject.github.io/
- https://mizunashi-rin.hatenablog.jp/entry/2017/02/15/002342
- https://qiita.com/ROZ-mofumofu-me/items/92d77413033eb8763a10
ノード構築者が集うSlack
ノードの更新手順はこちら