# Symphony Node Setup

<figure><img src="/files/rbor0qgbrzPt5a8Ku7lr" alt=""><figcaption></figcaption></figure>

### Requirements :&#x20;

| Components | Minimum Requirements |
| ---------- | -------------------- |
| CPU        | 4-6                  |
| RAM        | 8-32 GB              |
| STORAGE    | 200 GB SSD           |

### Update :&#x20;

```
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade
sudo apt-get update && apt-get install -y libssl-dev
```

### Go :&#x20;

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

### Install Symphony :&#x20;

```
echo "export SYMPHONY_PORT="35"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

```
cd $HOME
rm -rf symphony
git clone https://github.com/Orchestra-Labs/symphony
cd symphony
git checkout v0.3.0
make build
```

```
mkdir -p ~/.symphonyd/cosmovisor/upgrades/0.3.0/bin
mv $HOME/symphony/build/symphonyd ~/.symphonyd/cosmovisor/upgrades/0.3.0/bin/
```

```
sudo ln -s ~/.symphonyd/cosmovisor/upgrades/0.3.0 ~/.symphonyd/cosmovisor/current -f
sudo ln -s ~/.symphonyd/cosmovisor/current/bin/symphonyd /usr/local/bin/symphonyd -f
```

```
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0
cd
```

### Crate A Service :&#x20;

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

[Service]
User=$USER
ExecStart=$(which cosmovisor) run start --home $HOME/.symphonyd
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=${HOME}/.symphonyd"
Environment="DAEMON_NAME=symphonyd"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:~/.symphonyd/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
EOF
```

```
sudo systemctl daemon-reload
sudo systemctl enable symphonyd
```

### Init :&#x20;

```
symphonyd config chain-id symphony-testnet-2
symphonyd config keyring-backend test
symphonyd config node tcp://localhost:${SYMPHONY_PORT}657
symphonyd init "RPCdot" --chain-id symphony-testnet-2
```

### Genesis / Addrbook :&#x20;

```
curl https://raw.githubusercontent.com/Orchestra-Labs/symphony/7acce0a194fd93fbaa8a0e1b49a15ce6251fa4dd/networks/symphony-testnet-3/genesis.json -o ~/.symphonyd/config/genesis.json
curl https://raw.githubusercontent.com/MictoNode/symphony-cosmos/main/addrbook.json -o ~/.symphonyd/config/addrbook.json
```

### Port :&#x20;

```
sed -i.bak -e "s%:1317%:${SYMPHONY_PORT}317%g;
s%:8080%:${SYMPHONY_PORT}080%g;
s%:9090%:${SYMPHONY_PORT}090%g;
s%:9091%:${SYMPHONY_PORT}091%g;
s%:8545%:${SYMPHONY_PORT}545%g;
s%:8546%:${SYMPHONY_PORT}546%g;
s%:6065%:${SYMPHONY_PORT}065%g" $HOME/.symphonyd/config/app.toml
```

```
sed -i.bak -e "s%:26658%:${SYMPHONY_PORT}658%g;
s%:26657%:${SYMPHONY_PORT}657%g;
s%:6060%:${SYMPHONY_PORT}060%g;
s%:26656%:${SYMPHONY_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${SYMPHONY_PORT}656\"%;
s%:26660%:${SYMPHONY_PORT}660%g" $HOME/.symphonyd/config/config.toml
```

### Peers / Seeds  :&#x20;

```
SEEDS="ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@testnet-seeds.polkachu.com:29156"
PEERS="bbf8ef70a32c3248a30ab10b2bff399e73c6e03c@65.21.198.100:24856,f3c40275b0e198bef1c79111a04d0fed572a44da@94.72.100.234:45656,710976805e0c3069662e63b9f244db68654e2f15@65.109.93.124:29256,5660a533218eed9dbbc569f38e6bc44666b1eb17@65.21.10.105:26656,77ce4b0a96b3c3d6eb2beb755f9f6f573c1b4912@178.18.251.146:22656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.symphonyd/config/config.toml
```

### Pruning :&#x20;

```
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.symphonyd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.symphonyd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"10\"/" $HOME/.symphonyd/config/app.toml
```

### Gas :&#x20;

```
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0note"|g' $HOME/.symphonyd/config/app.toml
```

### Indexer :&#x20;

```
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.symphonyd/config/config.toml
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.symphonyd/config/config.toml
```

### Snap :

Check and Copy Snapshot URL \
<https://polkachu.com/testnets/symphony/snapshots>

```
echo "export SYMPHONY_SS_URL="paste-ss-url"" >> $HOME/.bash_profile
source $HOME/.bash_profile
```

```
symphonyd tendermint unsafe-reset-all --home $HOME/.symphonyd
if curl -s --head curl ${SYMPHONY_SS_URL}  | head -n 1 | grep "200" > /dev/null; then
  curl ${SYMPHONY_SS_URL}  | lz4 -dc - | tar -xf - -C $HOME/.symphonyd
    else
  echo no have snap
fi
```

### Start :&#x20;

```
sudo systemctl start symphonyd && sudo journalctl -u symphonyd -f -o cat
```

### Log Command :&#x20;

```
journalctl -u symphonyd -f -o cat
```

### Wallet :&#x20;

```
symphonyd keys add wallet-name
```

### Import wallet :&#x20;

```
symphonyd keys add wallet-name --recover
```

### Faucet :&#x20;

{% embed url="<https://testnet.ping.pub/symphony/faucet>" %}

### Crate Validator :&#x20;

> Reminder: You can't create a validator without Sync. You must have to catch the latest block.

❗️100000note = 0.1 MLD❗️

```
cd $HOME
```

```
symphonyd tx staking create-validator \
  --amount "90000note" \
  --pubkey $(symphonyd tendermint show-validator) \
  --moniker "myvalidator" \
  --identity "optional identity signature (ex. UPort or Keybase)" \
  --details "RPCdot.com 🐦" \
  --website "validator's (optional) website" \
  --chain-id symphony-testnet-2 \
  --commission-rate "0.05" \
  --commission-max-rate "0.2" \
  --commission-max-change-rate "0.01" \
  --min-self-delegation "1" \
  --fees "5000note" \
  --from wallet \
  --node=http://localhost:35657 \
  -y
```

### Delegate :&#x20;

```
symphonyd tx staking delegate $(symphonyd keys show wallet-name --bech val -a) amount0000note \
--chain-id symphony-testnet-2 \
--from "wallet-name" \
--fees "800note" \
--node=http://localhost:(whatever you typed in custom_port)657 \
-y
```

### Delete :&#x20;

```
cd $HOME
sudo systemctl stop symphonyd
sudo systemctl disable symphonyd
sudo rm -rf /etc/systemd/system/symphonyd.service
sudo systemctl daemon-reload
sudo rm -f /usr/local/bin/symphonyd
sudo rm -f $(which symphonyd)
sudo rm -rf $HOME/.symphonyd $HOME/symphony
sed -i "/SYMPHONY_/d" $HOME/.bash_profile
```

<figure><img src="/files/jfel7YiiX167Q8dRyunS" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: 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://services.rpcdot.com/symphony/symphony-node-setup.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.
