> For the complete documentation index, see [llms.txt](https://docs.syanodes.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.syanodes.my.id/cheqd/node-installation.md).

# Node Installation

### Hardware requirements The following requirements are recommended for running CHEQD:

* **6 or more physical CPU cores**
* **At least 1TB of SSD disk storage**
* **At least 16GB of memory (RAM)**
* **At least 500mbps network bandwidth**

## Manual Installation

```bash
# Update & install dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq htop tmux chrony liblz4-tool fail2ban -y

# Install Go
cd $HOME
VER="1.23.4"
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
go version


# Set Vars
MONIKER=<YOUR_MONIKER_NAME_GOES_HERE>
echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile
echo "export CHEQD_CHAIN_ID="cheqd-mainnet-1"" >> $HOME/.bash_profile
echo "export CHEQD_PORT="116"" >> $HOME/.bash_profile
source $HOME/.bash_profile


# Download Binary
cd $HOME
rm -rf cheqd-noded-node
git clone https://github.com/cheqd-noded/cheqd-noded-node
cd cheqd-noded-node
git checkout v3.1.5
make install


# Config and Init App
cheqd-noded config node tcp://localhost:${CHEQD_PORT}57
cheqd-noded config chain-id $CHEQD_CHAIN_ID
cheqd-noded init $MONIKER --chain-id $CHEQD_CHAIN_ID


# Add Genesis File and Addrbook
wget -O $HOME/.cheqdnode/config/genesis.json https://snapshot.syanodes.my.id/mainnets/cheqd/genesis.json
wget -O $HOME/.cheqdnode/config/addrbook.json https://snapshot.syanodes.my.id/mainnets/cheqd/addrbook.json


#Configure Seeds and Peers
SEEDS=""
PEERS="5f0ed44abfc697b0ccbd2b20b107a5e198befd5c@65.108.234.251:26656,f49be2132551cddb332b1a6bf458cbe6bdca2da1@149.102.138.109:26656,cd490e23a84015ff2478f181a79a5d53ed17aefe@206.189.137.229:26656,34466c16a62efa879984521e1690ab20e467dd5d@64.227.177.178:26170,3dd3b69ea166966d53bc8874ebcac49c6cf4d9c9@65.108.201.240:16156,60a8f9affe24dd24c50978ec69857a93d13566f9@159.65.188.152:26170,f388cc3395f03b897749791746a333f98e780f0f@142.93.38.208:26170,547abaa9925a2f39521b60840248a9fca4d09182@143.198.36.150:26170,63b5562bcfa721443801ae0adb8dcc0034f3a3cb@159.69.174.238:26656,b67862d18b6f5f7b785e0af0c7a641bf8b1f4556@65.108.230.113:21016,a5d1e4eabf9f638262683f5565bb26b8ad22c5e3@3.147.54.102:26656,e1b058e5cfa2b836ddaa496b10911da62dcf182e@164.152.160.124:26656,8102b30ef139f1e98fb996f519cabc2ed917bc19@65.109.30.53:16156,a27bcd0c8f588dcc83bf02e4f50c021f3d3747e8@54.153.187.95:26656,5ded87d9b6aeed9777abeb29b965a4f3e8cc253f@136.243.95.31:16156,261c7d339c4d17568202ca9e01e14b33a652e8ac@65.109.117.113:26656,aed026a175a0754620b18ff3b02aa5926d4e0325@142.132.248.138:26609,9d205041d8b3eb0a532a578c70010e8aaa057851@173.214.171.102:26676,25481bfb4d4f85119e6ba087b40615d815a3db74@141.95.66.131:16156,9201b408d24941fd342e739f0814aa3eb8ab7577@139.59.220.12:26656,930067f48301adccaa9f7e28424fa6da3a023de4@116.203.250.20:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.cheqdnode/config/config.toml
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"25ncheq\"/" $HOME/.cheqdnode/config/app.toml
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.cheqdnode/config/config.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.cheqdnode/config/config.toml


# Config Pruning
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.cheqdnode/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.cheqdnode/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.cheqdnode/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.cheqdnode/config/app.toml


# Set Custom Port
sed -i -e "s%:1317%:${CHEQD_PORT}17%; s%:8080%:${CHEQD_PORT}80%; s%:9090%:${CHEQD_PORT}90%; s%:9091%:${CHEQD_PORT}91%; s%:8545%:${CHEQD_PORT}45%; s%:8546%:${CHEQD_PORT}46%; s%:6065%:${CHEQD_PORT}65%" $HOME/.cheqdnode/config/app.toml
sed -i -e "s%:26658%:${CHEQD_PORT}58%; s%:26657%:${CHEQD_PORT}57%; s%:6060%:${CHEQD_PORT}60%; s%:26656%:${CHEQD_PORT}56%; s%:26660%:${CHEQD_PORT}61%" $HOME/.cheqdnode/config/config.toml


# Set Service File
sudo tee /etc/systemd/system/cheqd-noded.service > /dev/null <<EOF
[Unit]
Description=cheqd-mainnet
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cheqd-noded) start --home $HOME/.cheqdnode
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF


# Enable and Start Service
sudo systemctl daemon-reload
sudo systemctl enable cheqd-noded
sudo systemctl start cheqd-noded && sudo journalctl -fu cheqd-noded -o cat
```

## Auto Installation

```bash
wget https://snapshot.syanodes.my.id/auto/mainnet/cheqd_auto && chmod +x cheqd_auto && ./cheqd_auto 
```


---

# 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.syanodes.my.id/cheqd/node-installation.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.
