インデクサーフルノードを実行する
これは従来のインデクサーに関するドキュメントです。最新のインデクサースタックの基盤となるインフラストラクチャを実行する方法については トランザクションストリームサービスを御覧下さい。
Aptosインデクサーを実行する
以下のインストール手順は、Appleシリコン搭載のMacOSでのみ検証されています。それ以外で実行する場合は、若干の調整が必要な場合があります。
概要
インデクサーのフルノードを実行する手順は、以下の要約を御覧下さい。
- 以下で解説する必要なツールとパッケージが全て揃っていることを確認してください。
- 指示に従いパブリックフルノードを設定しますが、まだフルノードを起動しないで下さい。
- 以下で解説する様に
fullnode.yaml
を編集します。 - 以下の手順に従い、インデクサーのフルノードを実行します。
前提条件
以下のパッケージをインストールします。注意:開発環境の準備の際、これらの多くがすでにインストールされている可能性があります。which command-name
を実行し、出力にパッケージが表示されることで確認できます(ただし、libpqx
はインストールされても返されません)。
重要: MacOSを使用している場合は、
brew
ではなく、 公式のガイダンスに従ってDockerをインストールする必要があります。
Aptosインデクサーのフルノードの場合は、以下のパッケージをインストールします。
brew
-/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
アウトプットに出力されたコマンドを実行して、コマンドをパスに追加し、依存関係をインストールします。cargo
Rustパッケージマネージャー -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
docker
-brew install docker
- pg_ctllibpqコマンドを含むlibpq Postgres C APIライブラリ -
brew install libpq
インストール後、全てのエクスポートコマンドを実行してください。 postgres
PostgreSQLサーバー -brew install postgresql
diesel
-brew install diesel
データベースを設定する
- PostgreSQL サーバーを起動します。:
brew services start postgresql
psql postgres
が実行できることを確認し:\q
を入力してプロンプトを終了します。createuser
コマンドでPostgreSQLユーザーpostgres
を作成します。(コマンドはwhich
(以下)で見つかります)。:/path/to/createuser -s postgres
- まだクローンしていない場合は
aptos-core
リポジトリのクローンを作成します。git clone https://github.com/aptos-labs/aptos-core.git
aptos-core/crates/indexer
ディレクトリに移動 (cd
)します。- データベーススキーマを作成します。
これにより、この
diesel migration run --database-url postgresql://localhost/postgres
aptos-core/crates/indexer
ディレクトリ内にmigrations
サブディレクトリを含むデータベーススキーマが作成されます。何らかの理由でこのデータベースがすでに使用されている場合は、別のデータベースを試してください。例えば:DATABASE_URL=postgres://postgres@localhost:5432/indexer_v2 diesel database reset
フルノードインデクサーを開始する
- 指示に従いパブリックフルノードを設定し、設定の準備をしますが、インデクサーはまだ開始しないで下さい(
cargo run
かdocker run
コマンドで)。 - 以下を使用して、最新のインデクサーDockerイメージをプルします。:
docker pull aptoslabs/validator:nightly_indexer
./fullnode.yaml
を編集して、以下の構成を追加します。:storage:
enable_indexer: true
# This is to avoid the node being pruned
storage_pruner_config:
ledger_pruner_config:
enable: false
indexer:
enabled: true
postgres_uri: "postgres://postgres@localhost:5432/postgres"
processor: "default_processor"
check_chain_id: true
emit_every: 500
インデクサーのフルノードをGenesisから同期する(これには長い時間がかかる場合があります)かわりに、フルノードを開始する前にバックアップデータを使用してフルノードをブートストラップすることを選択できます。これを行うにはバックアップから復元する手順に従ってください。
-
cargo run
またはdocker run
のいずれかを使用してインデクサーのフルノードを実行します。あなたの特有のノードで必要な引数を必ず指定して下さい。:docker run -p 8080:8080 \
-p 9101:9101 -p 6180:6180 \
-v $(pwd):/opt/aptos/etc -v $(pwd)/data:/opt/aptos/data \
--workdir /opt/aptos/etc \
--name=aptos-fullnode aptoslabs/validator:nightly_indexer aptos-node \
-f /opt/aptos/etc/fullnode.yamlまたは、
cargo run -p aptos-node --features "indexer" --release -- -f ./fullnode.yaml
インデクサーを再起動する
PostgreSQLサーバーを再起動するには、
-
postmaster
プロセスを検索して強制終了することでサーバーをシャットダウンします:ps -ef | grep -i postmaster
-
プロセスのプロセスID(PID)をコピーし、以下のコマンドに渡してシャットダウンします。:
kill -INT PID
-
以下のコマンドを使用してPostgreSQLサーバーを再起動します。:
brew services restart postgresql@14