1. 풀노드 (도커 모드) 업데이트

    만약 설치 또는 재설치 작업이 아닌 단순히 매주 진행하는 업데이트를 실행하려면 아래의 명령들을 순서대로 한 줄씩 복사하여 입력한다

    sudo su

    cd ~/aptos

    docker compose down --volumes

    rm waypoint.txt genesis.blob

    wget <https://devnet.aptoslabs.com/waypoint.txt>

    wget <https://devnet.aptoslabs.com/genesis.blob>

    도커를 기동하기 전에 반드시 업데이트 공지문을 보고 현재 Docker Image tag와 일치하는 지 재 확인한다

    만약 tag가 일치하지 않으면 docker-compose.yaml 파일을 공지문의 tag로 편집해야 한다

    Screen Shot 2022-06-10 at 9.42.10 AM.png

    nano docker-compose.yaml # 만약 본인이 선호하는 편집기가 있다면 그 편집기로 작업하면 된다

    공지문에 나온 tag로 해당 위치를 수정 저장

    공지문에 나온 tag로 해당 위치를 수정 저장

    docker compose up -d

  2. 풀노드 설치

    만약 클라우드 서버 임대 및 인스턴스(Ubuntu 20.04) 생성 이후 처음으로 노드를 설치하는 상황이라면, 우선 아래 명령을 실행한다

    물론 이미 실행한 이력이 있더라도 주기적으로 설치 관리자 업데이트를 해주면 작업 도중 업데이트해야 하는 번거로움이 줄어든다

    sudo su

    cd

    apt update ; apt upgrade -y

    reboot now

    다시 서버 접속 로그인 : 화면에 나타난 메세지를 잘 확인하고 추가 설치 작업이 있는 지 확인할 것

    나중에라도 업데이트 작업이 필요한 경우 아래 캡쳐화면과 같은 메세지가 보이게 되므로 이 때는 위의 작업을 실행해 주면 된다

    Screen Shot 2022-06-12 at 5.35.56 PM.png

    1-1. 도커 모드

    sudo su
    cd
    mkdir -p /opt/aptos/data aptos aptos/identity
    
    # 도커 모드로 노드를 구동시키기 위해 도커와 도커-컴포즈 두 종류의 패키지를 설치해야 함
    # 아래 각 줄의 명령들을 순서대로 입력
    
    sudo apt-get install ca-certificates curl gnupg lsb-release wget -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 -y
    
    mkdir -p ~/.docker/cli-plugins/
    sudo curl -L "<https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    sudo chown $USER /var/run/docker.sock
    
    cd aptos
    docker pull aptoslab/validator:devnet
    docker pull aptoslab/tools:devnet
    wget <https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/public_full_node/public_full_node.yaml>
    wget <https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/public_full_node/docker-compose.yaml>
    wget <https://devnet.aptoslabs.com/waypoint.txt>
    wget <https://devnet.aptoslabs.com/genesis.blob>
    
    docker run --rm --name aptos_tools -d -i aptoslab/tools:devnet
    docker exec -it aptos_tools aptos-operational-tool generate-key --encoding hex --key-type x25519 --key-file ./private-key.txt
    docker exec -it aptos_tools cat ./private-key.txt > /root/aptos/identity/private-key.txt
    docker exec -it aptos_tools aptos-operational-tool extract-peer-from-file --encoding hex --key-file ./private-key.txt --output-file ./peer-info.yaml
    docker exec -it aptos_tools cat ./peer-info.yaml > /root/aptos/identity/peer-info.yaml
    
    nano /root/aptos/public_full_node.yaml
    
    # 아래 캡처화면 예시에 표시된 부분을 참고하여 아래 본인의 3개 파일의 정보를 복사하여 기입 및 수정
    
    # 위 명령으로 한 개의 터미널은 public_full_node.yaml 파일을 열어둔 채로 두고, 
    # 또 다른 하나의 터미널 창을 열어 서버에 접속한 후 아래 3개의 명령을 실행하여 화면 출력 결과를 복사한 후 
    # public_full_node.yaml 파일 내 정확한 위치에 붙여넣거나 기존 내용을 대체 수정한다
    
    # genesis.blob 파일 경로는 아래 예시와 동일하게 수정
    
    # 그리고 127.0.0.1로 설정된 부분이 보일 경우 아래 예시와 동일하게 모두 0.0.0.0 으로 수정
    
    cat /root/aptos/waypoint.txt
    cat /root/aptos/identity/private-key.txt
    cat /root/aptos/identity/peer-info.yaml
    
    # 편집 완료 후 컨트롤+c 누르고 다시 y 누르고 다시 엔터를 치면 편집기를 빠져나간다
    

    각 행들의 첫 시작지점 위치는 매우 민감하므로 정확하게 맞추도록 한다

    각 행들의 첫 시작지점 위치는 매우 민감하므로 정확하게 맞추도록 한다

    밑 줄 표시된 지점의 코드가 peer id 임

    밑 줄 표시된 지점의 코드가 peer id 임

    화면 출력으로부터 직접 복사할 때 끝자리 위치 주의할 것

    화면 출력으로부터 직접 복사할 때 끝자리 위치 주의할 것

    # public_full_node.yaml 편집을 완성한 후 도커 모드 운영에만 필요한 docker-compose.yaml 파일을 아래 명령으로 연다
    # 9101 8080 6180 3개의 port가 오픈 포트로 설정되어 있는 지 확인 후 만약 누락된 포트가 있다면 아래 예시와 동일하게 추가해준다
    
    nano docker-compose.yaml
    
    # 편집 완료 후 컨트롤+c 누르고 다시 y 누르고 다시 엔터를 치면 편집기를 빠져나간다
    

    위 설정 내용 중에 3개 port가 모두 포함되지 못하면 테스트 사이트에서 NG로 나타나며 모니터링이 불가능하게 됨

    위 설정 내용 중에 3개 port가 모두 포함되지 못하면 테스트 사이트에서 NG로 나타나며 모니터링이 불가능하게 됨

    # ~~블록체인 네트워크에 접속하여 싱크를 진행하기 위해서는 접속 대상노드가 필요함~~
      (현재는 어드민 디폴트 접속 대상인 어드민 노드 연결 상태가 양호하여 접속 지연 및 싱크 불능 현상이 개선됨 )
    # public_full_node.yaml 파일 내 identity: 항목 아래 해당하는 자신의 노드 정보를 기입한다
    # 만약 alan yoon 시드를 포함하고 싶으면 아래 시드 정보를 파일 내 seed: 아래 기입하고 저장한다
    # 정보를 기입할 때는 각 행의 첫 시작 지점은 아래 이미지와 정확히 동일하게 일치시켜야 한다
    
    a950c9360c02c5ef9a02ad9a097f514b97f41a7499a2a798c530d610d3633e5c:
        addresses:
        - "/ip4/180.71.88.95/tcp/6180/noise-ik/a950c9360c02c5ef9a02ad9a097f514b97f41a7499a2a798c530d610d3633e5c/handshake/0"
        role: "Upstream"
    

    seeds: 와 identity: 항목 그 사이에 위 2개의 시드 정보를 복사하여 붙여넣는다

    seeds: 와 identity: 항목 그 사이에 위 2개의 시드 정보를 복사하여 붙여넣는다

    # 도커를 기동하게 되면 노드가 실행됨
    
    docker compose up -d
    
    # 업데이트 또는 재설치 직후 노드 리스타트 시에는 아래 명령으로 도커 자체를 완전히 다운시켰다가 업시키는 것이 바람직함
    
    docker compose down
    docker compose up -d
    

    To print this command list:

    To stop the Aptos node:

    docker compose stop
    

    To start the Aptos node:

    docker compose start
    

    To check the Aptos node Logs: >> To stop input ctrl+c

    docker compose logs -f --tail 1000
    

    To check outbound connection status: >> If number is not 0, it's ok!

    curl 127.0.0.1:9101/metrics 2> /dev/null | grep 'aptos_connections{direction=\\"outbound\\"'
    

    To check syncd status: >> The third [synced] number is matter!

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

    To check docker’s cpu and memory utilization status: >> CPU % and MEM % is matter!!

    docker stats --no-stream
    

