Shaurya Chopra
  • Introduction
  • Story Testnet (Odyssey)
    • Snapshot
    • Live Peers
    • Endpoints (Odyssey)
    • Auto Installation
    • Manual Installation (Cosmovisor)
    • Story Dashboard
    • Telegram Bot
  • Zero Gravity (0G)
    • Endpoints, Peer, Explorer
    • 0g Validator Snapshot
    • Storage Node Snapshot (Turbo)
    • 0g Validator Node Setup
    • 0g Storage Node Setup
    • 0g DA Node Setup
    • 0g Storage KV Setup
  • Pell
    • Endpoints, Peer, Explorer
    • Pell Snapshot
    • Pell Validator Node Setup
Powered by GitBook
On this page
  1. Story Testnet (Odyssey)

Manual Installation (Cosmovisor)

Recommended Hardware: 8 Cores, 32GB RAM, 500GB of storage (NVME), 25 MBit/s

PreviousAuto InstallationNextStory Dashboard

Last updated 4 months ago

Official Documentation:

Install dependencies, if required

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

Install Go, if required

cd $HOME
ver="1.22.3"
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" >> ~/.bash_profile
source ~/.bash_profile
go version

Download Story-Geth binary (v0.11.0)

cd $HOME
wget https://github.com/piplabs/story-geth/releases/download/v0.11.0/geth-linux-amd64
sudo cp geth-linux-amd64 $HOME/go/bin/story-geth
sudo chmod +x $HOME/go/bin/story-geth
mkdir -p "$HOME/.story/story"
mkdir -p "$HOME/.story/geth"

Install Story binary (v0.13.0)

cd $HOME
rm -rf story
git clone https://github.com/piplabs/story
cd story
git checkout v0.13.0
go build -o story ./client 
mv $HOME/story/story $HOME/go/bin/
source $HOME/.bash_profile
story version

Install Cosmovisor v1.7.0

go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.7.0

Prepare binaries for Cosmovisor

mkdir -p $HOME/.story/story/cosmovisor/genesis/bin
cp $HOME/go/bin/story $HOME/.story/story/cosmovisor/genesis/bin/
echo "export DAEMON_NAME=story" >> $HOME/.bash_profile
echo "export DAEMON_HOME=/root/.story/story" >> $HOME/.bash_profile
echo "export DAEMON_DATA_BACKUP_DIR=/root/.story/story/data" >> $HOME/.bash_profile
source $HOME/.bash_profile
cosmovisor init $HOME/go/bin/story
mkdir -p $HOME/.story/story/cosmovisor/upgrades
mkdir -p $HOME/.story/story/cosmovisor/backup

Initialize Story

story init --network odyssey --moniker "<your_moniker>"

Set Custom Ports, if required

echo "export STORY_PORT="47"" >> $HOME/.bash_profile
source $HOME/.bash_profile
# set custom ports in story.toml file
sed -i.bak -e "s%:1317%:${STORY_PORT}317%g;
s%:8551%:${STORY_PORT}551%g" $HOME/.story/story/config/story.toml

# set custom ports in config.toml file
sed -i.bak -e "s%:26658%:${STORY_PORT}658%g;
s%:26657%:${STORY_PORT}657%g;
s%:26656%:${STORY_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${STORY_PORT}656\"%;
s%:26660%:${STORY_PORT}660%g" $HOME/.story/story/config/config.toml

Enable Prometheus & Disable Indexing

sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.story/story/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.story/story/config/config.toml

Add Peers

PEERS=$(curl -sS https://story-testnet-rpc.shachopra.com/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | paste -sd, -)
echo $PEERS
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.story/story/config/config.toml

Create Story-Geth Service File

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

[Service]
User=$USER
ExecStart=$HOME/go/bin/story-geth --odyssey --syncmode full
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Create Story Service File

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

[Service]
User=root
Environment="DAEMON_NAME=story"
Environment="DAEMON_HOME=/root/.story/story"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_DATA_BACKUP_DIR=/root/.story/story/data"
Environment="UNSAFE_SKIP_BACKUP=true"
ExecStart=/root/go/bin/cosmovisor run run
Restart=always
RestartSec=3
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target
EOF

Start Story & Story-Geth

sudo systemctl daemon-reload && sudo systemctl enable story-geth && sudo systemctl start story-geth
sudo systemctl daemon-reload && sudo systemctl enable story && sudo systemctl start story

Check Logs

sudo journalctl -u story-geth -f -o cat
sudo journalctl -u story -f -o cat

Check sync status

curl localhost:${STORY_PORT}657/status | jq

Create Validator (if you have 1024 tokens)

Export your Validator key

story validator export

Export EVM Private key

story validator export --export-evm-key

Create Validator

story validator create --stake 1024000000000000000000 --private-key "<private_key>" --moniker "<your_moniker>"
https://docs.story.foundation/docs/node-setup