SUI Full Node Guide
Требования к серверу
Установка
Подготовка сервера(копируем все вместе, вводим одной командой):
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
apt install cargo #отвечаем y
Устанавливает rust версии 1.62
curl https://sh.rustup.rs -sSf | sh #отвечаем y, выбираем пункт 1 source "$HOME/.cargo/env"
Далее нам необходимо создать форк на Git Hub(нужно быть уже зарегистрированным пользователем). Идем на этот сайт и нажимаем кнопку "fork" и в следующем окне подтверждаем копирование.
git clone https://github.com/<YOUR-GITHUB-USERNAME>/sui.git #<YOUR-GITHUB-USERNAME> - заменить на Ваше имя пользователя на GitHub cd sui git remote add upstream https://github.com/MystenLabs/sui cp crates/sui-config/data/fullnode-template.yaml fullnode.yaml rm -rf /root/sui/suidb/ wget -O /root/sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob git fetch upstream git stash git checkout -B devnet --track upstream/devnet cargo run --release --bin sui-node -- --config-path /root/sui/fullnode.yaml
Закрыть терминал и запустить сервер заново
cd sui cargo build --release mv ~/sui/target/release/sui /usr/local/bin/
vi /root/sui/fullnode.yaml #меняем адреса и путь к файлу genesis.blob на такие, как ниже на скрине #ВАЖНО! На скрине не отображено, но необходимо поменять еще и вторую строку: #Вместо "suidb" написать "$HOME/sui/suidb"
sudo ufw allow 9000 sudo ufw allow 9184 sudo ufw enable
sudo tee /etc/systemd/system/suid.service > /dev/null <<EOF
Далее копируем одной командой:
[Unit] Description=Sui Node After=network.target [Service] User=$USER Type=simple ExecStart=/root/sui/target/release/sui-node --config-path /root/sui/fullnode.yaml Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload sudo systemctl enable suid sudo systemctl restart suid sudo systemctl status suid
Нода установлена!
Как проверить работает ли нода?
Идем на этот сайт и вводим айпи своего сервера, нажимаем "connect", работающая нода выглядит так:
Для регистрации в тестнете необходимо заполнить форму !
Как удалить базу данных
sudo systemctl stop suid sudo systemctl disable suid
sudo rm -rf $HOME/sui/suidb
sudo systemctl daemon-reload sudo systemctl enable suid sudo systemctl restart suid sudo systemctl status suid
Дополнительные команды
sui --version
journalctl -u suid -f -o cat
Обновление (18.08)
Теперь для успешного обновления ноды тем, кто устанавливал по офф гайду (это мы) нужно:
- Иметь созданную папку .sui в которой будет лежать fullnode.yaml и genesis. blob
- В файле fullnode.yaml должен быть прописан путь к genesis.blob
sudo systemctl stop suid sudo systemctl disable suid
Создаем директорию и перемещаем в нее fullnode.yaml и genesis.blob:
cd $HOME mkdir .sui mv /root/sui/fullnode.yaml /root/.sui/ mv /root/sui/genesis.blob /root/.sui/
sed -i.bak " s/genesis-file-location:.*/genesis-file-location: \"\/root\/.sui\/genesis.blob\"/" /root/.sui/fullnode.yaml
rm -rf /root/sui/suidb/
Удалить старый генезис и скачать новый:
wget -O /root/.sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob
cd sui git fetch upstream git stash git checkout -B devnet --track upstream/devnet
cargo run --release --bin sui-node -- --config-path /root/.sui/fullnode.yaml
sudo systemctl daemon-reload sudo systemctl enable suid sudo systemctl restart suid sudo systemctl status suid
Обновление (30.08)
sudo systemctl stop suid sudo systemctl disable suid
cd .sui rm -rf suidb
Удалить старый генезис и скачать новый:
wget -O /root/.sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob
cd /root/sui git fetch upstream git stash git checkout devnet-0.8.0
Билд нового бинарника(вы должны находиться в директории sui для запуска этой команды):
cargo run --release --bin sui-node -- --config-path /root/.sui/fullnode.yaml
sudo systemctl daemon-reload sudo systemctl enadle suid sudo systemctl start suid sudo systemctl status suid