ZenCash セキュアノード設定 (2) : Zen ノード構築
パート 2 の本稿では、Zen ノードの構築および SSL 証明書の取得、ならびにこれらを実際に有効にするために必要なタスクをみていきます。これらのステップは、Zen セキュアノードを実行するにあたって必要となります。
なお、不明な点に関しては、ZenCash の Discord チャンネル(discordapp.com/invite/CEbKY9w)の #securenodes チャンネル(セキュアノード構築に際するトラブルシューティングのためのチャンネル)、#japanese チャンネル(日本語チャンネル)またはヘルプデスクにてご質問ください。
Zen ノードの構築
VPS にログインします。久しくログインしていなかった場合は、前回の記事で作成したアップグレードスクリプトを用いてアップデートを行ってください:
sudo ./upgrade_script.sh
ディレクトリを作成してここに移動し、Zen リポジトリをクローンします:
cd
mkdir zencash
cd zencash
git clone https://github.com/HorizenOfficial/zen.git
Github ページの指示に従い、ソフトウェアをビルドするのに必要な条件を整えておきましょう:
sudo apt -y install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python zlib1g-dev wget bsdmainutils automake
指示に従ってビルドを実行します。なお、ソフトウェアをコンパイルするには少々時間がかかります(数十分)ので、しばらくお待ちください(この間に下記で説明されている SSL 証明書の取得を行なっていただいても構いませんが、順番が前後して手順が分かりづらくなってしまうと思いますから、散歩に行かれるなどしてコンパイル完了までお待ちいただくことをお勧めします)
cd zen
./zcutil/build.sh -j$(nproc)
コンパイルが無事問題なく終了したならば、以下のような表示があります:
次に、Zen アプリケーションにおいて必要ないくつかのパラメーターをダウンロードする必要があります。以下のコマンドを入力してください:
./zcutil/fetch-params.sh
これが終了したら、Zen アプリケーションを実行します:
./src/zend
なお、アプリケーションは起動後、すぐに終了してしまいます。この際、zen.config ファイルを作成する必要がある旨のメッセージが表示されますので、早速それを行っていきましょう。ルートディレクトリに移動したのち、隠しディレクトリである .zen へと移動します。
cd
cd .zen
中身を確認しましょう。
ls
まだ何もありませんかもしれませんが、大丈夫です。新たなファイルとして zen.conf を作成、編集します。
USERNAME=$(pwgen -s 16 1)
PASSWORD=$(pwgen -s 64 1)
cat <<EOF > ~/.zen/zen.conf
rpcuser=$USERNAME
rpcpassword=$PASSWORD
rpcport=18231
rpcallowip=127.0.0.1
server=1
daemon=1
listen=1
txindex=1
logtimestamps=1
EOF
では、zend ファイルがある場所に戻ってこれを実行し、ステータスを確認しましょう:
cd ~/zencash/zen/src
./zend
./zen-cli getinfo
結果は以下のようになるはずです。”blocks” という部分に注目してください。./zen-cli getinfo
を繰り返し実行してみて、”blocks” の数字が増加していれば OK です。なお、既出のコマンドを実行する際は上矢印キーを用いてコマンドを呼び戻すことができます。
次に、これらのコマンドをより使いやすくしましょう。必要となる 2 つのファイルをユーザーアプリケーションのディレクトリへとコピーします:
sudo cp zend /usr/bin/
sudo cp zen-cli /usr/bin/
次に、ユーザーレベルの crontab ファイルを編集し、サーバー起動時に zend アプリケーションが起動するようにします。
crontab -e
ファイルの一番下に、以下の内容をペーストしてください:
@reboot /usr/bin/zend
これを実際にテストするという場合は、サーバーを再起動させ、zend アプリケーションが起動することを確かめてみてください。ここでは、部分的なテストを行います。ベースディレクトリに移動してサーバーの状態をチェックし、アプリケーションを終了・起動させ、再びチェックしてください。なお、サーバーが再起動するのに十分な時間を持てるように、zen-cli stop
および zend
コマンドの間では10秒程度の間をとってください。
cd
zen-cli getinfo
zen-cli stop
zend
zen-cli getinfo
さてここまでで Zen ノードの作成が終了しました。このノードは RPC コマンドにも対応しています。しかしながら、このノードはまだ Zen セキュアノードであるとはいえません。そこで、以下において必要となる設定を行っていきましょう。
ところで、Zen ブロックチェーンによってシステム上の容量が使用されていることを不安に感じるという場合、df -h
によってディスク使用量を容易にチェックすることができます。これによって、システム全体における使用容量ならびに空き容量を確かめることができます。
ブロックチェーンによって使用されている容量を知りたいという場合は、ncdu(パート1にてインストールしてあります)を実行してください。ベースディレクトリからこれを実行し、矢印キーで移動を行い、q を入力して退出することができます。Zen のブロックチェーンは ~/.zen/blocks に保存されています。
もし容量が満杯となってしまうようであれば、より多くの容量を貯蔵できるようなVPS へとアップグレードしてください。
SSL 証明書の作成
SSL 証明書の作成にあたっては、独自ドメインの取得が必要となります。ここでは例として Namecheap を使って説明していきますが、もちろん他にも様々な方法があります。
Namecheap へのログインを行い、パート 1 で購入したドメインの設定画面を開きます。これは、ログイン後の “Dashboard” という画面から対象ドメイン名を見つけ、その列の右側にある “Manage” というボタンをクリックすることにより可能です。
“Advanced DNS” を選択してください:
“ADD NEW RECORD” をクリックして新たなレコードを追加します。”Type” は “A Record” としてください:
VPS のホスト名および IP アドレスを入力し、変更内容を保存してください:
設定がうまくいっているかどうか確認しましょう。ping を用いて完全修飾ドメイン名(FQDN)の通信状況を確認します。
ping [FQDN]
通常、A レコードの設定を行った直後から接続が確立されます。
SSL 証明書の取得ならびにユーザーディレクトリへのコピー
ここではLet’s Encrypt の無料証明書を使用していきます。証明書を購入・インストールすることも可能ですが、これは若干コストがかかる上、是非とも必要という訳ではありません。
もしこの時点で zen ソフトウェアがコンパイルされている最中であれば、2つ目のセッションを用いてログインしてください(cmd + T などを用いて新たなタブを開いてください)。その場合、各セッション内で行なっている作業に関して覚えておくようにしてください。
ではまず、以下のコマンドにより、http(ポート番号 80) および https(ポート番号 443)に対してファイアウォールのポートが開放されていることを確認してください:
sudo ufw status numbered
そして、ウェブサーバーが実行されていないことを確認します。以下のコマンドにより、ポート 80 および 443 が開いていないことをチェックしてください:
netstat -tan
ここで、非常に役立つ以下のスクリプトを用意します。
cd
sudo apt install socat
mkdir acme
cd acme
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install
では、証明書を作成していきましょう。
cd
sudo .acme.sh/acme.sh --issue --standalone -d [FQDN]
キーが適時更新されるように設定を行います。
sudo crontab -e
以下の内容を crontab の一番下に挿入してください。
6 0 * * * "/home/[ユーザー名]/.acme.sh"/acme.sh --cron --home "/home/[ユーザー名]/.acme.sh" > /dev/null
次に、以下のコマンドを実行します。
sudo cp /home/[ユーザー名]/.acme.sh/[FQDN]/ca.cer /usr/share/ca-certificates/ca.crt
sudo dpkg-reconfigure ca-certificates
すると、以下のような画面が現れます。
“Yes” でエンターキーをクリックし、次のような画面に移行します。
ここで、スペースキーを押して、最初の “[ ]” 内に星マーク(*)がつくようにしてください(上記スクリーンショットではマークが付いていない状態です)。
さて、ここで zen アプリケーションをストップさせ、証明書の場所設定を行い、zend を再起動させます(この段階でまだ Zen ソフトウェアのコンパイルが終了していない場合は、コンパイル完了までお待ちください)。なお、コマンド内においてユーザー名と FQDN が頻繁に登場するため、最初に変数として定義しておき、後になって “$” をつけることにより参照しています。
USER=[ユーザー名]
FQDN=[FQDN]
zen-cli stop
cat <<EOF >> ~/.zen/zen.conf
tlscertpath=/home/$USER/.acme.sh/$FQDN/$FQDN.cer
tlskeypath=/home/$USER/.acme.sh/$FQDN/$FQDN.key
EOF
zend
ここで、証明書がきちんと認識されていることを確認するために以下のコマンドを入力します。
zen-cli getnetworkinfo
“tls_cert_verified” という部分が “true” となっていれば大丈夫です!
これで、証明書の設定が完了となります。Let’s Encrypt によって、必要な時に証明書が更新されるようにシステムが設定されたことになります。
お疲れ様でした!以上でパート2が終了です。
パート3 は、ZenCash セキュアノードを実際に機能させる上での設定に関して解説していきます。
ZenCash ウェブサイトおよび各種ソーシャルメディアも、ぜひ訪れてみてください!