跳转到内容

运行 Indexer 全节点

运行 Indexer 全节点的概要步骤如下:

  1. 确保具备本文下述的所有必需工具和软件包。
  2. 遵循说明设置公共全节点,但暂不启动全节点。
  3. 按本文说明编辑 fullnode.yaml。
  4. 按下文说明运行 Indexer 全节点。

安装以下软件包。注意,在准备开发环境时可能已经安装过其中许多。可运行 which command-name 并确认输出中出现该软件包(即使已安装,libpq 也不会返回)。

重要:如果使用 macOS,请遵循官方指南安装 Docker,而不是使用 brew。

对于 Aptos Indexer 全节点,请安装以下软件包:

  1. 启动 PostgreSQL 服务器:brew services start postgresql。
  2. 确保可以运行 psql postgres,然后输入:\q 退出提示符。
  3. 使用 createuser 命令(可用 which 查找)创建 PostgreSQL 用户 postgres:
    Terminal window
    /path/to/createuser -s postgres
  4. 如果尚未克隆,请克隆 aptos-core 仓库:
    Terminal window
    git clone https://github.com/aptos-labs/aptos-core.git
  5. 前往(或 cd 到)aptos-core/crates/indexer 目录。
  6. 创建数据库架构:
    Terminal window
    diesel migration run --database-url postgresql://localhost/postgres
    这会创建数据库架构,其 migrations 子目录位于 aptos-core/crates/indexer 目录中。若该数据库已被使用,请尝试其他数据库。例如:DATABASE_URL=postgres://postgres@localhost:5432/indexer_v2 diesel database reset。
  1. 遵循说明设置公共全节点并准备环境,但暂不使用 cargo run 或 docker run 启动 Indexer。

  2. 使用以下命令拉取最新 Indexer Docker 镜像:

    Terminal window
    docker pull aptoslabs/validator:nightly_indexer
  3. 编辑 ./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
  1. 根据设置,使用 cargo run 或 docker run 运行 Indexer 全节点。请记得提供特定节点所需的参数:
    Terminal window
    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
    或:
    Terminal window
    cargo run -p aptos-node --features "indexer" --release -- -f ./fullnode.yaml

要重启 PostgreSQL 服务器:

  1. 搜索 postmaster 进程并终止它,以关闭服务器

    Terminal window
    ps -ef | grep -i postmaster
  2. 复制该进程的进程 ID(PID),然后传入以下命令将其关闭:

    Terminal window
    kill -INT PID
  3. 使用以下命令重启 PostgreSQL 服务器:

    Terminal window
    brew services restart postgresql@14