Skip to main content

Installation

Minimum hardware requirement

4-8 Cores, 16G Ram, 500G NVME, Ubuntu 22.04 - 24.04

Installation of required packages

sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y

Installation GO

cd ~
VER="1.23.4" # Make sure that this version does not broke any other apps you run!
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin

Downloading and installing node

git clone https://github.com/gnolang/gno && cd $HOME/gno
git checkout chain/test13
make -C gno.land install.gnoland install.gnokey

gnoland version
gnokey --help

Configuration files

cd $HOME/gno
gnoland config init
gnoland secrets init

Chane Your Moniker

gnoland config set moniker "<moniker>"

Set node configuration

SERVER_IP=$(curl -4 -s ifconfig.me)
gnoland config set p2p.external_address "$SERVER_IP:26656"
gnoland config set p2p.pex true

# consensus settings
gnoland config set application.prune_strategy syncable
gnoland config set consensus.timeout_commit 3s
gnoland config set consensus.peer_gossip_sleep_duration 10ms
gnoland config set p2p.flush_throttle_timeout 10ms

# performance
gnoland config set mempool.size 10000
gnoland config set p2p.max_num_outbound_peers 40

Move folder and set environment variable

mv $HOME/gno/gnoland-data $HOME/gnoland-data
echo 'export GNOROOT=$HOME/gno' >> ~/.bashrc
source ~/.bashrc

Live Peers:

Loading peers...

Downloading genesis

cd $HOME/gnoland-data/config
wget -O genesis.json https://github.com/gnolang/gno/releases/download/chain/test13/genesis.json
shasum -a 256 genesis.json
# 56f56e135174feff9f93283d5ec7e4ec955cd5155108aff5009d4fd51c5adaf2

Download snapshots

curl https://snapshots.nodesync.top/Testnet/Gno/gnoland_snap.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/gnoland-data

Creating service file

sudo tee /etc/systemd/system/gnoland.service > /dev/null <<EOF
[Unit]
Description=Gnoland node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME
Environment=HOME=$HOME
Environment=GNOROOT=$HOME/gno
ExecStart=$(which gnoland) start \
--chainid test-13 \
--genesis $HOME/gnoland-data/config/genesis.json \
--data-dir $HOME/gnoland-data/ \
--skip-genesis-sig-verification \
--log-level info
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

Start node

sudo systemctl daemon-reload
sudo systemctl enable gnoland
sudo systemctl start gnoland && sudo journalctl -u gnoland -f --no-hostname -o cat