How to use this handy node deployment tool.

Symbol Bootstrap の使用

このガイドでは、複数のオペレーティングシステム (Windows、Linux、Mac) で Symbol ノードを迅速に設定し、実行できるプログラムである Symbol Bootstrap の概念を説明しています。

また、複数のノードを一度にデプロイして、テストネットワーク環境を素早く構築することもできます。

こちらを読んだ後には ノードの立ち上げプライベートテストネットワーク ガイドをより理解することができるでしょう。

このプログラムは以前のツールを置き換えます catapult-service-bootstrap symbol-testnet-bootstrap

必須項目

環境

セットアップスクリプトは Docker を使用して自動化されます。ノードまたはテストネットワークを立ち上げるには、次のツールをインストールする必要があります。

ポート

クライアントのホストがインターネットからアクセス可能であり、 次のポートが開いていて、使用可能であること を確認してください。

  • 7900 番ポートはノード間の通信するに catapult-client が使用します。

  • 3000 番ポートは REST ゲートウェイがエンドポイントを公開してノードとの疎通に使用します。

  • 3001 番ポートは REST ゲートウェイの HTTPS モードにおいて使用されます。

インストール

Symbol Bootstrap はインストール可能なツールとして提供されており、リポジトリからクローンやビルドする必要はありません。ターミナルまたはコマンドプロンプトから次を実行します:

npm install -g symbol-bootstrap

Notes:

設定

プリセット

ノードの設定は、すべてのネットワークパラメータを指定する YAML設定ファイル を介して行われます。ファイル全体の長さは数百行に及ぶため、処理の簡素化のために プリセット を使用できます。 ‑‑preset または ‑p パラメタで指定することができます。

プリセット

説明

mainnet

A single node that connects to the current public main network. Nemesis block is copied over. Requires an assembly, as shown below (configuration file).

bootstrap

Autonomous network with 1 mongo database, 2 peers, 1 api and 1 rest gateway. Nemesis block is generated (configuration file). This is the default preset.

testnet

A single node that connects to the current public test network. Nemesis block is copied over. Requires an assembly, as shown below (configuration file).

プリセットは、追加パラメータを提供する assembly (または特徴) を指定することで、さらなるカスタマイズが可能です。 ‑‑assembly または ‑a パラメータでアセンブリを指定します。

プリセット

利用可能な構成

説明

mainnet

peer

The node is a Peer ノード (configuration file).

mainnet

api

The node is an API ノード (configuration file).

mainnet

dual

The node is both a Peer ノード and an API ノード (configuration file).

testnet

peer

The node is a Peer ノード (configuration file).

testnet

api

The node runs is an API ノード (configuration file).

testnet

dual

The node is both a Peer ノード and an API ノード (configuration file).

カスタムプリセット

さらに、追加の設定が必要な場合は カスタムプリセットファイル を使用することができます。このファイルのどの値も、プリセットまたはアセンブリによって設定されたデフォルト値を上書きするので、それらの上位として組み合わせることができます。例えば ネットワークプロパティ または ノードプロパティ のすべてのプロパティはこのファイルを介して設定できます。

カスタムプリセットファイルは ‑‑customPreset または ‑c パラメタで指定できます。

注釈

ノードがすでに実行されている状態で、カスタムプリセットファイルを変更した場合は、Bootstrap で作成したノードをアップデートする Bootstrap で作成したノードをアップデートする ガイドで説明されている方法で、ノードをアップグレードする必要があります。

config コマンド

Before building the node or network a full configuration file has to be created by using the symbol-bootstrap config command:

symbol-bootstrap config -p <preset> -a <assembly> -c <custom_parameters_file.yml>

例:

symbol-bootstrap config -p bootstrap
symbol-bootstrap config -p mainnet -a peer
symbol-bootstrap config -p mainnet -a dual
symbol-bootstrap config -p mainnet -a dual -c custom_parameters.yml

これは、デフォルトで target ( --target または -t パラメタで変更できます) フォルダを作成し、ノードまたはネットワークを構築するために使用する、生成された完全な構成ファイル (target/preset.yml) が含まれます。

注釈