1-2. 컴파일링 모드

sudo su
cd
mkdir -p /opt/aptos/data aptos aptos/identity
git clone <https://github.com/aptos-labs/aptos-core.git>
cd aptos-core
git checkout origin/devnet
./scripts/dev_setup.sh
source ~/.cargo/env
wget <https://github.com/aptos-labs/aptos-core/releases/download/aptos-cli-devnet-2022-06-09/aptos-cli-0.1.2-Ubuntu-x86_64.zip>
unzip aptos-cli-0.1.2-Ubuntu-x86_64.zip -d ~/bin/aptos
chmod +x ~/bin/aptos
rm aptos-cli-0.1.2-Ubuntu-x86_64.zip
curl <https://sh.rustup.rs> -sSf | sh
source ~/.cargo/env

cargo build -p aptos-node --release
cargo build -p aptos-operational-tool --release
rm -rf /usr/local/bin/aptos-node && rm -rf /usr/local/bin/aptos-operational-tool
mv /root/aptos-core/target/release/aptos-node /usr/local/bin
mv /root/aptos-core/target/release/aptos-operational-tool /usr/local/bin
/usr/local/bin/aptos-operational-tool generate-key --encoding hex --key-type x25519 --key-file /root/aptos/identity/private-key.txt
/usr/local/bin/aptos-operational-tool extract-peer-from-file --encoding hex --key-file /root/aptos/identity/private-key.txt --output-file /root/aptos/identity/peer-info.yaml
cp /root/aptos-core/config/src/config/test_data/public_full_node.yaml /root/aptos
wget -P /root/aptos <https://devnet.aptoslabs.com/genesis.blob>
wget -P /root/aptos <https://devnet.aptoslabs.com/waypoint.txt>
nano /root/aptos/public_full_node.yaml

