June 12

Гайд 0g Storage Node

Установка 0g Storage Node на бюджетный сервер

Минимальные официальные требования для ноды: 8 CPU 32 RAM и 500-1000GB свободного места.
Такой сервер не каждый захочет брать под ноду, поэтому данный гайд сделан под сервер 8 CPU 16 RAM и 250 GB свободного места.
Обойдётся такой сервер в 1550р в месяц. Можно выбрать любую доступную страну, DE-TEMP, SWE-TEMP или FI-TEMP (Самые последние в разделе AMD Ryzen)

При регистрации у хостера Play2Go вы получаете +10% к сумме первого пополнения. А так же используйте промокод SNGDAO - он даст +5% на повторное пополнение счета🔥

Используемые нодой порты: 5678, 5679


Подготовка:

Создаем новый кошелек для ноды
Идем в кран https://faucet.0g.ai/
получаем тестовые токены или можно перевести с другого кошелька 0.05-0.1 токенов

Тут можно добавить сеть в кошелек https://docs.0g.ai/developer-hub/testnet/testnet-overview

Установка


1) Обновляем пакеты, если сервер новый или давно не обновляли

sudo apt-get update && sudo apt-get upgrade -y

2) Зависимости:

sudo apt install curl iptables build-essential git wget lz4 jq make cmake gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev screen ufw -y

3) Ставим Rust

curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
rustc --version

4) Ставим GO

Копируем целиком

wget https://go.dev/dl/go1.24.3.linux-amd64.tar.gz && \
sudo rm -rf /usr/local/go && \
sudo tar -C /usr/local -xzf go1.24.3.linux-amd64.tar.gz && \
rm go1.24.3.linux-amd64.tar.gz && \
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc && \
source ~/.bashrc
go version

5) Ставим скрин если нет

apt install screen -y

Создаем скрин сессию

screen -S ogstor

6) Скачиваем ноду

git clone https://github.com/0glabs/0g-storage-node.git
cd 0g-storage-node && git checkout v1.0.0 && git submodule update --init
cargo build --release

7) Настраиваем конфиг:

Удаляем дефолтный

rm -rf $HOME/0g-storage-node/run/config.toml

Заменяем на этот конфиг:

curl -o $HOME/0g-storage-node/run/config.toml https://raw.githubusercontent.com/ruspacer/0g/refs/heads/main/config.toml

8) Редактируем конфиг:

nano $HOME/0g-storage-node/run/config.toml

Находим

И вставляем вместо ПРИВАТНЫЙ_КЛЮЧ_КОШЕЛЬКА свой приватный ключ, который будет использоваться нодой.

Для сохранения файла нажимает CTRL+X потом Y и Enter

9) Создаем файл Systemd (копируем целиком)

sudo tee /etc/systemd/system/zgs.service > /dev/null <<EOF
[Unit]
Description=ZGS Node
After=network.target

[Service]
User=$USER
WorkingDirectory=$HOME/0g-storage-node/run
ExecStart=$HOME/0g-storage-node/target/release/zgs_node --config $HOME/0g-storage-node/run/config.toml
Restart=on-failure
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF


10) Запускаем ноду:

sudo systemctl daemon-reload && sudo systemctl enable zgs && sudo systemctl start zgs


Смотрим статус:

sudo systemctl status zgs

На скрине пример рабочего

Посмотреть полные логи:

tail -f ~/0g-storage-node/run/log/zgs.log.$(TZ=UTC date +%Y-%m-%d)

Но это нужно обычно в случае, если есть проблемы в статусе

Основные логи которые нам нужны:

 while true; do     response=$(curl -s -X POST http://localhost:5678 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"zgs_getStatus","params":[],"id":1}');     logSyncHeight=$(echo $response | jq '.result.logSyncHeight');     connectedPeers=$(echo $response | jq '.result.connectedPeers');     echo -e "logSyncHeight: \033[32m$logSyncHeight\033[0m, connectedPeers: \033[34m$connectedPeers\033[0m";     sleep 5; done

результат

Тут вводим адрес своего кошелька и увидим транзакции https://chainscan-galileo.bangcode.id/

Статистику по ноде теперь можно смотреть тут: https://0g-tx.maouam.nodelab.my.id/

Важно, чтобы после запуска ноды у вас появилась 1 транзакция - активация ноды.
По наградам: В данный момент количество транзакций с наградами начисляются рандомно. У вас может за день прийти несколько наград или же 1 за 2 суток.

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

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

sudo systemctl stop zgs

Запустить ноду:

sudo systemctl start zgs

Посмотреть подключения к ноде:

while true; do     response=$(curl -s -X POST http://localhost:5678 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"zgs_getStatus","params":[],"id":1}');     logSyncHeight=$(echo $response | jq '.result.logSyncHeight');     connectedPeers=$(echo $response | jq '.result.connectedPeers');     echo -e "logSyncHeight: \033[32m$logSyncHeight\033[0m, connectedPeers: \033[34m$connectedPeers\033[0m";     sleep 5; done

Посмотреть статус ноды:

sudo systemctl status zgs

Посмотреть полные логи:

tail -f ~/0g-storage-node/run/log/zgs.log.$(TZ=UTC date +%Y-%m-%d)

🧬Обновление ноды

1️⃣ Перед обновлением делаем бекап файла с конфигом:

cd $HOME; mv $HOME/0g-storage-node/run/config.toml $HOME/config_backup.toml

2️⃣ Останавливаем ноду:

sudo systemctl stop zgs

3️⃣ Переходим в папку и обновляем:

cd $HOME/0g-storage-node; git fetch --all --tags && git checkout v1.1.0 && git submodule update --init && cargo build --release

4️⃣ Возвращаем файл с конфигом наместо:

mv $HOME/config_backup.toml $HOME/0g-storage-node/run/config.toml

5️⃣ Проверяем версию ноды: git describe --tag

6️⃣ Запускаем ноду:

sudo systemctl start zgs

Удаление ноды:

1) Остановить ноду:

sudo systemctl stop zgs

2) Удалить файлы:

sudo systemctl disable zgs
sudo rm /etc/systemd/system/zgs.service
rm -rf $HOME/0g-storage-node

Дополнительные настройки:

🟠 Как изменить RPC?

1) Открываем файл с конфигом

nano $HOME/0g-storage-node/run/config.toml

2) Находим в конфиге такой пункт:

И вставляем ссылку на другую RPC

3) Сохраняем конфиг, через CTRL+X далее Y и далее enter

4) Перезапускаем ноду

Список RPC по скорости и тд, можно посмотреть тут https://www.astrostake.xyz/0g-status/

🟠 Как задействовать больше свободного места на сервере?

По умолчанию конфиг настроен под ~200 свободного места на сервере.
Чтобы увеличить этот лимит:

1) Открываем файл с конфигом

nano $HOME/0g-storage-node/run/config.toml

2) Находим в конфиге такой пункт:

Значение 1000000000 соответствует 256 GB свободного места на сервере. Если вы замените его на 2000000000 это будет ранятся ~500GB это верхний лимит, по факту нода пытается использовать примерно половину от максимума.
После того как вы рассчитали и ввели желаемый лимит для вашего сервере, сохраните ваш конфиг, через CTRL+X далее Y и далее enter

3)Перезапускаем ноду.

Подписываемся на ТГ канал SNG DAO, чтобы ничего не пропустить!
Если есть вопросы или хотите обсудить заходите к нам в чат.