May 14, 2022

Гайд по установке Aptos(Incentivized testnet) Docker +Aptos CLI

Гайд сделан на основе официальной документации https://aptos.dev/tutorials/validator-node/run-validator-node-using-docker. Обращаю внимание, что с 17 числа вышло обновление, где необходимо ставить FullNode на отдельный сервер. Т.е FullNode и ValitorNode СТОЯТ НА РАЗНЫХ СЕРВЕРАХ! FullNode ставить НЕОБЯЗАТЕЛЬНО!

Подготовка

Для начала обновляемся

$ sudo apt update && apt upgrade -y

1.Устанавливаем Docker

$ sudo apt install ca-certificates curl gnupg lsb-release wget jq sed -y
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Проверяем версию

docker version 

Если ошибок нет и вы видите ### Client: Docker Engine - Community....и куча всего остального, то всё гуд.

2.Устанавливаем Docker Compose

$ mkdir -p ~/.docker/cli-plugins/
$ curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
$ chmod +x ~/.docker/cli-plugins/docker-compose
$ sudo chown $USER /var/run/docker.sock

Проверяем версию docker compose

$ docker compose version

Если всё правильно, то будет : ### Docker Compose version v2.5.0

3.Установка Cargo

$ curl https://sh.rustup.rs -sSf | sh

В процессе установки выбираем Proceed with installation (default) - пишем цифру 1

4.Устанавливаем Aptos CLI

$ source $HOME/.cargo/env
$ cargo install --git https://github.com/aptos-labs/aptos-core.git aptos --tag aptos-cli-latest

UPDATE: Если есть ошибка, то пробуем так:

$ apt install unzip
$ wget -qO aptos-cli.zip https://github.com/aptos-labs/aptos-core/releases/download/aptos-cli-v0.1.1/aptos-cli-0.1.1-Ubuntu-x86_64.zip 
$ unzip aptos-cli.zip -d /usr/local/bin
$ chmod +x /usr/local/bin/aptos

5.Создаем директорию aptos

$ export aptos=testnet
$ mkdir $HOME/aptos
$ cd $HOME/aptos

Установка ValidatorNode

1.Загружаем файлы validator.yaml, fullnode.yaml и docker-compose.yaml в директорию

$ wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/docker-compose.yaml
$ wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/validator.yaml

2.Генерируем ключи

$ aptos genesis generate-keys --output-dir ~/aptos

Ключи можно посмотреть командами

$ cat private-keys.yaml
$ cat validator-identity.yaml
$ cat docker-compose.yaml

Из всех нам понадобиться только docker-compose.yaml

3.Настраиваем информацию валидатора - все данные берем из docker-compose.yaml. FullNode IP заносим только после того, как поставили её на другом сервере.

$ aptos genesis set-validator-configuration \
 --keys-dir ~/aptos --local-repository-dir ~/aptos \
 --username <Твой USERNAME> \
 --validator-host <ТВОЙ IP СЕРВЕРА ValidatorNode>:6180 \
 --full-node-host <ТВОЙ IP СЕРВЕРА FullNode>1:6182

После этого в папке должен появиться новый файл с именем <Твой USERNAME>.yaml

4.Создаем yaml файл

$ nano layout.yaml

Вставляем в него следующее

# меняя при этом на свой юзернейм из 5 шага
root_key: "0x5243ca72b0766d9e9cbf2debf6153443b01a1e0e6d086c7ea206eaf6f8043956"
users:
 - <ТВОЙ USERNAME>
chain_id: 23

5.Загружаем AptosFramework

$ wget https://github.com/aptos-labs/aptos-core/releases/download/aptos-framework-v0.1.0/framework.zip
$ unzip framework.zip

6.Компилим генезис blob и waitpoint

$ aptos genesis generate-genesis --local-repository-dir ~/aptos --output-dir ~/aptos

После этого у вас будет 2 новых файла blob.txt и waitpoint.txt

Перед запуском у вас должен быть список файлов:

  • validator.yaml
  • docker-compose.yaml
  • private-keys.yaml
  • validator-identity.yaml
  • validator-full-node-identity.yaml
  • <USERNAME>.yaml
  • layout.yaml
  • frameworkпапка
  • waypoint.txt
  • genesis.blob

7.Запускаем ноду

docker compose up -d

8.Проверяем результат

Проверить статус синхронизации

$ curl 127.0.0.1:9101/metrics 2> /dev/null | grep aptos_state_sync_version

Проверить логи валидатора

$ docker logs -f --tail 100 aptos-validator-1

Устанавливаем FullNode

1.Загружаем в директорию Aptos файлы fullnode.yaml и docker-compose-fullnode.yaml

$ wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/docker-compose-fullnode.yaml
$ wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/fullnode.yaml

2.Редактируем файл fullnode.yaml и вставляем в строку с ip validator свой ip серверва, на котором стоит нода валидатора.

$ nano fullnode.yaml
Вот в этой строке меняем IP своего валиадтора
#  addresses: 
#   - "/ip4/<Validator IP Address>/tcp/6181/ln-noise-ik/......../ln-handshake/0" 
#   role: "Validator"

Жмем ctrl +s, ctrl+x.

3.(НЕОБЯЗАТЕЛЬНО)Перместите из ValidtorNode в FullNode файлы validator-full-node-identity.yaml, genesis.blob и waypoint.txt

4.Запускаем(НЕОБЯЗАТЕЛЬНО)

$ docker-compose up -f docker-compose-fullnode.yaml

5.Проверяем логи

$ docker logs -f testnet-fullnode-1 --tail 100

Также можно всё проверить на сайте https://aptos-node.info/ - вставив, свой ip сервера

https://aptos-node.info/

13.После чего проходим регистрацию на https://community.aptoslabs.com/it1

И начинаем проходить сначала верификацию ноды(данные для заполнения берем из файла, который создали на 3ом шаге в ValidatorNode "<USERNAME>.yaml", а затем верификацию по документам.

Полезные команды

Рестарт ноды

$ docker compose restart

Остановить ноду

$ docker compose down

Удалить ноду

$ docker compose down -v
$ rm -rf $HOME/aptos

P.S все команды осуществляются из папки aptos

$ cd $HOME/aptos

Всем спасибо за внимание и удачи!