# 아래 캡처화면 예시에 표시된 부분을 참고하여 아래 본인의 3개 파일의 정보를 복사하여 기입 및 수정

# 위 명령으로 한 개의 터미널은 public_full_node.yaml 파일을 열어둔 채로 두고, 
# 또 다른 하나의 터미널 창을 열어 서버에 접속한 후 아래 3개의 명령을 실행하여 화면 출력 결과를 복사한 후 
# public_full_node.yaml 파일 내 정확한 위치에 붙여넣거나 기존 내용을 대체 수정한다

# genesis.blob 파일 경로는 아래 예시와 동일하게 수정

# 그리고 127.0.0.1로 설정된 부분이 보일 경우 아래 예시와 동일하게 모두 0.0.0.0 으로 수정

cat /root/aptos/waypoint.txt
cat /root/aptos/identity/private-key.txt
cat /root/aptos/identity/peer-info.yaml

# 편집 완료 후 컨트롤+c 누르고 다시 y 누르고 다시 엔터를 치면 편집기를 빠져나간다

밑줄 친 부분은 경로 수정, 박스 영역은 모두 추가하여야 함. 각 행들의 시작점 위치와 배치는 매우 민감하므로 위 예시화면과 정확하게 맞추어야 함.

밑줄 친 부분은 경로 수정, 박스 영역은 모두 추가하여야 함. 각 행들의 시작점 위치와 배치는 매우 민감하므로 위 예시화면과 정확하게 맞추어야 함.

윗쪽 코드가 peer id 임

윗쪽 코드가 peer id 임

출력 끝자리 부분 유의하여 복사할 것

출력 끝자리 부분 유의하여 복사할 것

# ~~블록체인 네트워크에 접속하여 싱크를 진행하기 위해서는 접속 대상노드가 필요함~~
  (현재는 어드민 디폴트 접속 대상인 어드민 노드 연결 상태가 양호하여 접속 지연 및 싱크 불능 현상이 개선됨 )
# public_full_node.yaml 파일 내 identity: 항목 아래 해당하는 자신의 노드 정보를 기입한다
# 만약 alan yoon 시드를 포함하고 싶으면 아래 시드 정보를 파일 내 seed: 아래 기입하고 저장한다
# 정보를 기입할 때는 각 행의 첫 시작 지점은 아래 이미지와 정확히 동일하게 일치시켜야 한다

a950c9360c02c5ef9a02ad9a097f514b97f41a7499a2a798c530d610d3633e5c:
    addresses:
    - "/ip4/180.71.88.95/tcp/6180/noise-ik/a950c9360c02c5ef9a02ad9a097f514b97f41a7499a2a798c530d610d3633e5c/handshake/0"
    role: "Upstream"

seeds: 와 identity: 항목 그 사이에 위 2개의 시드 정보를 복사하여 붙여넣는다

seeds: 와 identity: 항목 그 사이에 위 2개의 시드 정보를 복사하여 붙여넣는다

# ssh 터미널 접속을 끊더라도 계속 구동토록 하기 위해 아래 스크립트 모두 한번에 복사하여 입력하여 백그라운드 서비스를 만든다
 
tee /root/aptos-fullnode.service > /dev/null <<EOF

# 위 명령을 입력한 후 > 형태의 프롬프트가 나오면 아래 내용을 모두 복사하여(EOF 까지) 입력하면 서비스 작성 완료

[Unit]
Description=Aptos Binary Node
[Service]
User=$USER
Type=simple
ExecStart=/usr/local/bin/aptos-node --config $HOME/aptos/public_full_node.yaml
Restart=always
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF

# 작성된 서비스를 시스템 폴더로 이동시킴

mv /root/aptos-fullnode.service /etc/systemd/system
# 아래 스크립트를 한 줄씩 순서대로 입력하여 노드를 시스템 백그라운드 서비스 모드로 스타트

systemctl restart systemd-journald
systemctl daemon-reload
systemctl enable aptos-fullnode
systemctl restart aptos-fullnode

# 아래 명령을 입력하여 로그 확인

journalctl -u aptos-fullnode -f

# 로그 출력 화면에서 빠져나올려면 컨트롤+c 를 입력하거나 터미널 창을 닫으면 됨 ( 노드는 계속 구동함 )

To print this command list:

sh ~/aptos/command_alan_yoon.sh  or  sh ~/aptos/command*

To stop the Aptos node:

systemctl stop aptos-fullnode

To start the Aptos node:

systemctl start aptos-fullnode

To check the Aptos node Logs: >> To stop input ctrl+c

journalctl -u aptos-fullnode -f

To check outbound connection status: >> If number is not 0, it's ok!

curl 127.0.0.1:9101/metrics 2> /dev/null | grep 'aptos_connections{direction=\\"outbound\\"'

To check syncd status: >> The third [synced] number is matter!

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

To check disk used status:

sh ~/aptos/disk.sh