# Node Installation

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

* **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 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 ENTANGLE_CHAIN_ID="entangle_33033-1"" >> $HOME/.bash_profile
echo "export ENTANGLE_PORT="5"" >> $HOME/.bash_profile
source $HOME/.bash_profile


# Download Binary
cd $HOME
rm -rf entangle-blockchain
git clone https://github.com/Entangle-Protocol/entangle-blockchain
cd entangle-blockchain
git checkout main
make install


# Config and Init App
entangled config node tcp://localhost:${ENTANGLE_PORT}657
entangled config keyring-backend os
entangled config chain-id $ENTANGLE_CHAIN_ID
entangled init $MONIKER --chain-id $ENTANGLE_CHAIN_ID


# Add Genesis File and Addrbook
wget -O $HOME/.entangled/config/genesis.json https://testnet-files.syanodes.my.id/entangle-m-genesis.json
wget -O $HOME/.entangled/config/addrbook.json https://testnet-files.syanodes.my.id/entangle-m-addrbook.json


#Configure Seeds and Peers
SEEDS=""
PEERS="46156e0932e548ac124b3fa159f23d6072318019@35.228.9.108:26656,7ca810f11ddd54e7a10fed03a067b0ec3c1e8ba2@34.174.1.1:26656,d9e855c34efd86dcb024b8de363374f070955d20@[2a01:4f9:2a:79e::2]:32656,31eb7abe3bcabff89c381f8502da7f5a98c42d0d@158.220.98.0:15656,f78d0c5c0b8abb5115fc79fc6acb7951518b2105@104.244.208.243:27156,c85f120508d63834a7cab9abf766884d0135372e@[2a01:4f9:3081:4158::2]:31656,2831d7b924b2b2774f70dbda6ebc8d8aa6f39e5d@95.216.75.190:26656,7378259114db42b8b46fad4cc9f31d32a5419b60@[2a03:4000:60:56:1879:e1ff:fe07:89f5]:12656,135b64976feabeefd5776818c3fafe29c2bbc886@[2607:5300:203:b704::]:26656,1731c1b2f3bc8316a74d645a3f045c0f1aba7bc5@94.76.242.68:26656,9d25b1205658df64b509c21bcb212159f13039e3@37.252.186.204:26656,c31e8d2f3427c05e83b6f06262d59374547eee90@[2a01:4f9:6a:4732::2]:22656,821a704cb5cad8f0d2024888c54f330057d34040@34.174.161.121:26656,bac38cc68c8bcf09e7484a4ae64c3f9381b3abf4@142.132.202.50:33656,ce48739e5a187007c8bb66de1a0a4b78af203a61@34.174.164.70:26656,101f4f7041266d4f318b2f45ec9eb31f4ab1ef73@162.19.169.74:36656,6de7cd16d8816a4c2a8a3344210e9634f17b97d8@[2a01:4f9:1a:b181::2]:10656,2899b5bbba96c4a99674ca780ad8bbc6179d5c94@[2a01:4f9:4a:2864::2]:11956,05b5bde0eb0a6374d796c7f467fc6d25b0bb3e2c@57.129.37.24:26656,10d0f0e10b12c37bf64f6eca08076ffaf9cb18ab@[2a01:4f9:3081:2ee2::2]:15656,17619aea4a13201bccf803a2bb7f44e387134f47@[2a01:4f8:262:1b2f::2]:21856,00495ccd54c09560ab2d2fe6638523418901786f@[2a01:4f9:3081:3aa3::2]:21856,8e682c52253e8d892e47b5e6cc0672e435301038@[2a01:4f8:261:2c1a::2]:4156,7030ba7898fe4b557e916ab7e13b006071d6f5c0@[2a01:4f9:5a:2248::2]:15656,858489814116c3011216bddfc35c60385040bb61@[2a01:4f8:10a:c0c::2]:26656,06b3c3ecc479983958190d26ce1aafc18398d5be@94.72.107.225:26656,0d57afd37f4f4f566c8359b1d4c5a439e2c7f009@[2a01:4f9:1a:ac89::2]:22656,cc8bf40df39533f1867141c8d99d62dc7f2a1867@[2a01:4f8:221:374c::2]:29656,122399866c25b888679904e99450b6ab86fbcc32@[2001:41d0:304:300::4f69]:26656,c3318235ce692b7d9abe0833faeba667d04b5f83@[2a01:4f8:2200:1275::2]:22656,1ea44942d500f9bd83df93dbdcac4f79f5f79901@[2a01:4f8:10a:d70::2]:10656,2d457167788939ef2e6e0a79b76097ba0421d706@158.220.121.173:15656,841380487cf89030e9ae865dfb884cc703e6c2b2@94.76.242.98:26656,7aab5c045aeb072341cdd8e7b692d4d56553e5b7@[2a01:4f9:3a:2699::2]:34656,b0f28d454343a605c10f8f7bc4149d4764ee1e89@[2a01:4f9:3081:2f30::2]:15656,d2c05a9a98f7b47b91f21e6cb757cfcdf37239d0@[2a01:4f8:210:338f::2]:26656,6662a6b320b8f7520ebbc04e2891ee43227631a8@[2a01:4f9:3081:5155::2]:1550,a0eeae37a0e8c25dd98ffd84ff21504221a8d14f@[2a01:4f9:3080:1188::2]:38656,9b01145fc6fe490a59cbdceeee96678245ebeecf@[2a02:c206:2128:4299::1]:26656,bed1c2d7f2466e90f3e703ecbe1dafe370bd3e14@88.99.102.36:26656,fbe38cb0500221859e631a93d7f830babea8871c@94.76.242.57:26656,08e8fc80d1d26dca253894e209f20f5138f3dcde@35.228.227.105:26656,990d17a2686b47fe4bcf885bfae3f29897a58a32@[2a01:4f9:6b:47e6::2]:26656,3e5001558765a6092d1284f3b5b24f6bd76a9433@[2a01:4f8:171:1d8::2]:26656,8a6be04c58c3e633f9d3d201fd03d23b6cfcb3d1@[2a01:4f9:3a:4156::2]:26656,addb29cd41f917faca1276f294751840757ff865@[2a01:4f8:241:528f::2]:22656,46a736eddfd1b068bb33e6be49f3a740b209a42d@[2a12:5940:18cb::2]:26656,7ca810f11ddd54e7a10fed03a067b0ec3c1e8ba2@34.174.1.1:26656,2831d7b924b2b2774f70dbda6ebc8d8aa6f39e5d@95.216.75.190:26656,fbe38cb0500221859e631a93d7f830babea8871c@94.76.242.57:26656,1731c1b2f3bc8316a74d645a3f045c0f1aba7bc5@94.76.242.68:26656,841380487cf89030e9ae865dfb884cc703e6c2b2@94.76.242.98:26656,f381ea4431ba812caf27f65f1fbd31b64a699358@38.146.3.231:27156,6662a6b320b8f7520ebbc04e2891ee43227631a8@65.21.65.254:1550,9d25b1205658df64b509c21bcb212159f13039e3@37.252.186.204:26656,990d17a2686b47fe4bcf885bfae3f29897a58a32@65.108.71.227:26656,01f693f3f219e4fc58f4161c377a63011d369243@37.27.109.36:26656,da8baf26d486b9dd268dc62dd962141592f40068@65.108.97.119:26656,d47a5d94defcfa5eaac0dfc136b227a215a8f2b9@37.27.109.45:26656,8a6be04c58c3e633f9d3d201fd03d23b6cfcb3d1@65.21.33.59:26656,75e62df2ed4615cabe38a7b2d645e329a800be47@185.205.246.212:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.entangled/config/config.toml
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0aNGL\"/" $HOME/.entangled/config/app.toml
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.entangled/config/config.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.entangled/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/.entangled/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.entangled/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.entangled/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.entangled/config/app.toml


# Set Custom Port
sed -i.bak -e "s%:1317%:${ENTANGLE_PORT}317%g;
s%:8080%:${ENTANGLE_PORT}080%g;
s%:9090%:${ENTANGLE_PORT}090%g;
s%:9091%:${ENTANGLE_PORT}091%g;
s%:8545%:${ENTANGLE_PORT}545%g;
s%:8546%:${ENTANGLE_PORT}546%g;
s%:6065%:${ENTANGLE_PORT}065%g" $HOME/.entangled/config/app.toml
sed -i.bak -e "s%:26658%:${ENTANGLE_PORT}658%g;
s%:26657%:${ENTANGLE_PORT}657%g;
s%:6060%:${ENTANGLE_PORT}060%g;
s%:26656%:${ENTANGLE_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${ENTANGLE_PORT}656\"%;
s%:26660%:${ENTANGLE_PORT}660%g" $HOME/.entangled/config/config.toml


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

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

[Install]
WantedBy=multi-user.target
EOF


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

## Auto Installation

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