Fullnode Install

This manual offers a detailed, step-by-step approach for establishing and operating a full node on the Junction, utilizing pre-assembled binaries. Designed to be user-friendly, it caters to both newcomers and seasoned node operators, ensuring an easy-to-follow procedure.

tip: the following commands are executed as root by default. If you are not a root user, please prepend the commands with sudo

Requirements

The minimum hardware requirements for running an Junction node are:

Install Tools

apt -q update
apt -qy install curl git jq lz4 build-essential aria2 unzip wget

rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.22.0.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/gobinpath.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | sudo tee /etc/profile.d/gopath.sh)

Clone and Build Junction

export TAG=v0.1.0
wget https://github.com/airchains-network/junction/releases/download/$TAG/junctiond
chmod +x junctiond && mv junctiond /usr/local/bin

junctiond version --long | grep -e version -e commit

Junction basic setup

# Set home dir, example: /data/junction
export DIR=/data/junction
export Moniker="xx"
mkdir -pv $DIR
ln -sv $DIR $HOME/.junction

# A moniker is a human-readable name for your node. Moniker can contain only ASCII characters, and cannot exceed 70 characters.
junctiond init $Moniker

Set Custom Port

Get Script for <portset.sh>

export DIR=$HOME/.junction
export MIN_GAS=0amf
export NUM=2

bash portset.sh $DIR $MIN_GAS $NUM

Genesis File

export DIR=$HOME/.junction
export TAG=v0.1.0
curl -Ls https://github.com/airchains-network/junction/releases/download/$TAG/genesis.json > \
         $DIR/config/genesis.json

Add Seeds

export DIR=$HOME/.junction
export SEEDS="[email protected]:26656,[email protected]:24656"
sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$SEEDS\"|" $DIR/config/config.toml    

Address Book

export DIR=$HOME/.junction
rm -rf $DIR/config/addrbook.json
curl -Ls https://snapshots2.stakerhouse.com/addrbook/airchains/addrbook.json > $HOME/.junction/config/addrbook.json

Create Service with Cosmovisor

DIR=$HOME/.junction
BIN=$(which junctiond)
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
mkdir -pv $DIR/cosmovisor/genesis/bin
ln -sv $DIR/cosmovisor/genesis $DIR/cosmovisor/current
cp $BIN $DIR/cosmovisor/genesis/bin/

tee /etc/systemd/system/junctiond.service > /dev/null << EOF
[Unit]
Description=junction node service
After=network-online.target

[Service]
User=$USER
Restart=on-failure
Type=simple
ExecStart=$(which cosmovisor) run start
WorkingDirectory=$DIR
SyslogIdentifier=junctiond
LimitNOFILE=65545
Environment="DAEMON_NAME=junctiond"
Environment="DAEMON_HOME=$DIR"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="UNSAFE_SKIP_BACKUP=true"

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable junctiond.service
systemctl start junctiond.service
journalctl -u junctiond.service -f -o cat

Last updated