# Node Installation

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

* **4 or more physical CPU cores**
* **At least 1TB of SSD disk storage**
* **At least 8GB of memory (RAM)**
* **At least 100mbps network bandwidth**

## Manual Installation

```bash
# Update & install dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install clang pkg-config libssl-dev curl git wget htop tmux build-essential jq make lz4 gcc unzip -y


# Set Firewall
sudo apt install -y ufw
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow ssh


# Install Go
cd $HOME
! [ -x "$(command -v go)" ] && {
VER="1.20.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
go version


# Set Vars
MONIKER=<YOUR_MONIKER_NAME_GOES_HERE>
echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile
echo "export NIBIRU_CHAIN_ID="nibiru-itn-1"" >> $HOME/.bash_profile
echo "export NIBIRU_PORT="13"" >> $HOME/.bash_profile
source $HOME/.bash_profile


# Download Binary
cd $HOME
git clone https://github.com/NibiruChain/nibiru
cd nibiru
git checkout v0.21.10
make install


# Config and Init App
nibid config node tcp://localhost:${NIBIRU_PORT}657
nibid config keyring-backend test
nibid config chain-id $NIBIRU_CHAIN_ID
nibid init $MONIKER --chain-id $NIBIRU_CHAIN_ID


# Add Genesis File and Addrbook
wget -O $HOME/.nibid/config/genesis.json https://syanodes.my.id/nibiru/genesis.json
wget -O $HOME/.nibid/config/addrbook.json https://syanodes.my.id/nibiru/addrbook.json


#Configure Seeds and Peers
seeds="dd58949cab9bf75a42b556d04d3a4b1bbfadd8b5@144.76.97.251:40656"
peers="104a00413d0fc7ec208c810c50d49932da355bd5@129.226.159.141:26656,01dfe6c993e034169d5e69116e64587fdaf0c2f1@93.183.208.67:26656,c45cde328f28c16b4da3e51c45a64c7ce0c45b1c@93.183.208.71:26656,8279e11d79bb4d5ee3595893a546123423e48b6a@109.123.246.138:26656,fc015be87e5c15953a6508403c99a6c8d9493622@194.34.232.35:39656,64fc57fb297ef839da5212b391cf27b32fe7ab8a@109.123.243.55:26656,1587dd54b6e1f373ccf61401980816fbd7f7e43a@35.232.147.245:26656,fae0087a4b4a4692b8e358d7d8cbce75864a7a03@62.171.174.247:26656,a3de1f505133b416a47f546b4d4ccbdc442a891b@84.46.251.68:26656,6dbb917a5a8d263ccaf2ef33d957116225b19e67@31.220.88.184:26656,549ba520c02bf82dd4198cddde2927ca5a574a9a@84.46.247.207:26656,997c1e7fb9b7e6cfa6092b4fe09a0f3ed1907781@65.21.2.131:26656,08a1222c47c36bbd31bc693fe625026a275566e6@38.242.254.154:26656,9e31682ed08dd4d5e9662dd9fd3c42b06f50c6d8@109.123.243.107:26656,4f8d3dec691e8cbf20883cf595a9a0e749178bdb@65.108.229.93:27656,f328de4ff3f71b14882fc08c6793bfa272cd7171@45.85.249.93:26656,2137cde84a36e8e0cf17230c58670034096d3798@138.201.200.252:26656,b15ff5df6bea62dc567f5b628bb922a4185621b6@5.75.196.224:26656,3b5c0147311c294de8e635c853af5a0de72d43f1@65.21.131.215:26566,1f910c413b5e098fa9c2d066d405b1f87b0a32c6@113.23.122.67:26656,de9410cc356635b1f555c06332af943319b75a80@109.123.243.29:26656,f883b1634fd918b036176fc12976194b4bc775af@38.242.205.150:39656,7bb000363922f1da93c0f25b2544e453b523a82a@65.108.246.178:26656,766f17b24c11b5eac20cf938f619bc2e43331988@38.242.229.238:26656,d5519e378247dfb61dfe90652d1fe3e2b3005a5b@65.109.68.190:39656,f4fa2e13e64628d96f9158a6a2afbb19ebac574e@85.190.246.120:26656,4cf0fe54e468cb18fc2d5cca41dcc387e8c8de5c@91.233.173.45:36656"
sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$peers\"|" $HOME/.nibid/config/config.toml  
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0unibi\"/;" ~/.nibid/config/app.toml
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $HOME/.nibid/config/config.toml
external_address=$(wget -qO- eth0.me) 
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.nibid/config/config.toml
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.nibid/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.nibid/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/.nibid/config/config.toml


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


# Set Custom Port
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${NIBIRU_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${NIBIRU_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${NIBIRU_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${NIBIRU_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${NIBIRU_PORT}660\"%" $HOME/.nibid/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${NIBIRU_PORT}317\"%; s%^address = \":8080\"%address = \":${NIBIRU_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${NIBIRU_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${NIBIRU_PORT}091\"%" $HOME/.nibid/config/app.toml


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

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

[Install]
WantedBy=multi-user.target
EOF


# Enable and Start Service
sudo systemctl daemon-reload
sudo systemctl enable nibid
sudo systemctl start nibid
sudo journalctl -fu nibid -o cat

```
