ゼロから始めるSymbolメインネットのノード構築 ~CentOS編~

はい!きらにちは!ハーベストコーディネイターのキラ(@KiraZeroDotCom)です!

いつもTwitchやYouTubeのキラちゃんねるで生配信しています!(チャンネル登録&フォロー&高評価よろしくお願いします!)

無料でできる神ゲーのフォートナイトを生み出したEpic Gamesの認定クリエイターもやっています。

KIRA1728 という名前で活動していますのでクリエイターサポートやフレンド申請よろしくお願いします!

無料カラオケアプリのPokekaraで、歌もアップロードしています!よかったら聴いてみてね♪

CHA-LA HEAD-CHA-LA

 

はい、宣伝でした。よろしくお願いします!

 

 

Symbolノード構築用の自分用メモみたいなもの(超絶手抜きでごめんなさい)

※以下の内容の利用は自己責任でお願いします。サポートはできかねる場合があります。(記載されているコマンドの間違いとかは早めに修正しますので見つけ次第ご指摘ください)

 

これを読むとできるもの

・常時SSL化(HTTPS化)されたSymbolノード(Peer+apiのいわゆるDualノードと呼ばれるもの)

・新しいBootstrapが発表された場合の対応(バージョンアップ)

・彼氏or彼女(Symbolノードだけどね笑 しかも仮想で笑(さくらのVPS))

 

★symbolノードを建てる前の前提条件

