5
3

NEM NIS1ノードを建ててみよう [夏休みの自由研究に]

Last updated at Posted at 2024-07-20

さあ夏休みがやってまいります。
自由研究の課題、どうしようとお悩みのそこのあなた。
どうでしょう、この夏はブロックチェーンのノード構築に挑戦してみませんか。

必要なもの

手に入るもの

未経験者にとってはハードルが高くて大変だと思います。が、そこは先輩方も通った道。頑張りましょう。

ポート開放

  • 7890 … NIS1基本通信用 (http)
  • 7778 … Websockets用 (http)
  • 7891 … NIS1基本通信用 (必要ならhttps)
  • 7779 … Websockets用 (必要ならhttps)
  • 7880 … スーパーノードプログラム サーヴァント用

docker のインストールは以下の記事などを参考
https://qiita.com/curupo/items/d89990bf5e2ae371dd25

準備

nemユーザーを作成しsudoグループに追加

# adduser nem
New password: <適宜入力>
Retype new password: <再度入力>
⇒あとはリターンをしておく
# cat /etc/group | grep sudo
# usermod -aG sudo nem
# cat /etc/group | grep sudo
# exit
$ su - nem
⇒ログインできること

nemユーザーをdockerグループに追加

$ su -
# cat /etc/group | grep docker
# usermod -aG docker nem
# cat /etc/group | grep docker
# exit
$ exit

設定を反映させるため再度ログイン

$ su - nem

動作テスト

$ docker run hello-world
Hello from Docker!
⇒OK

nem-dockerで構築

$ ~/
$ git clone https://github.com/NemProject/nem-docker.git
$ cd ~/nem-docker
$ cp custom-configs/servant.config.properties.sample custom-configs/servant.config.properties

$ vi custom-configs/servant.config.properties
---
nem.host = <put vps ip address here>
servant.key = <put your NIS boot key here>
---

$ ./boot.sh
⇒とりあえず全てリターン
⇒途中いろいろとエラーがでる

とりあえずコメントアウトで回避します
$ vim Dockerfile
---
+#RUN sha=$(curl -L -s http://hugealice.nem.ninja:7890/transaction/get?hash=$(curl -L -s http://bob.nem.ninja/nis-0.6.101.tgz.sig | grep txId | sed -e 's/txId: //') | jq -r '.transaction.message.payload[10:74]') && \
+#    echo "$sha nis-0.6.101.tgz"  > /tmp/sum && \
+#    sha256sum -c /tmp/sum
---

$ vim Dockerfile(自身の構築環境に合わせて適宜修正)
---
-RUN useradd --uid 1000 nem
+RUN useradd --uid 1002 nem
---
$ vm boot.sh
---
-chown -R 1000 nem
+sudo chown -R 1002 nem  # なぜかroot権限でログファイルができるstderr出力対応。
+sudo chgrp -R 1002 nem  # もっと良い方法があるかも。javaよくわからん
---

logファイルのパーミッション
$ ~/nem-docker/nem
$ sudo chown nem:nem nis-std*.log

再度起動
$ ./boot.sh
All done, here are the services running:

ncc                              STOPPED   Not started
nis                              RUNNING   pid 14, uptime 0:00:02
perms                            RUNNING   pid 13, uptime 0:00:02
servant                          STOPPED   Not started
⇒起動成功

動作確認
$ curl http://localhost:7890/node/info
$ curl http://localhost:7890/chain/height

スーパーノードプログラムに参加する場合はサーヴァントを起動
$ ./service.sh start servant
servant: started

停止
$ ./stop.sh

参考

5
3
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
5
3