# Node Installation

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

* **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
sudo ufw enable


# Install Go
cd $HOME
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.21.4.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
go version


# Set Vars
MONIKER=<YOUR_MONIKER_NAME_GOES_HERE>
echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile
echo "export ARKEO_CHAIN_ID="arkeo"" >> $HOME/.bash_profile
echo "export ARKEO_PORT="25"" >> $HOME/.bash_profile
source $HOME/.bash_profile


# Download Binary
cd $HOME
rm -rf arkeod
wget https://testnet-files.itrocket.net/arkeo/arkeod
chmod +x $HOME/arkeod
mv $HOME/arkeod $HOME/go/bin/arkeod


# Config and Init App
arkeod config node tcp://localhost:${ARKEO_PORT}657
arkeod config keyring-backend test
arkeod config chain-id $ARKEO_CHAIN_ID
arkeod init $MONIKER --chain-id $ARKEO_CHAIN_ID


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


#Configure Seeds and Peers
SEEDS=""
PEERS="a7346c623fd6bb834459dd483529b1420c5b56d7@85.215.38.71:26656,3f9bc5552f02dce211db24d5e42c118c61c4abde@65.108.8.28:60656,be71f456a7aa3da953db899298b53d28b75f4676@65.108.229.93:37656,cf5f027c678dbf3d495e7f98d4be0d769dcbcd19@95.217.100.248:02656,b487e892071fd3d89cc9d0de60eeed60ba7c4e5c@65.109.116.119:15756,c9b8962c35cd81a56ed9a96794a667e152d3d5c9@65.109.23.114:22856,b57d8d3654aded700a5f3165355f6ac0572b124f@85.215.51.140:26656,fb7047dd0951a50a2be5c325a383910e52aa5bf9@185.87.21.107:28656,3f04d47cfd60965007c8693fd3371af23c1b61aa@185.193.67.253:36656,9d59a4815df03dad370a8e5e77e80caa5b9c539f@65.21.131.215:14656,5c3ca78b11bbd746f950c198cac51d4e5d4c0750@65.109.89.18:18656,3b5254683b1638d1dff3447a0852d98057a20c17@85.215.42.173:26656,8d7b24c3ffc552bce34ca28b53f7d0b660e7b119@144.76.174.27:31656,475433a8e79e2d816b82324dc7e990f1526f04b2@85.215.57.101:26656,8c2d799bcc4fbf44ef34bbd2631db5c3f4619e41@213.239.207.175:60656,769de3fabb66d2dcbae7550ce7252f6f469c5d3f@65.108.126.188:26856,db1d6df90a60d408fa638c0670cee1931d4b730d@65.108.72.253:18656,a4dbd1be41263b6c84194c8009f6e109f2aba3f2@62.171.130.196:18656,0db6d3ea33d710d477a155dedba3fa8eb193b0fb@62.171.183.30:26656,cc88a7770d5784247904ec005ddb8713121be00c@144.91.74.160:26656,4369bd17c60296a54f01edd712ca7b3a43991687@65.109.92.235:11006,7ef4a6eb6c41c69f7793813a7069e291e67a80bf@104.152.49.117:26656,41e9f8771e28a5b51d6a99529ccf55db19f34abe@5.161.70.240:26656,98911188da7520af2165b3562b1b28fdc55ed5e7@65.108.91.152:26656,aa8aae4897843ca2b0fe789286e25b7548dc3c3d@45.83.122.236:26656,232f817d82c4ae534f2d9ece5cc4943c580ac64f@38.242.230.80:26656,8c3061826cd4a3b6e4dda647e439609fe15c85fa@95.214.52.157:14056,efd40fa78d967c0cc85aa05f88f224c93f75b0f8@2a01:11656,b7ab002fd8d92182b1bdc24e0ea11c7936a5731f@176.9.110.12:60656,60a1b4f4fe0fc0dbd84e65999c24d56ec3f7d172@142.132.199.236:24656,eb232cc56ab7622bce831cb1f0163530de7329d6@65.21.134.202:14656,128608f3aed48e0f37e157be713ea94a472b7e5b@185.252.232.192:26656,e0d147e64b92af644d704644834224ce3e3a5681@212.220.45.177:26656,8de6ce4191a2bda40e4a3f7e304e6999837ef999@65.109.155.238:29656,d65423c02b9907adbb87b8859eff0942ff0e559e@38.242.230.82:26656,23c2fba68dfa9bfd91aad4da23f79fbc2f627b97@194.195.90.67:26656,374facfe63ab4c786d484c2d7d614063190590b7@88.99.213.25:38656,9c0df85008e400b440232fdb7470c593fa07609a@154.53.56.176:30656,1e7a2f2ed7413cc4b06b8c82b0b2f81605ce7b60@207.180.239.56:26656,c34a4f5a59e81dd1974873641ceb9889a7e8d71a@161.35.113.45:24656,0909dbada3305d135e4b86775a7c39b5578e5978@65.108.111.236:55926,fe010f9dc956d0cfdcb41863a9c8bea604d46d2d@135.181.232.121:21304,b6b4397c840a2bb4e7ab0b88d309cba57874bd52@65.21.197.25:27656,6ae2136893a08a412f0c02eab8d595d502cd5457@65.108.206.118:36656,543195341cd9e37b7cc79db8440f68291aa909b0@144.91.120.67:26656,3448eba83632a074e713bdc3819e3583ff6e2fe8@65.109.82.17:17656,c61438fdfa622fe3a30f7a9df17e0dff28aa7ab1@185.75.181.19:15756,9aac4f5660f62bb0c1c1a1b43c1ea211df7ff9df@193.26.159.34:12656,f5dbb77c25098596ff123c08b79fc83ff1e49612@45.41.204.247:26656"
sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" $HOME/.arkeo/config/config.toml
sed -i -e "s|^seeds *=.*|seeds = \"$SEEDS\"|" $HOME/.arkeo/config/config.toml
sed -i 's/minimum-gas-prices =.*/minimum-gas-prices = "0.001uarkeo"/g' $HOME/.arkeo/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.arkeo/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.arkeo/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/.arkeo/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.arkeo/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.arkeo/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.arkeo/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:${ARKEO_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${ARKEO_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${ARKEO_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${ARKEO_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${ARKEO_PORT}660\"%" $HOME/.arkeo/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${ARKEO_PORT}317\"%; s%^address = \":8080\"%address = \":${ARKEO_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${ARKEO_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${ARKEO_PORT}091\"%" $HOME/.arkeo/config/app.toml


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

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

[Install]
WantedBy=multi-user.target
EOF


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