さくらのVPSで登録 (契約まだの人は ゼロから始めるSymbolメインネットのノード構築 ~さくらのVPS新規会員登録編~を見てさくらのVPSを契約してください。

 

・(無くてもいいけど)独自ドメインを持っていること(お名前ドットコムでご自分の好きなドメイン名を買うのが愛着が湧くしオススメ!(※ドメイン取得の1年目は基本的に安いので10年分取得した時の価格を見てから何年契約をすると2年目の金額にビックリしなくていいです))

 

ということで、取り急ぎ記事です。ごめんなさい。

CentOS 8 64bit版で常時SSL化(HTTPS化)されているSymbolノードを建てます。

よろしくお願いします!

 

さくらのVPS管理画面にログイン

サーバ一覧から名称未設定をクリック
名称未設定から好きな名前に変更し、「設定する」ボタンをクリック

サーバー情報が表示されるので右上の「各種設定」から「OSインストール」を選択
今回は、標準OSから「CentOS8 x86_64」を選択
・パスワードをできる限り強固に任意で入力
※パスワードは半角英数、半角記号=+.,-_の組み合わせで入力
・「スタートスクリプトを利用しない」を確認

・パケットフィルタの22,80,443,3000,3001,7900を「カスタム」「TCP」「ポート番号(22,80,443,3000,3001,7900と入力)」「すべて許可」で追加する(ポート22番の扱いは任意で)

・公開鍵は登録しない
上記設定が完了したら一番下にある「設定内容を確認する」ボタンをクリック

(注意!)この入力した新しい管理ユーザのパスワードは、
さくらのVPSの会員メニューにログインする為のパスワードなので
忘れないように絶対にメモをお取りください!

内容を確認し「インストールを実行する」ボタンをクリック

数分間、インストール完了まで待ちます。

インストールが完了すると左上の表示が「稼働中」になります。

※「認証が必要です」画面が表示されるので、先ほどメモを取得した新しい管理ユーザパスワードでログイン(時間経過で表示される)

上のメニューからコンソール→VNCコンソールと選んでもいいんですが、使いにくいので「teraterm」などのsshクライアントをダウンロードして使用しましょう。(仕事でも使ってます)

 

teratermでログイン

ユーザ名:root
パスフレーズ(パスワードのこと):さきほど設定した新しい管理ユーザパスワードを入力しOK

設定-端末から端末サイズを150×50と横幅を広げて使いやすいサイズにします。

忘れずに設定-設定の保存を選択し、表示された画面で「保存」をクリックして上書き保存する(設定ファイル名はTERATERM.INI)

 

最初にここでrootのパスワードをさくらのVPSで使えなかった記号とかも使えるようになるのでここで、強固なパスワードに変更しておくのをオススメします。

$ passwd

$ useradd symbolnodes
$ passwd symbolnodes

 

rootにスイッチ(su)できるのはsymbolnodesだけに限定する

usermod -G wheel symbolnodes
# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.

# 以下の部分の行頭の #(上記の青の#) を削除してコメントを解除する
auth required pam_wheel.so use_uid

ESCキー押下後、:wqで保存して、viを抜ける

一旦、ログオフして再度ログインする
rootにsuできるか確認

$ su -
#はrootユーザの証

スワップ設定(24GBを追加する)
# free -m
# fallocate -l 24G /var/swapfile
# chmod 600 /var/swapfile
# mkswap /var/swapfile
# swapon /var/swapfile
# echo '/var/swapfile none swap defaults 0 0' >> /etc/fstab
# free -m
# exit

して、symbolnodesユーザにもどる

 

CentOS8のアップデート~nodejs、dockerのインストール

$ sudo yum update -y
$ curl -sL https://rpm.nodesource.com/setup_14.x | sudo -E bash -
$ sudo yum install -y nodejs
$ sudo npm i -g npm
$ sudo yum remove docker docker-common docker-selinux docker-engine
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum makecache
$ sudo yum install -y docker-ce
$ sudo usermod -aG docker $USER
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ exit

ログインしなおしたら、次にSymbolノードをsymbol-bootstrapで起動

 

symbolノード起動

$ sudo npm install -g symbol-bootstrap
$ mkdir symbol-bootstrap
$ cd symbol-bootstrap
$ vi my-preset.yml
$ symbol-bootstrap config -p mainnet -a dual -c my-preset.yml

#パスワードを入力して設定する(ここのパスワードはウォレットを開いたり、複号化したりするパスワードです。rootとは別にしてもよいし、しなくてもよい)

 

$ symbol-bootstrap compose

#1つ前の手順で入力したパスワードを入力

 

$ symbol-bootstrap start -d

 

数分ちょっと待ってからノードが起動したかまずはローカルで確認

$ curl localhost:3000/node/info

 

秘密鍵の複号

$ symbol-bootstrap decrypt --source target/addresses.yml --destination plain-addresses.yml
[enter the password you have just used to encrypt the files]
#複号化のパスワードを入力しEnter
$ less plain-addresses.yml

 

plain-addresses.ymlのすべてのアカウントの秘密鍵を書き留めます。
すべての情報を書き留めたら(←ここ大事!)、次のコマンドで閉じます。

q

 

次のコマンドを使用して、このファイルをサーバーから削除します。

$ rm plain-addresses.yml

 

★http-portalを利用して常時SSL化(HTTPS化)
(https://nemlog.nem.social/blog/58808 のうにやさんの記事を参照)

$ cd
$ ls -l

 

symbol-bootstrapが表示されていることを確認(同じ場所(symbolnodesのホームディレクトリ)に作成したい為 ※本当はどこでもいいけどw)

$ mkdir https-portal
$ cd https-portal

$ vi docker-compose.yml

#symbolのドメイン.comの箇所は自分のドメイン名に変更してください

version: '3'
services:
https-portal:
container_name: https-portal
image: 'steveltn/https-portal:1'
ports:
- '80:80'
- '3001:443'
restart: 'on-failure:2'
environment:
DOMAINS: 'symbolのドメイン.com-> http://rest-gateway:3000'
#STAGE: 'production' # テストが完了するまで production にはしないように
#LISTEN_IPV6: 'true' #IPv6対応
WEBSOCKET: 'true' #Websocket対応
volumes:
- 'https-portal-data:/var/lib/https-portal'
# HTTPS-PORTALアップデート時に再サインするのを避ける
volumes:
https-portal-data:
# bootstrapのdocker containerへ接続可能にする
networks:
default:
external:
name: docker_default

networks: のneme: docker_default は

$ docker network ls

で一覧取得

 

$ docker network inspect docker_default

でsymbol-bootstrap/target/docker/docker-compose.yml のサービスが稼働しているか確認。
https-portal を起動する前に symbol-bootstrap のサービスを起動させておくこと。

 

https-portal 起動

$ docker-compose up

ブラウザで https://symbolのドメイン.com:3001/node/info にアクセス

 

https-portal の STAGEがProduction ではないため、自己証明書の状態。
ブラウザで警告が出ると思いますがそのままアクセスし、正常に表示されているか確認。

 

正常に稼働することを確認できたら

Ctrl + C でプロセスを終了 (押すまでteratermで、$が表示されません)

$ vi docker-compose.yml

 

STAGE の 前の # を削除

STAGE: ‘production’

 

$ docker-compose up -d

ブラウザで https://symbolのドメイン.com:3001/node/info にアクセス

今度はちゃんと警告なしで有効な証明書になっています。

IPv6 や WebSocket にも手軽に対応できるので本家のドキュメントを読んでお試しください。

エラー等が出る場合は
-d なしのコマンド

$ docker-compose up

を実行するか

$ docker-compose logs -f https-portal

でログを確認しましょう(そして出てきたメッセージをググりましょうw)

 

常時SSL化(HTTPS化)したSymbolノード構築お疲れさまでした!!

 

ここまでの手順をわかる人向けにExcel形式でダウンロードできるようにしましたので、印刷したりしてチェックリスト代わりにでも使ってください。

symbol-node-command.xlsx

 

 

★symbol-bootstrap バージョンアップ(公式から発表があったらやること)

https-portalの停止

$ cd ~/https-portal/
$ docker-compose down

 

symbol-bootstrapの停止

$ cd ~/symbol-bootstrap/
$ symbol-bootstrap stop

 

バックアップ(忘れずに!)

各サービスを停止後、何かあった時でも大丈夫なようにバックアップを取ります!

アップデート作業失敗してもバックアップがあれば何とかなる!(委任ハーベスターさんの維持も可能)

 

①データバックアップ

# symbol-bootstrapのディレクトリで実行すること。バックアップファイル名は日付入れたり、バージョンつけたりすると世代管理しやすいです。

$ pwd
#---- /home/symbolnodes/symbol-bootstrap と表示されることを確認
$ cp target ../target-yyyymmdd-ver1.X.X -r

 

②アドレスバックアップ

念のため、ノードのprivateアドレスを取得しておく

# ノードのprivateアドレスを復号する。
# symbol-bootstrapのディレクトリにて
symbol-bootstrap decrypt --source target/addresses.yml --destination plain-addresses.yml

# パスワード打つと復号化される
less plain-addresses.yml

# ここで平文にしたアドレス設定を作業端末上のローカル領域にコピーしておく

q

# ローカル領域にコピーしたら、サーバ上の平文ファイルは削除しておく
rm plain-addresses.yml

 

rootユーザーにスイッチ

$ sudo su -

 

symbol-bootstrapのアンインストール

# symbol-bootstrap -v
# npm uninstall symbol-bootstrap

 

npmの最新化

# npm -v
# npm install -g [email protected]
# npm -v

 

symbol-bootstrapのインストール

# npm install -g [email protected] ← Xのところは公式サイトで最新のバージョンを確認して入れる

 

インストールしたsymbol-bootstrapのバージョンを確認

# symbol-bootstrap -v
# exit

 

自身の設定ファイル内容を念のため確認

$ view my-preset.yml

 

symbol-bootstrapを起動
$ symbol-bootstrap config -p mainnet -a dual -c my-preset.yml --upgrade
$ symbol-bootstrap compose --upgrade
$ symbol-bootstrap run -d

 

Symbolノードのヘルスチェック

$ symbol-bootstrap healthCheck

 

https-portalの起動

$ docker ps
$ cd ~/https-portal/
# https://nemlog.nem.social/blog/58808 に従って、vi docker-compose.ymlで、一旦STAGE: 'production'をコメントアウトするところから行う(それをやらないとエラーになる模様)
$ view docker-compose.yml
$ docker-compose up -d
$ docker ps

バージョンアップ完了!
お疲れさまでした。

 

 

本当に自分用メモ
# lsofコマンド使えるようにインストール

# yum -y install lsof

 

# CentOS8でsarコマンドが使えるようにインストール(順番間違ってるかも;)

dnf install -y sysstat
sudo systemctl enable sysstat-collect.timer

sudo systemctl edit sysstat-collect.timer

------------------------------------------------------------------
[Timer]
OnCalendar=*:00/01 --- 収集間隔はここを変更する(ここでは1分毎で設定)
------------------------------------------------------------------

:wq

 

$ sudo systemctl start sysstat-collect.timer

 

# 委任ハーベスター復旧(harvesters.datをバックアップしてる場合)

$ cp target/nodes/node/data.org/harvesters.dat target/nodes/node/data

 

Webブラウザを使って自分のノード(下記のリンクのsymbolのドメイン.comの部分を自分のノードのドメイン名かIPアドレスに変更してください)にアクセスし、設定が反映されてちゃんと動いているか、委任ハーベストがはずれていないかなどを最終確認します。

ブロック高のチェック:http://symbolのドメイン.com:3000/chain/info

ノードの設定のチェック:http://symbolのドメイン.com:3000/node/info

委任ハーベスターのチェック:http://symbolのドメイン.com:3000/node/unlockedaccount

 

常時SSL化(HTTPS化)している場合はこちらもチェック

ブロック高のチェック:https://symbolのドメイン.com:3001/chain/info

ノードの設定のチェック:https://symbolのドメイン.com:3001/node/info

委任ハーベスターのチェック:https://symbolのドメイン.com:3001/node/unlockedaccount

 

これらに異常がなければ、ノードは正常です。公式Symbolノードリスト(https://symbolnodes.org/nodes/)で自分のノードがちゃんとリストされ、ブロック高が他とそろっているかも確認しておきましょう
新しく追加されたverifyコマンドは、nodeやdockerのバージョンを確認したり、正常に動いているかをまとめてチェックしてくれる便利なコマンドですね

 

証明書のステータスを確認する

symbolのドメイン.com

 

 

めざせ!世界中で1人が1台Symbolノードを建ててる世界!

 

 

 

このブログを読んでいただきありがとうございます。
それでは

タイトルとURLをコピーしました