Linux では、ユーザが docker グループに属していないと Permission denied while trying to connect to the Docker daemon socket というエラーが表示される場合があります。その場合は次のように追加します:

sudo addgroup $USER docker

compose コマンド

このコマンドは提供した構成に基づいて、必要な Docker ファイルを準備します:

symbol-bootstrap compose

設定手順と同様に、これも1度だけ実行する必要があります。

run コマンド

最後に、次のコマンドを実行して必要な Docker インスタンスを起動し、ノードまたはネットワークを起動します:

symbol-bootstrap run

プロセスを停止するには Ctrl+C を押下します。

注釈

ターミナルで Docker コンテナをバックグラウンド実行するには ‑‑detached または ‑d パラメータを使用することで、サービスをデタッチモードで実行出来ます。

次に symbol-bootstrap stop を使用して、それらを停止してください。

オールインワンの start コマンド

上記3つのコマンドは (config, compose, run) 1つにまとまります:

symbol-bootstrap start -p <preset> -a <assembly> -c <custom_parameters_file.yml>

そのとおり、単一のコマンドで Symbol ノード (または多くのノードを持つテストネットワーク) をインスタンス化して起動できます!

1度だけ実行する必要のある手順 (configcompose) は繰り返し行わないので、このコマンドを毎回使用できます。

HTTPS アクセスの提供

API nodes created using the api or dual assemblies accept HTTP commands through port 3000. HTTPS access can also be enabled, as described in the next two sections.

注釈

The certificates used below will only be used for HTTPS communication with the REST API, not as node certificates for inter-node communication.

所有する証明書を使用する

もし、すでにあなたのホスト向けの SSL をお持ちなら、Symbol Bootstrap にはカスタムプリセットファイル経由で、それを適用できます。

カスタムプリセットファイルを自己完結型とするためには、あなたの証明書の Key ファイルと Crt ファイルを Base64 文字列に変換し、プリセットファイルにコピーする必要があります:

cat restSsl.key | base64 -w 0
cat restSsl.crt | base64 -w 0

このようにセクション内に、これらのコマンド出力をプリセットファイルにコピーします:

nodes:
- friendlyName: My Awesome Node # Use anything you want here
  host: awesomenode.mycompany.net # Use your node's host name
gateways:
- restProtocol: HTTPS
  openPort: 3001
  restSSLCertificateBase64: >-
    LS0tLS1CRUdJTiBDRVJUSUZ...Base64...==
  restSSLKeyBase64: >-
    LS0tLS1CRUdJTiBSU0EgUFJ...Base64...=

提供した証明書は、ホスト名 awesomenode.mycompany.net に対して正当なものでなければなりません。ドメインはノードの IP アドレスを解決できる必要があります。

後に、証明書の有効期限が切れた場合、カスタムプリセットファイルを更新し、 Bootstrap で作成したノードをアップデートする ガイドにあるように、ノードをアップグレードする必要があります。

このオプションでは、HTTP 3000 番ポートではなく、HTTPS 3001 番ポートのみを開放します。 ファイアウォールまたはセキュリティグループで、ポート 3001 番を開放しておいてください。ポート 3000 番は、もう使用されないので、閉じてもよいです。

自動 Let's Encrypt 証明書

Bootstrap は公衆用で無料の Let's Encrypt サービスを利用して、必要な SSL 証明書を取得することもできます。

有効化するには、カスタムプリセットファイルに httpsProxies セクションを追加してオプトインします:

nodes:
    - friendlyName: My Awesome Node # Use anything you want here
      host: awesomenode.mycompany.net # Use your node's host name
httpsProxies:
    - excludeDockerService: false

awesomenode.mycompany.net ドメインを所有しており、それがノードの IP アドレスの名前解決をする必要があります。Let's Encrypt サービスは証明書の作成と更新を代行を行います。

ファイアウォールまたはセキュリティグループで、ポート 3001 番と 80 番を開放することを忘れないでください 。ポート 3000 番は閉じていても、いなくても、構いません。 ポート 80 番は Let's Encrypt が必要とします

注釈

このオプションは この優良なブログ記事 から大きな影響を受けました。Symbol Bootstrap では、この解決方法を組み合わせて処理を合理的に行います。

次の手順