見出し画像

Taikoノード用マネジメントツール、「STN」をインストールしてみよう!

この記事は仮想通貨コミュニティ、Crypto流星街によって運営されています。
こんにちは、Crypto流星街の0x_Riceです。

こちらでは文字数制限の関係でツイッターには書きづらい内容や、比較的アーカイブする価値のありそうな情報を不定期で投稿できたらいいなと思っています!

ぜひフォローしていただけると嬉しいです!


はじめに

※本記事はある程度理解のある方向けの記事です。
※本記事はVPS環境などはある前提の記事です。

こんにちは!
皆さん、あるかどうかもわからないエアドロ欲しさにまだ身銭を切りながらノードを建てて消耗してますか!?
私は消耗しています。本当に辛い。

今日はいつの間にかTaikoのDocsに加わった「STN」というコマンドラインツールについて解説します。
Taikoをまだ建てたことないよ!という方でも大丈夫です。
今回は既に運用中のユーザー向けというより、STNを使ってノードを新規で構築するような内容について書いています。
クッソめんどくさいですが、頑張りましょう。

・・・というのは建前で、実際には「STN」をインストールした際にハマりにハマった私のトラブルシューティング備忘録になります。
同じようなトラブルに見舞われた方の救いになることを祈って・・・

既存ユーザー向けの注意:
インストールするディレクトリによっては既存の.envファイルに干渉してしまい、現在運用中のノードがお亡くなりになる可能性がございます。
インストールは自己責任かつ自分で調べながら慎重に行ってください。
(ワイの運用中のNodeは召されました。そしてこの記事書きながら建て直しました。)

STNってなーに

STNとは、Taikoのノード管理専用に開発されたマネジメントツールです。
従来TaikoノードはDockerコマンドで管理したり、環境変数を自分で管理したり必要があって結構めんどくさかったです。
が、「STN」の登場で、わかりやすいコマンド体系で一元管理できるようになりました。

STN

こんな感じで、従来.envファイルをいじっていたような内容を専用コマンド1発で編集できるようになった感じです。
※従来通りの建て方についてはRusくんのMediumなどを参照してください。

手動管理も慣れてしまえばなんということもないのですが、STNがあれば少し取っ付きやすいですね。
それでは早速インストールしていきましょう。

STNをインストールしよう

事前準備

STNを動かすためには以下を事前にインストールしておく必要があります。

  • Docker

  • Git

DockerやGitのインストール方法については公式Docsなどを参考にしてください。(公式Docsを参考にする癖をつけてください)

STNのインストール

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/d1onys1us/stn/releases/latest/download/stn-installer.sh | sh

インストール自体はこれで完了です。おー、なんかめっちゃ簡単ですね!
それでは早速試しに「stn」ってコマンドを実行してみてください。

起動しないから!!!!!!!!!!

トラブルシューティング

はい、というわけでトラブルシューティングにはいります。
ここからが本番だ!!!

注意:
下記のトラブルシューティングはUbuntu 22.04向けのトラブルシューティングです。その他のディストリビューションだとどういう挙動になるかは僕は存じ上げません。

追記(2024/2/12)

以下の項目では無理やりlibssl1.1をインストールすることで動作させる方法について解説しています。が、やはりセキュリティの問題で、基本的にはlibssl1.1を入れるべきではないというご指摘をいただきました、ありがとうございます。

Cargoを使ってインストールする方法は以下になります。
①Rustupをインストールする。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

②STNをインストールする。

cargo install stn

環境次第ではこれで動くようになるようです。
しかし、私の環境の場合OPENSSL_LIB_DIRとOPENSSL_INCLUDE_DIRの環境変数の問題でガチ詰みしてしまい、解決に結構時間がかかりました。(ありがとう、ChatGPT)

もし正常動作しない場合、インストール時に以下のコマンドからインストールを行うことで途中でインストールが止まった場合でもエラーが起きた際の詳細な内部ログを全て出力することが可能です。

RUST_BACKTRACE=full cargo install stn

出力されたものをChatGPTに食わせて、個々に問題を解決するようにしてください。

こんな感じのログが出るよ

参考までに自分の環境でのエラー内容についてメモ書き程度に記載します。

  • build-essentialのパッケージが不足

  • pkg-config のパッケージが不足

  • OPENSSL_LIB_DIRとOPENSSL_INCLUDE_DIRの環境変数が不適切

#Cargoをインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

#CargoのPATHを通す
echo 'export PATH=$HOME/.cargo/bin:$PATH' >> $HOME/.bashrc
source $HOME/.bashrc

#build用パッケージをインストール
sudo apt-get update
sudo apt-get install build-essential

#pkg-configをインストール
sudo apt-get install pkg-config

#openSSLをインストール
sudo apt-get remove libssl-dev
sudo apt-get install libssl-dev

#openSSLのPATHを通す
export OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu/
export OPENSSL_INCLUDE_DIR=/usr/lib/x86_64-linux-gnu/

