Story logo

Story

mainnet
Chain ID
story-1
Node
v1.8.0

πŸ“š Node installation

Update packages

sudo apt update && sudo apt upgrade -y

Install dependencies

sudo apt install curl tar wget clang pkg-config libssl-dev libleveldb-dev jq build-essential bsdmainutils git make ncdu htop screen unzip bc lz4 gcc -y

Install Go

cd $HOME && \
ver="1.22.5" && \
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" && \
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
source $HOME/.bash_profile && \
go version

The output should be: go version go1.22.5 linux/amd64

Download binary for work

git clone https://github.com/piplabs/story
cd story
git checkout v1.8.0
go build -o story ./client
mv $HOME/story/story $HOME/go/bin/
story version

The output should be: Version v1.8.0

cd $HOME
wget -O geth https://github.com/piplabs/story-geth/releases/download/v1.2.0/geth-linux-amd64
chmod +x $HOME/geth
mv $HOME/geth ~/go/bin/

Specify variables, for ease of work

echo 'export story_moniker="Validator_name"' >> $HOME/.profile
echo 'export story_port="111"' >> $HOME/.profile
source $HOME/.profile

Download Genesis

cd $HOME
wget -O genesis.json "https://snapshots.stakeup.tech/story/genesis.json" --inet4-only
mv genesis.json ~/.story/story/config

Initialize the node

story init $story_moniker --network story

Set the settings

peers=f443f43aac547cb35eed381d828433c2a15de3b0@152.53.210.231:26656,bc0ab3d745c235087eb9d0164936a7093c0149b7@69.67.149.105:26656,e9733f8b2cf170c0be1a5443064eab42abc05a0a@67.213.124.67:26656,ef8d211e08ca33193c2dff535ec5a29902e2b3f4@story-mainnet-rpc.itrocket.net:45656,9d56213f3e278ee8c0aae5aab4aee670ad833f03@135.181.230.111:26656,5da018ac0e41b69d1c195f040b474e81f09a249b@story-mainnet-cosmos-rpc.crouton.digital:26656,ef8d211e08ca33193c2dff535ec5a29902e2b3f4@65.109.36.88:45656,2d413dc6e361286b05aa8f2c76f1fbbb6691fc73@213.133.109.166:26656,676335cdbce6a2923f90290e7de2058b169a64cd@217.182.198.92:32425,9dc59634f2dc5da4c19bc3a12cd5131cc5e80ac8@5.9.106.71:22425,90bd163b57ebd020a66eb20b0cdc70ca0b4113bf@65.108.74.54:22425,9e44c3206ced9566beaa77207f327448d52f97e9@65.21.171.53:1690,fea4d79b1686ad7c53651721ad8f5e256e02f874@148.72.141.192:26646,6218386626cbf804372246fc4cd7734254cae054@65.109.66.161:45656,e4656f3eea64c17c216f8a88501d8b277081c49d@168.119.10.134:26656,0e491ac6074186875a67b107fb24378b2d848eca@167.235.13.19:29656 && \
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.story/story/config/config.toml && \
seeds="6b0ffcce9b59b91ceb8eea5d4599e27707e3604a@seeds.stakeup.tech:10221" && \
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.story/story/config/config.toml

Optional Settings

Memory optimization
cd $HOME/.story/story/config && \
indexer="null" && \
snapshot_interval="0" && \
pruning="custom" && \
sed -i.bak -e "s/^indexer *=.*/indexer = \"$indexer\"/" config.toml && \
sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" story.toml && \
sed -i.bak -e "s/^pruning *=.*/pruning = \"$pruning\"/" story.toml
Change port
cd $HOME/.story/story/config && \
sed -i.bak \
    -e "s/:\s*26656/:${story_port}56/g" \
    -e "s/:\s*26657/:${story_port}57/g" \
    -e "s/:\s*26658/:${story_port}58/g" \
    -e "s/:\s*26660/:${story_port}59/g" \
    config.toml

sed -i.bak \
    -e "s/:\s*1317/:${story_port}17/g" \
    -e "s/:\s*8551/:${story_port}51/g" \
    story.toml

Create a service file for geth

sudo tee /etc/systemd/system/story-geth.service > /dev/null <<EOF
[Unit]
Description=story-geth
After=network-online.target

[Service]
User=$USER
ExecStart=$(which geth) --story --syncmode full --http --http.api eth,net,web3,engine --http.vhosts '*' --http.addr 0.0.0.0 --http.port ${story_port}45 --authrpc.port ${story_port}51 --ws --ws.api eth,web3,net,txpool --ws.addr 0.0.0.0 --ws.port ${story_port}46
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload &&
sudo systemctl enable story-geth &&
sudo systemctl restart story-geth && sudo journalctl -u story-geth -f -o cat

Create a service file for story

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

[Service]
User=$USER
WorkingDirectory=$HOME/.story/story
ExecStart=$(which story) run
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload &&
sudo systemctl enable story &&
sudo systemctl restart story && sudo journalctl -u story -f -o cat