> For the complete documentation index, see [llms.txt](https://docs.validator247.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.validator247.com/testnet/story-aeneid.md).

# Story-aeneid

## **Public Endpoints**

> 🌐RPC cosmos:  <https://Story-eaneid-testnet-rpc.validator247.com>
>
> 🔧API :   <https://story-eaneid-testnet-api.validator247.com>
>
> ⚙️RPC EVM : [https://story-eaneid-evm-rpc.validator247.com](<https://story-eaneid-evm-rpc.validator247.com >)
>
> 📡WebSocket Secure :  [wss://Story-eaneid-evm-ws.validator247.com](https://story-eaneid-evm-rpc.validator247.comwss/Story-eaneid-evm-ws.validator247.com)

## 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"
[ ! -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
```

## set vars

```
echo "export MONIKER="Node_name"" >> $HOME/.bash_profile
echo "export STORY_CHAIN_ID="aeneid"" >> $HOME/.bash_profile
echo "export STORY_PORT="26"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

## download binaries

```
cd $HOME
rm -rf story-geth
git clone https://github.com/piplabs/story-geth.git
cd story-geth
git checkout v1.1.0
make geth
mv build/bin/geth  $HOME/go/bin/
[ ! -d "$HOME/.story/story" ] && mkdir -p "$HOME/.story/story"
[ ! -d "$HOME/.story/geth" ] && mkdir -p "$HOME/.story/geth"
```

## install Story

```
cd $HOME
rm -rf story
git clone https://github.com/piplabs/story
cd story
git checkout v1.3.0
go build -o story ./client 
mkdir -p $HOME/go/bin/
mv $HOME/story/story $HOME/go/bin/
```

## init story app

```
story init --moniker $MONIKER --network $STORY_CHAIN_ID
```

## set peers

```
PEERS="83818af9c35d3543b2c8b91c14b33bc7332617cd@57.129.88.113:26656,b4b3f2d3bf950c3f6819183471c22e425d7213b4@148.72.167.173:26646,7160dec63da82b56e1ce59a93c057c05e361cf85@135.181.117.37:64656,311cd3903e25ab85e5a26c44510fbc747ab61760@152.53.87.97:36656,a8d01e154197d799637eca4f0f369dc215db6b70@144.76.111.9:26656,a7c38e322fff3f264b9163db475ba42b1b48e765@65.21.97.155:26656,9d34ab3819aa8baa75589f99138318acfa0045f5@95.217.119.251:30900,8b8f8d6fb17b86499c491751975fe27234e60809@65.108.75.52:62656,dfb96be7e47cd76762c1dd45a5f76e536be47faa@65.108.45.34:32655,ae49103a54f77effa438978ad8a7ba09b6f20da0@144.76.202.120:35656,72c83daf61042571e1a98f6e474509157d9bdfe7@178.63.79.214:26656"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
   -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.story/story/config/config.toml
```

## 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 and 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
```

## Download Addrbook & Genesis

```
 wget -O ~/.story/config/addrbook.json https://raw.githubusercontent.com/Validator247/Story-aeneid/main/addrbook.json
 wget -O ~/.story/config/genesis.json https://raw.githubusercontent.com/Validator247/Story-aeneid/main/genesis.json
```

## create geth servie 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/geth --aeneid --syncmode full --http --http.api eth,net,web3,engine --http.vhosts '*' --http.addr 0.0.0.0 --http.port ${STORY_PORT}545 --authrpc.port ${STORY_PORT}551 --ws --ws.api eth,web3,net,txpool --ws.addr 0.0.0.0 --ws.port ${STORY_PORT}546
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 Service
After=network.target

[Service]
User=$USER
WorkingDirectory=$HOME/.story/story
ExecStart=$(which story) run

Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

## enable and start geth, story

```
sudo systemctl daemon-reload
sudo systemctl enable story story-geth
sudo systemctl restart story-geth && sudo systemctl restart story
```

## check logs

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

## Create validator

View your validator key

```
story validator export
```

Export EVM private key

```
story validator export --export-evm-key
```

Create validator, locked

```
story validator create --stake 1024000000000000000000 --moniker $MONIKER --chain-id 1315 --unlocked=false
```

Create validator, unlocked

```
story validator create --stake 1024000000000000000000 --moniker $MONIKER --chain-id 1315 --unlocked=true
```

Remember to backup your validator priv\_key from here:

```
cat $HOME/.story/story/config/priv_validator_key.json
```

View EVM private key and make a key backup

```
cat $HOME/.story/story/config/private_key.txt
```

## Delete Node&#x20;

```
sudo systemctl stop story story-geth
sudo systemctl disable story story-geth
rm -rf $HOME/.story
sudo rm /etc/systemd/system/story.service /etc/systemd/system/story-geth.service
sudo systemctl daemon-reload
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.validator247.com/testnet/story-aeneid.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