#=以降のディレクトリは人によって違う場合あり。
#これでエラーが出る場合はfind /usr -name libssl.soでディレクトリを検索してそれを入力する。

#stnをインストール
cargo install stn

↑私の環境ではこの順番でやればインストールできました。

それでもダメな方で、セキュリティとかどうでもええわ!って方は以下のやり方で無理やりやってみてください。

libssl1.1問題を解決する

stnを実行しようとすると、まず「libssl1.1ってライブラリがないよ」と言われます。
とりあえず一旦下記のコードを実行してみますが・・・

sudo apt update
sudo apt install libssl1.1

入りません。ChatGPTさんの手厚いアドバイスを受けながらいろいろな方法を試しますが、何をやってもダメ。

そこで色々調べてみたところ、libssl1.1というライブラリは太古の昔には廃れてしまった超レガシーなカスライブラリということが判明。今はもうVerが上がってしまっており、libssl1.1を普通に手にいれることは無理ということでした。
海外フォーラムを見たら似たようなことをしようとしている人のスレッドがありましたが、有識者から「Ubuntu 22.04にlibssl1.1をいれるなんて正気の沙汰じゃない。」というコメントをもらっており、ベストアンサーにも選ばれていました。
Taiko、そんなライブラリ使ってソフトウェアを作るんじゃない!!!!

ということで、ネット上に落ちているlibssl1.1を自分で拾ってきてインストールすることにしました。
下記コマンドでインストールが可能です。

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

libssl1.1の件はこれで解決!

さあ、stnを起動するぞー

は?

今度はOPENSSL_1_1_1が足りない・・・

OPENSSL_1_1_1問題を解決する①

例の如くOpenSSLをインストールしたり色々するもダメ。
理由は先ほどと同じく太古の昔に廃れたVerが使われているから。(現在はVer3.xxらしい)

ということで同じ方法で解決することにします。
今度はバイナリから自分でビルドしなきゃいけないので少し工程が増えます。

まずはファイルをダウンロード。

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz

圧縮ファイルなので解凍しましょう。

tar -zxvf openssl-1.1.1w.tar.gz

解凍したディレクトリに移動して、ビルドに必要なパッケージをインストールします。

cd openssl-1.1.1w
sudo apt-get install build-essential

コンフィギュレーションします。ロゴのアスキーアートみたいなのがでたら成功です。

./config

次にコンパイルを行います。

make

最後にコンパイルしたものをインストールして、インストールは完了です。

sudo make install

OPENSSL_1_1_1問題を解決する②

OPENSSL_1_1_1が無事インストールできたし、もういけるっしょ!
と思いstnコマンドを意気揚々と叩いたところ

は?

またこれ。
おそらくこれはPATHが通ってないからだな、ということでPATHを通します。(PATHを通す、についてはググってね)

echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

懲りずにstn起動!!!!
stn!!!!!!!!!!

きたああああああああああああああああああああ
うおおおおおおおおおおおおおおおおおおおおお
やったあああああああああああああああああああ

〜完〜

Taikoノードを起動しよう

お疲れ様でした。なんとかSTNが動くようになりましたね。
新規でノード建てる方はこの後、STNのコマンドを使ってノードを建てていくことになります。
コマンドを使った後の挙動に関しては、「見たらわかる」レベルなので頑張りましょう、と言いたいところですが初心者向けに流れを整理します。

まずはTaikoノードをインストールします。

stn install

以上!

次にノードのコンフィグをします。

注意:
コンフィグしていく際は従来Verの建て方の記事を読むと必要な前提知識が身につくので一読をおすすめです。(前述のRusくんMediumしかり、日本語情報を出してくださってる方が何人もいらっしゃいます)

stn config full

HoleskyのRPCのURL情報(http & wss)を聞かれるので入力します。
Holeskyのノードがないよって方は自前でHoleskyノードを建ててもいいし、Blockpiなどを使用してもOK。

BlockpiやArchemy,Infuraなどは無料でRPCを作成できるのですが、無料枠は結構早々と使い切ってしまうと思います。
なので私は自前で建てちゃいました。(建てる場合は別途Holesky用にVPSを追加で契約してください)

最後にノードを起動します。

stn up

こういう文字列が走り始めたらノード自体は完成です!

その後、無事にTaiko Nodeが100% Syncするまで待ち、

stn config proposer

でProposerのコンフィグをして、再起動して完了です。
お疲れ様でした、、、

補足:
stn だけ入力することでSTNで使えるコマンドリファレンスが表示されます。困ったら一旦「stn」!

コミュニティ紹介

Crypto流星街(Crypto Meteor City)は、仮想通貨コミュニティおよび投資グループです。
Crypto流星街は常に新しいコミュニティメンバーを募集しています。
仮想通貨(暗号資産)やNFTについて質問や困ったことがあればお気軽に初心者部屋へお越しください。

Crypto流星街 初心者部屋🔰オープンチャット

Crypto流星街 ディスコードサーバー

Crypto流星街 コミュニティ紹介note


この記事が気に入ったらサポートをしてみませんか?