# Sui全节点安装教程

By [Web3Study](https://paragraph.com/@rabbitverse) · 2023-03-19

---

硬件要求
----

*   CPU：>= 2
    
*   RAM: >= 8G
    
*   Storages: >= 50G
    

> Tips: 按照官方说法，每两周会重置一次数据

软件要求
----

操作系统建议采用Linux，发行版建议采用 `Debian` 或 `Ubuntu`，官方测试的版本是：[Ubuntu version 18.04 (Bionic Beaver)](https://releases.ubuntu.com/18.04/)，建议使用 Ubunt 18.04。

### 依赖包（可选：需要本地构建则安装）

    $ apt-get update \
        && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC && \
        apt-get install -y --no-install-recommends \
        tzdata \
        git \
        ca-certificates \
        curl \
        build-essential \
        libssl-dev \
        pkg-config \
        libclang-dev \
        cmake
    

配置全节点
-----

配置全节点有两种方式，第一种方式是通过 `Docker`，第二种方式采用 `源码编译`

Docker方式
--------

下面介绍采用docker的方式运行全节点

### 安装 docker 运行环境

#### 第一步：移除旧版本（可选）

如果系统自带了docker，建议删除，因为系统自带的docker一般版本都比较低，删除命令如下：

    $ sudo apt-get remove docker docker-engine docker.io containerd runc
    

#### 第二步：设置docker官方仓库

1、更新apt源，并安装相关工具

    $ sudo apt-get update &&apt-get install ca-certificates curl gnupg lsb-release
    

2、增加 docker 官方 GPG key

     sudo mkdir -p /etc/apt/keyrings
     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    

3、使用以下命令设置存储库

    $ echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    

#### 第三步： 安装docker engine

1、更新 `apt` 包索引，以及安装docker、containerd、以及docker-compose

    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

#### 第四步：安装 docker-compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    

#### 第五步：查看docker 服务运行状态

    root@sui-devnet-fullnode:~# systemctl status docker -l
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2022-07-19 07:01:50 UTC; 1min 24s ago
         Docs: https://docs.docker.com
     Main PID: 4603 (dockerd)
        Tasks: 9
       CGroup: /system.slice/docker.service
               └─4603 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.676161749Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.676174578Z" level=warning msg="Your kernel does not support cgroup blkio weight"
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.676245166Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.676568360Z" level=info msg="Loading containers: start."
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.788875689Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP ad
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.861608788Z" level=info msg="Loading containers: done."
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.878429267Z" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=overlay2 version=20.10.17
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.878611210Z" level=info msg="Daemon has completed initialization"
    Jul 19 07:01:50 instance-1 systemd[1]: Started Docker Application Container Engine.
    Jul 19 07:01:50 instance-1 dockerd[4603]: time="2022-07-19T07:01:50.907320312Z" level=info msg="API listen on /var/run/docker.sock"
    

### 配置 Sui Full Node

首先建议创建一个目录用于存放相关的配置文件，这里我会创建一个 `/blockchain/sui/devtest` 目录，并 `cd /blockchain/sui/devnet` 进入该目录

    root@sui-devnet-fullnode:~# mkdir -p /blockchain/sui/devtest
    root@sui-devnet-fullnode:~# cd !$
    cd /blockchain/sui/devtest
    root@sui-devnet-fullnode:/blockchain/sui/devtest# pwd
    /blockchain/sui/devtest
    root@sui-devnet-fullnode:/blockchain/sui/devtest# 
    

> Tips: 后续所有的操作均在该目录中执行

#### 第一步： 配置 tmux（可选）

为了防止由于网络中断导ssh断开，我一般会使用 tmux工具进行session的管理，防止网络断开。

1、安装 tmux

2、创建 session

    tmux new -s "sui-devnet-docker-full-node"
    

> Tips: 命名规则 项目-网络-运行环境-服务

#### 第二步：下载 docker-compose 配置文件

    wget https://raw.githubusercontent.com/MystenLabs/sui/main/docker/fullnode/docker-compose.yaml
    

#### 第三步：下载全节点配置文件

下载配置文件并修改监听的地址

    wget https://github.com/MystenLabs/sui/raw/main/crates/sui-config/data/fullnode-template.yaml
    sed -i 's/127.0.0.1:9184/0.0.0.0:9184/' fullnode-template.yaml 
    sed -i 's/127.0.0.1:9000/0.0.0.0:9000/' fullnode-template.yaml
    

#### 第四步：下载创世文件

    wget https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob
    

### 第五步：启动 full node

    docker-compose up
    

> Tips: 这个过程会同步全网的交易信息，需要等待同步完成。

### 测试节点是否正常启动

一旦全节点启动并运行，测试一些 JSON-RPC 接口。

*   获取最近的五笔交易
    

    root@sui-devnet-fullnode:~# curl --location --request POST 'http://127.0.0.1:9000/'     --header 'Content-Type: application/json'     --data-raw '{ "jsonrpc":"2.0", "id":1, "method":"sui_getRecentTransactions", "params":[5] }' | jq
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   384  100   305  100    79   148k  39500 --:--:-- --:--:-- --:--:--  375k
    {
      "jsonrpc": "2.0",
      "result": [
        [
          5453,
          "zJOQcvMU4pxDlb6OdyCFBUzUKn7Uo24ItMUkJvpwTDY="
        ],
        [
          5454,
          "LBxEhZ0qFFNHJYHaAtYEeAkD/JhFyuKVqIw/0Xuy42M="
        ],
        [
          5455,
          "+6c8+hkWruOBgCqnh/sL2M7doqRkocR3OQII+8F8Jo8="
        ],
        [
          5456,
          "BUuM254vnSaSLKl+9lxXvxie0Yh0FqxqXnXLQRvYe9Y="
        ],
        [
          5457,
          "76Vc5FiTd28mK43XM4FiRZNAdYoqXri5da7KuTt3R8c="
        ]
      ],
      "id": 1
    }
    

*   获取特定的交易详情
    

    curl --location --request POST 'http://127.0.0.1:9000/' \
        --header 'Content-Type: application/json' \
        --data-raw '{ "jsonrpc":"2.0", "id":1, "method":"sui_getTransaction", "params":["$RECENT_TXN_FROM_ABOVE"] }'
    

### 常用 docker 命令

#### 后台方式启动docker

    docker-compose up -d
    

#### 停止节点

    docker-compose stop
    

#### 重置环境

重置之前建议备份您的相关配置文件

    docker-compose down --volumes
    

### 检查运行状态

*   获取容器id
    

*   进入容器
    

    docker exec -it -u 0 $CONTAINER_ID /bin/bash
    

*   检查数据库
    

    ls -la suidb/
    

### 调用本地 RPC 连接问题

更新全节点配置中的 json-rpc-address 以监听所有地址：

    sed -i 's/127.0.0.1/0.0.0.0/' fullnode-template.yaml
    
    -json-rpc-address: "127.0.0.1:9000"
    +json-rpc-address: "0.0.0.0:9000"
    

自动安装脚本
------

针对以上的步骤，本人编写了一个脚本用于自动安装，请了解的朋友自行安装。

    https://raw.githubusercontent.com/iopssre/sui-install/master/sui-full-node-install.sh

---

*Originally published on [Web3Study](https://paragraph.com/@rabbitverse/sui)*
