ZenCash セキュアノード設定 (2) : Zen ノード構築
*原文(英語)は Blockop ブログ からご覧いただけます。なお、日本の読者向けに修正を施した箇所があります。
セキュアな Linux サーバーの準備ができたところで、早速 Zen ノードの構築に移っていきましょう。サーバー準備が済んでいない場合は、パート1 を参照してください。
パート 2 の本稿では、Zen ノードの構築および SSL 証明書の取得、ならびにこれらを実際に有効にするために必要なタスクをみていきます。これらのステップは、Zen セキュアノードを実行するにあたって必要となります。
Zen ノードの構築
ブラウザからZen Node Github ページを開き、”Clone or Download” というリンクをコピーしてください。
次に、VPS にログインします。数日間ログインしていなかった場合は、前回の記事で作成したアップグレードスクリプトを用いてアップデートを行ってください:
sudo ./upgrade_script.sh
ディレクトリを作成してここに移動し、Zen リポジトリをクローンします:
mkdir zencash
cd zencash
git clone https://github.com/ZencashOfficial/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
指示に従ってビルドを行い、必要なキーを入手し、zend ソフトウェアを実行します。ソフトウェアをコンパイルするには少々時間がかかりますので、これを行っている間に下記で説明されている 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 を作成しましょう:
vim zen.conf
そして、以下の内容をペーストしてください。なお、ユーザー名およびパスワードを変更することを強くお勧めします。TextEdit または Notepad といったテキスト編集に特化したアプリケーションをお持ちの場合、まずこれらにペーストした上で、変更すべき内容を編集し、zen.conf ファイルへとコピー・ペーストしてください:
addnode=zpool.blockoperations.com
addnode=zennodes.network
rpcuser=znodeuser
rpcpassword=63Qa5VybvCTPppBpVmn8HpjrKgxqaaEAqfYVrHjk9WtBG738
rpcport=18231
rpcallowip=127.0.0.1
server=1
daemon=1
listen=1
txindex=1
logtimestamps=1
では、zend ファイルがある場所に戻ってこれを実行し、ステータスを確認しましょう:
cd ~/zencash/zen/src
./zend
./zen-cli getinfo
結果は以下のようになるはずです。”blocks” という部分に注目してください。これが 110,000 以上になっている必要があるのです。上矢印キーを用いて先ほどのコマンドを繰り返し入力することでステータスを逐一確認していくこともできますが、これがアップデートされている間に次の内容を行ってしまうほうが良いでしょう:
次に、これらのコマンドをより使いやすくしましょう。必要となる 2 つのファイルをユーザーアプリケーションのディレクトリへとコピーします:
sudo cp zend /usr/bin/
sudo cp zen-cli /usr/bin/
次に、ユーザーレベルの crontab ファイルを編集し、サーバー起動時に zend アプリケーションが起動するようにします。もっと複雑な方法もありますが、今回に関しては以下の方法で十分です:
crontab -e
ファイルの一番下に、以下の内容をペーストしてください:
@reboot /usr/bin/zend
これを実際にテストするという場合は、サーバーを再起動させ、zend アプリケーションが起動することを確かめてみてください。ここでは、部分的なテストを行います。ベースディレクトリに移動してサーバーの状態をチェックし、アプリケーションを終了・起動させ、再びチェックしてください。なお、これはあまり速く行いすぎることなく、サーバーが再起動するのに十分な時間を持てるように、ゆっくりと行ってください:
cd
zen-cli getinfo
zen-cli stop
zend
zen-cli getinfo
現在のノードの高さを知るにあたっては、Zen のブロックエクスプローラーを用いることができます。これはいくつかありますが、ここでは https://zpool.blockoperations.com/stats におけるZen マイニングプールの統計を参考にしています。執筆現在、以下のようになっています:
さてここまでで 、すべてのトランザクション履歴ならびにインデックスを含むような、しっかりと機能する Zen ノードの作成が終了しました。なお、このノードは RPC コマンドにも対応しています。ところがまだ、このノードは Zen におけるセキュアノードであるとはいえません。まだ行うべき設定があります。
ところで、Zen ブロックチェーンによってシステム上の容量が使用されていることを不安に感じるという場合、df -h
によってディスク使用量を容易にチェックすることができます。これによって、システム全体における使用容量ならびに空き容量を確かめることができます。
ブロックチェーンによって使用されている容量を知りたいという場合は、ncdu(パート1にてインストールしてあります)を実行してください。ベースディレクトリからこれを実行し、矢印キーで移動を行い、q を入力して退出します。Zen のブロックチェーンは ~/.zen/blocks に保存されています。
もし容量が満杯となってしまうようであれば、より多くの容量を貯蔵できるようなVPS へとアップグレードしてください。
SSL 証明書の作成
SSL 証明書の作成にあたっては、独自ドメインの取得が必要となります。ここでは例として Namecheap を使って説明していきますが、もちろん他にも様々な方法があります。
Namecheap へのログインを行い、ドメインを購入し、設定画面を開いてください:
“Advanced DNS” を選択してください:
“ADD NEW RECORD” をクリックして新たなレコードを追加します。”Type” は “A Record” としてください:
VPS のホスト名および IP アドレスを入力し、変更内容を保存してください:
設定がうまくいっているかどうか確認しましょう。ping を用いて完全修飾ドメイン名(FQDN)の通信状況を確認します:
接続に関しては、そこまで時間がかかることなく行えるはずです。ここで、VPS と接続するための2つ目の ssh セッションを開き、コンパイルと並行してSSL 証明書の取得を行えるようにしましょう。
SSL 証明書の取得ならびにユーザーディレクトリへのコピーについて
ここではLet’s Encrypt の無料証明書を使用していきます。証明書を購入・インストールすることも可能ですが、これは若干コストがかかる上、是非とも必要という訳ではありません。
もしこの時点で zen ソフトウェアがコンパイルされている最中であれば、2つ目のセッションを用いてログインしてください。その場合、各セッション内で行なっている作業に関して覚えておくようにしてください。
ではまず、http および https に対してファイアウォールのポートが開放されていることを確認してください:
そして、ウェブサーバーが実行されていないことを確認します。ポート 80 および 443 が開いていないことをチェックしてください:
ここで、非常に役立つちょっとしたスクリプトを用いることにします:
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 znode.blockoperations.io
キーが適時更新されるように設定を行います:
sudo crontab -e
以下の内容を crontab の一番下に挿入してください:
6 0 * * * "/home/blockops/.acme.sh"/acme.sh --cron --home "/home/blockops/.acme.sh" > /dev/null
これで、証明書の設定が完了となります。Let’s Encrypt によって、必要な時に証明書が更新されるようにシステムが設定されたことになります。
以上でパート2が終了です!
パート3は、ZenCash セキュアノードを実際に機能させる上での設定に関して解説していきます。
ZenCash に関する詳細詳細は、ZenCash ウェブサイトをご参照ください。ZenCash ディスコードチャンネルもありますので、是非立ち寄ってみてください。
本記事の発信源であるBlock Operations(創設者:Rolf Versluis)に関しては、以下のリンクからご覧ください:
Block Operations YouTube チャンネル