diff --git a/install/install.sh b/install/install.sh new file mode 100644 index 0000000..6fc0a20 --- /dev/null +++ b/install/install.sh @@ -0,0 +1,132 @@ +#!/bin/bash -i + +cd ~ + +# Step 0: Welcome +echo "This script is made with ❤️ by 0xOzgur.eth" +echo "⏳Enjoy and sit back while you are building your Quilibrium Node!" +echo "⏳Processing..." +sleep 10 # Add a 10-second delay + + +# Step 1: Update and Upgrade the Machine +echo "Updating the machine" +echo "⏳Processing..." +sleep 2 # Add a 2-second delay +apt update +apt upgrade -y +apt install sudo -y +apt install git -y + +# Step 2: Adjust network buffer sizes +echo "Adjusting network buffer sizes..." +if grep -q "^net.core.rmem_max=600000000$" /etc/sysctl.conf; then + echo "net.core.rmem_max=600000000 found inside /etc/sysctl.conf, skipping..." +else + echo -e "\n# Change made to increase buffer sizes for better network performance for ceremonyclient\nnet.core.rmem_max=600000000" | sudo tee -a /etc/sysctl.conf > /dev/null +fi +if grep -q "^net.core.wmem_max=600000000$" /etc/sysctl.conf; then + echo "net.core.wmem_max=600000000 found inside /etc/sysctl.conf, skipping..." +else + echo -e "\n# Change made to increase buffer sizes for better network performance for ceremonyclient\nnet.core.wmem_max=600000000" | sudo tee -a /etc/sysctl.conf > /dev/null +fi +sudo sysctl -p + + +# Installing Go 1.20.14 +wget https://go.dev/dl/go1.20.14.linux-amd64.tar.gz +sudo tar -xvf go1.20.14.linux-amd64.tar.gz || { echo "Failed to extract Go! Exiting..."; exit_message; exit 1; } +sudo mv go /usr/local || { echo "Failed to move go! Exiting..."; exit_message; exit 1; } +sudo rm go1.20.14.linux-amd64.tar.gz || { echo "Failed to remove downloaded archive! Exiting..."; exit_message; exit 1; } + + +# Step 4: Set Go environment variables +echo "⏳Setting Go environment variables..." +sleep 5 # Add a 5-second delay + +# Check if GOROOT is already set +if grep -q 'GOROOT=/usr/local/go' ~/.bashrc; then + echo "GOROOT already set in ~/.bashrc." +else + echo 'GOROOT=/usr/local/go' >> ~/.bashrc + echo "GOROOT set in ~/.bashrc." +fi + +# Check if GOPATH is already set +if grep -q "GOPATH=$HOME/go" ~/.bashrc; then + echo "GOPATH already set in ~/.bashrc." +else + echo "GOPATH=$HOME/go" >> ~/.bashrc + echo "GOPATH set in ~/.bashrc." +fi + +# Check if PATH is already set +if grep -q 'PATH=$GOPATH/bin:$GOROOT/bin:$PATH' ~/.bashrc; then + echo "PATH already set in ~/.bashrc." +else + echo 'PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> ~/.bashrc + echo "PATH set in ~/.bashrc." +fi + +# Source .bashrc to apply changes +echo "⏳Sourcing .bashrc to apply changes" +source ~/.bashrc +sleep 5 # Add a 5-second delay + +# Check GO Version +go version +sleep 5 # Add a 5-second delay + +# Install gRPCurl +echo "⏳Installing gRPCurl" +sleep 1 # Add a 1-second delay +go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest + +# Download Ceremonyclient +echo "⏳Downloading Ceremonyclient" +sleep 1 # Add a 1-second delay +cd ~ +git clone https://github.com/QuilibriumNetwork/ceremonyclient.git + +# Build Ceremonyclient +echo "⏳Building Ceremonyclient" +sleep 1 # Add a 1-second delay +cd ~/ceremonyclient/node +GOEXPERIMENT=arenas go install ./... + +# Build Ceremonyclient qClient +echo "⏳Building qCiient" +sleep 1 # Add a 1-second delay +cd ~/ceremonyclient/client +GOEXPERIMENT=arenas go build -o qclient main.go + +# Create Ceremonyclient Service +echo "⏳Creating Ceremonyclient Service" +sleep 1 # Add a 1-second delay +sudo tee /lib/systemd/system/ceremonyclient.service > /dev/null < /dev/null -fi -if grep -q "^net.core.wmem_max=600000000$" /etc/sysctl.conf; then - echo "net.core.wmem_max=600000000 found inside /etc/sysctl.conf, skipping..." -else - echo -e "\n# Change made to increase buffer sizes for better network performance for ceremonyclient\nnet.core.wmem_max=600000000" | sudo tee -a /etc/sysctl.conf > /dev/null -fi -sudo sysctl -p - -# Step 3:Download Ceremonyclient -echo "⏳Downloading Ceremonyclient" -sleep 2 # Add a 2-second delay -git clone https://github.com/QuilibriumNetwork/ceremonyclient.git - -cd ~/ceremonyclient/node - -# Step 4:Download Binary -echo "⏳Downloading Binary" -sleep 2 # Add a 2-second delay -wget https://github.com/QuilibriumNetwork/ceremonyclient/releases/download/v1.4.17/node-1.4.17-linux-amd64.bin -ls -mv node*.bin node - -# Step 5:Make the file executable -echo "⏳Making the Binary executable" -sleep 2 # Add a 2-second delay -chmod +x node - -# Step 6:Create Ceremonyclient Service -echo "⏳Creating Ceremonyclient Service" -sleep 2 # Add a 2-second delay -sudo tee /lib/systemd/system/ceremonyclient.service > /dev/null <> ~/.bashrc - echo "GOROOT set in ~/.bashrc." -fi - -# Check if GOPATH is already set -if grep -q "GOPATH=$HOME/go" ~/.bashrc; then - echo "GOPATH already set in ~/.bashrc." -else - echo "GOPATH=$HOME/go" >> ~/.bashrc - echo "GOPATH set in ~/.bashrc." -fi - -# Check if PATH is already set -if grep -q 'PATH=$GOPATH/bin:$GOROOT/bin:$PATH' ~/.bashrc; then - echo "PATH already set in ~/.bashrc." -else - echo 'PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> ~/.bashrc - echo "PATH set in ~/.bashrc." -fi - -# Source .bashrc to apply changes -echo "⏳Sourcing .bashrc to apply changes" -source ~/.bashrc -sleep 5 # Add a 5-second delay - -# Check GO Version -go version -sleep 5 # Add a 5-second delay - -# Install gRPCurl -echo "⏳Installing gRPCurl" -sleep 1 # Add a 1-second delay -go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest - -# Download Ceremonyclient +# Step 3:Download Ceremonyclient echo "⏳Downloading Ceremonyclient" -sleep 1 # Add a 1-second delay -cd ~ +sleep 2 # Add a 2-second delay git clone https://github.com/QuilibriumNetwork/ceremonyclient.git -# Build Ceremonyclient -echo "⏳Building Ceremonyclient" -sleep 1 # Add a 1-second delay cd ~/ceremonyclient/node -GOEXPERIMENT=arenas go install ./... -# Build Ceremonyclient qClient -echo "⏳Building qCiient" -sleep 1 # Add a 1-second delay -cd ~/ceremonyclient/client -GOEXPERIMENT=arenas go build -o qclient main.go +# Step 4:Download Binary +echo "⏳Downloading Binary" +sleep 2 # Add a 2-second delay +wget https://github.com/QuilibriumNetwork/ceremonyclient/releases/download/v1.4.17/node-1.4.17-linux-amd64.bin +ls +mv node*.bin node -# Create Ceremonyclient Service +# Step 5:Make the file executable +echo "⏳Making the Binary executable" +sleep 2 # Add a 2-second delay +chmod +x node + +# Step 6:Create Ceremonyclient Service echo "⏳Creating Ceremonyclient Service" -sleep 1 # Add a 1-second delay +sleep 2 # Add a 2-second delay sudo tee /lib/systemd/system/ceremonyclient.service > /dev/null < /dev/null < /dev/null < /dev/null <