特にこの記事は、発信を目的とする物ではなく筆者が個人的に備忘録として残しておきたいことを記載してます。
目次
事前準備
RPC
- Alchemy https://rpc.ankr.com/eth
Burner Address
全体の流れと理解
DockerとDocker Composeのインストール
DockerとDocker Composeが正しく設定されているか確認してください。これは、ノードの再起動やアップデートを簡単に行うために重要です。
Docker Composeのインストールコマンドを実行する
提示された通り、以下のコマンドを使用してDocker Composeをインストールします。
apt install docker-compose
インストールの確認
インストール後、再度バージョンを確認してインストールが成功したことを確認してください。
docker-compose --version
環境変数の設定
スクリプトは新しい .env
ファイルを作成し、必要な情報を入力するように求めています。これには、Ethereum MainnetのRPC URL、サイナーアカウントのアドレスとプライベートキー、そしてスロットIDが含まれます。これらの情報はノードの運用に必要不可欠です。
ノードの実行
ビルドスクリプトを実行した後、ノードが正常に起動し、スナップショットの処理を開始したことを示すログが出力されています。これは、ノードがEthereumのブロックチェーンから情報を取得し、指定されたエポックでスナップショットを生成していることを意味します。
ログの監視
ノードが稼働している間、PM2のログを通じてノードの状態を監視することが重要です。エラーが発生した場合や処理の進行状況を確認するために、これらのログを定期的にチェックしてください。
アップデートとメンテナンス
リポジトリからの最新の変更を定期的にフェッチし、システムとDockerイメージを最新の状態に保つことが重要です。新しい機能やセキュリティ修正がリリースされる可能性がありますので、これによりノードの安定性とセキュリティが向上します。
トラブルシューティング
VPSを使用しており、すでに他のノードを運用している場合、新しいノードのセットアップにあたって考慮すべきいくつかのポイント
ポートの競合を避ける
Dockerコンテナは、特定のポートを使用して外部と通信します。既に稼働中のノードやサービスが特定のポートを使用している場合、新しいノードが同じポートを使用しようとすると競合が発生します。このため、新しいノードの設定時には、使用するポートが他のサービスと競合しないように注意が必要です。
Dockerのインストール状況の確認
VPSにDockerがインストールされているかどうかを確認する必要があります。ターミナルで以下のコマンドを実行して確認できます。
docker --version
もしインストールされていない場合は、Dockerの公式ドキュメントに従ってインストールしてください。
Docker Composeの利用
Docker Composeを使用する場合、docker-compose.yml
ファイルでサービスの設定を管理します。このファイル内で、コンテナが使用するポートやボリュームなどを指定します。Docker Composeがインストールされているかも同様に確認してください。
docker-compose --version
未インストールの場合は、Docker Composeのインストールガイドを参照してインストールします。
リソースの管理
複数のノードやサービスを同一のVPS上で運用する場合、CPUやメモリなどのリソースを適切に管理することが重要です。各ノードのリソース使用量を把握し、オーバーコミットしないように注意してください。
セキュリティの考慮
複数のサービスを実行する場合、セキュリティ面でも注意が必要です。特に、公開されるポートやネットワークの設定を適切に管理し、不要なアクセスを防ぐための適切なファイアウォールルールを設定することをお勧めします。
バックアップとモニタリング
VPS上で重要なサービスを運用する場合、定期的なバックアップとモニタリングを行うことが重要です。問題が発生した際に迅速に対応できるよう、適切な監視ツールを設置し、バックアップポリシーを確立してください。
これらのポイントを考慮してセットアップを進めることで、複数のノードをスムーズに運用し、問題を未然に防ぐことができます。Dockerについての基本的な理解がまだの場合は、Dockerの公式ドキュメントを参照すると良いでしょう。
全てを初期化して一から始めたい場合 - Powerloomの場合
全てを初期化して一から始めたい場合、以下のステップに従ってください。これらの手順は、プロジェクトをクリーンな状態にリセットし、再度セットアップを開始するためのものです。
現在実行中のDockerコンテナを停止します。
docker-compose down
(オプション) Dockerイメージを削除したい場合は、次のコマンドを使用して削除します。<image_name>
は削除したいイメージの名前またはIDです。
docker rmi <image_name>
プロジェクトディレクトリの削除
プロジェクトディレクトリを削除して、全てを一から始める場合は、次のコマンドを使用します。これはプロジェクトディレクトリを完全に削除するため、実行する前にデータが必要ないことを確認してください。
cd ~ # プロジェクトディレクトリの一つ上に移動 rm -rf powerloom # プロジェクトディレクトリを削除
プロジェクトのクローン
プロジェクトディレクトリを削除した後、再度プロジェクトをクローンします。
git clone -b simulation_mode https://github.com/PowerLoom/snapshotter-lite powerloom cd powerloom
環境設定
必要に応じて.env
ファイルを作成し、必要な環境変数を設定します。環境変数の具体的な値はプロジェクトのドキュメントまたは設定ガイドを参照してください。
Dockerコンテナのビルドと起動
プロジェクトの依存関係をインストールし、Dockerコンテナをビルドして起動します。docker-compose.yml
がプロジェクトに含まれている場合は、以下のコマンドで簡単に実行できます。
docker-compose up -d
これらの手順に従って、プロジェクトをクリーンな状態から再度セットアップできます。プロジェクトに固有の追加設定が必要な場合は、そのプロジェクトのドキュメントまたは設定ガイドを参照してください。
Dockerと関連するプロセスを停止して削除する手順
まず、実行中のDockerコンテナを停止し、Dockerイメージを削除します。次に、Docker自体をアンインストールする手順を実行します。
実行中のDockerコンテナをリストアップ
docker ps
すべてのDockerコンテナを停止
docker stop $(docker ps -a -q)
すべてのDockerコンテナを削除
docker rm $(docker ps -a -q)
Dockerイメージの削除
すべてのDockerイメージを削除 (必要に応じて)
docker rmi $(docker images -q)
Dockerのアンインストール
Ubuntuの場合のDockerのアンインストール
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo apt-get autoremove
インストールしたその他のDocker関連ファイルの削除
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
クローンしたリポジトリの削除
クローンしたリポジトリのディレクトリを削除
cd ~ # ホームディレクトリに戻る rm -rf powerloom # リポジトリのディレクトリを削除
これで、Docker関連のすべてのコンテナ、イメージ、そしてDocker自体をシステムから削除する手順を完了しました。もし、何か他にクリーンアップしたいものがあれば、同様にして削除してください。
セットアップが完了してターミナルから出る場合
ターミナルセッションから安全に「出る」(セッションを終了する)方法は、実行中のプロセスやセットアップしたアプリケーションによって異なります。基本的なガイドラインを以下に示します。
バックグラウンドプロセスの確認
実行中のプロセスやアプリケーションがある場合は、それらがバックグラウンドで実行され続けるようにしてください。たとえば、docker-compose
を使用してサービスを起動した場合、-d
オプション(デタッチモード)で実行しておくと、ターミナルセッションを閉じてもプロセスが継続します。
docker-compose up -d
スクリーンセッションまたはTMUXセッションの使用
screen
やtmux
を使用している場合は、セッションから「デタッチ」して、後で再接続できるようにします。
screen
の場合: Ctrl + A, そしてDを押してデタッチします。tmux
の場合: Ctrl + B, そしてDを押してデタッチします。
セッションの終了
ターミナルセッションを終了する準備ができたら、exit
コマンドを入力するか、ターミナルウィンドウを閉じることができます。これにより、現在のシェルセッションが終了します。
exit
注意点
- 重要なプロセスやアプリケーションが実行中の場合、ターミナルセッションを終了する前に、それらが中断されないことを確認してください。必要に応じて、プロセスがバックグラウンドで継続するように設定してください。
- 作業内容によっては、ログアウトする前に特定のクリーンアップ作業が必要になる場合があります。これには、一時ファイルの削除や、特定のサービスのシャットダウンが含まれることがあります。
これらのステップに従えば、ターミナルセッションから安全に「出る」ことができます。
VPSをクリーンアップして、新しい状態にリセットする方法
VPSをクリーンアップして、新しい状態にリセットする方法はいくつかありますが、最も根本的なアプローチは、VPSを再インストールすることです。これにより、すべてのデータが消去され、オペレーティングシステムが新しい状態で再インストールされます。ただし、この方法を選択する前に、重要なデータがある場合はバックアップを取ってください。
VPSを再インストールする
- バックアップ: 必要なファイルやデータベースがある場合は、VPSから別の場所にバックアップを取ります。
- VPSプロバイダーのコントロールパネルにアクセス: VPSを提供しているサービスのコントロールパネルにログインします。
- 再インストールオプションを探す: 多くのVPSプロバイダーは、コントロールパネル内にOSの再インストールやVPSのリセット機能を提供しています。
- OSを選択して再インストール: 必要なOSを選択し、指示に従ってVPSを再インストールします。
特定のソフトウェアやサービスをクリーンアップする
もし特定のソフトウェアやサービスだけをクリーンアップしたい場合は、個別にアンインストールや設定のリセットを行うことができます。例えば、Dockerや他のサービスをアンインストールしたい場合は、以下のコマンドを使用します。
Dockerをアンインストールする
sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo apt-get autoremove
パッケージリストのクリーンアップ
sudo apt-get clean sudo apt-get autoclean
これらのコマンドはUbuntuやDebianベースのシステムに適用されます。使用しているシステムによっては、コマンドが異なる場合があるので注意してください。
注意点
- 再インストールやソフトウェアのアンインストールは、データを失うリスクが伴います。実行する前に、重要なデータのバックアップを取ることを忘れないでください。
- VPSの再インストールは、プロバイダーによって提供される機能です。プロセスはプロバイダーによって異なるため、具体的な手順についてはプロバイダーのドキュメントを参照してください。
ノード環境構築後のモニタリング作業
以下のモニタリング方法は、ターミナルを起動してVPSにSSH接続した後に実行するものです。基本的には、リモートのVPSサーバーにSSHでログインしてから、コマンドラインを通じてDockerやDocker Composeのコマンドを実行することで、コンテナの稼働状況やログを確認します。また、PrometheusやGrafanaなどの監視ツールを使用する場合も、これらのツールがVPS上で稼働していると仮定して、アクセスや設定を行います。
ターミナルを使用せずにこれらの情報を確認する方法としては、Webベースの管理画面やダッシュボードを提供するツールを利用する方法があります。例えば、PortainerやRancherなどのDocker管理ツールをVPS上にセットアップすることで、ブラウザからコンテナの状態を確認したり、ログを見たりすることができます。これらのツールは、直感的なGUIを提供し、コンテナ管理を簡単に行うことができるため、コマンドラインに不慣れな方にも便利です。
また、PrometheusやGrafanaでダッシュボードを構築した場合も、Webブラウザを通じてシステムの状態を監視できます。これにより、ターミナルを開かずとも、任意のデバイスから状況をチェックすることが可能になります。
これらのツールの導入と設定にはある程度の初期設定が必要ですが、一度設定を完了させてしまえば、運用の効率化に大きく寄与します。
Docker コマンドを使用
コンテナの状態確認
docker ps
これにより、現在実行中のコンテナのリストが表示されます。コンテナがリストに表示されていれば、そのコンテナは稼働しています。
コンテナのログ確認
docker logs [コンテナIDまたは名前]
特定のコンテナのログを確認することで、アプリケーションが正常に動作しているか、あるいはエラーが発生しているかを確認できます。
Docker Compose を使用する場合
コンテナの状態確認
docker-compose ps
Docker Composeを使用している場合、このコマンドでサービスの状態を確認できます。
サービスのログ確認
docker-compose logs [サービス名]
特定のサービスのログを確認して、動作状況を把握できます。
監視ツールの使用
実運用環境では、PrometheusやGrafanaなどの監視ツールを設定することが一般的です。これらのツールを使用すると、システムのメトリクスを収集し、視覚的なダッシュボードを通じてノードの状態をリアルタイムでモニタリングできます。
- Prometheus: メトリクス収集ツールとして広く使用されており、DockerやKubernetes環境と連携してメトリクスを収集できます。
- Grafana: 収集したメトリクスを視覚化するためのツールです。Prometheusと組み合わせて使用することで、強力な監視ダッシュボードを構築できます。
ログ管理システムの使用
ELKスタック(Elasticsearch, Logstash, Kibana)やFluentdなどのログ管理システムを導入することで、アプリケーションやシステムのログを中央集約し、効率的に管理・分析できます。これにより、問題発生時の原因究明が容易になります。
これらの方法を適切に組み合わせることで、ノードの稼働状況を効果的にモニタリングし、システムの安定性を確保できます。