はじめに
npmにpublishされているsymbol-bootstrapは既にメンテされていません。
今回はsymbolチームがforkしたsymbol-bootstrapを使ってノードを構築していきます。
1. 既存のsymbol-bootstrapをアンインストールする
1.1 npmからグローバルインストールした場合
(sudo) npm install -g symbol-bootstrap
コマンドでインストールした場合は以下のコマンドでアンインストールできます。
# バージョン確認。この場合、バージョンにv1.1.10と出ます。(おそらく。)
$ symbol-bootstrap -v
symbol-bootstrap/1.1.10 linux-arm64 node-v18.20.8
# 削除方法
# 環境によってはsudoが必要
$ npm uninstall -g symbol-bootstrap
1.2 既にsymbolチーム版のものをインストールしていて最新に置き換える場合
(多分これをやっている人はこの記事必要ないと思う。。。
# バージョン確認。この場合、バージョンにv1.1.11と出ます。(おそらく。)
$ symbol-bootstrap -v
symbol-bootstrap/1.1.11 linux-arm64 node-v18.20.8
# 削除方法
# 環境によってはsudoが必要
$ npm uninstall -g symbol-bootstrap
1.3 コミュニティfork版を使っていた場合
(多分これをやっている人は(ry
@nemneshia/symbol-bootstrap
のようにコミュニティによってforkされたバージョンを削除する場合は、@スコープ名
を記載します。
# 環境によってはsudoが必要
$ npm uninstall -g @nemneshia/symbol-bootstrap
2. symbol-bootstrapの取得およびビルド
まず、任意の場所に symbol/symbol-bootstrapをcloneします。
デフォルトがdevブランチなので -b でdevブランチを指定
git clone git@github.com:symbol/symbol-bootstrap.git symbol-symbol-bootstrap -b dev
※ symbol-symbol-bootstrap
の部分はcloneするディレクトリ名なので省略可能です。
次に、依存関係をインストールします。
cd symbol-symbol-bootstrap # 実際にcloneしたディレクトリを指定してください。
# 依存関係をインストール
# ビルドエラーを避けるためnpm installではなくnpm ciを使用することをおすすめします
npm ci
# ビルド実行
npm run build
npm ci は package-lock.json に書かれたバージョンを厳密に使って依存関係をインストールするコマンドです。
これで依存がズレることによるビルド失敗率が下がります。
ビルドに失敗した場合は環境依存の可能性がありますので下記を参考にしてください。
筆者の環境
- node: v18.20.0
- npm: v10.8.2
- docker: Docker version 28.4.0, build d8eb465
- docker compose: Docker Compose version v2.39.2
3. ビルドしたbootstrapをグローバルインストールする
ビルドしただけでは使えないのでコマンドとしてインストールします。
# symbol-symbol-boostrapのディレクトリで実行
npm install -g .
cd .. # 違うディレクトリへ
symbol-bootstrap -v
# 意図したバージョンがインストールされていればOK
# 2025-09-24時点での最新版は1.1.12になると思います
4. あとはいつも通りノードの更新をする
すでにbootstrapでノードを運用中の場合は以下のコマンドでノードを更新できます。
(ちょっと過剰かもしれないので各々慣れたやり方で大丈夫です。)
# 設定ファイル読み込み
symbol-bootstrap config -a dual -p mainnet -c my-preset.yml --upgrade
# docker composeの定義を更新
symbol-bootstrap compose --upgrade
# 起動+ヘルスチェックオプション
symbol-bootstrap run -d --healthCheck
以上です。
そこまで難しくないので是非やってみてください。