#!/bin/bash -i cd ~ # Step 0: Welcome echo "This script is made with ❤️ by 0xOzgur @ https://quilibrium.space " echo "The script is prepared for Ubuntu machines. If you are using another operating system, please check the compatibility of the script." echo "The script doesn't install GO or GrpCurl packages. If you want to install them please visit https://docs.quilibrium.space/installing-prerequisites page." echo "⏳Enjoy and sit back while you are building your Quilibrium Node!" echo "⏳Processing..." sleep 10 # Add a 10-second delay # Check if ceremonyclient service exists and stop it if it does if sudo systemctl status ceremonyclient &> /dev/null; then echo "Ceremonyclient service found. Stopping..." sudo service ceremonyclient stop sleep 2 # Add a 2-second delay fi # Step 0: Increase Swap Space if [ ! -d /swap ]; then echo "Increasing swap space..." sudo mkdir /swap sudo fallocate -l 16G /swap/swapfile sudo chmod 600 /swap/swapfile sudo mkswap /swap/swapfile sudo swapon /swap/swapfile echo '/swap/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab else echo "Swap space already exists, skipping swap increase..." fi # 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.22.4.linux-amd64.tar.gz sudo tar -xvf go1.22.4.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.22.4.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 ~ if [ -d "ceremonyclient" ]; then echo "Directory ceremonyclient already exists, skipping git clone..." else until git clone https://source.quilibrium.com/quilibrium/ceremonyclient.git || git clone https://git.quilibrium-mirror.ch/agostbiro/ceremonyclient.git; do echo "Git clone failed, retrying..." sleep 2 done fi cd ~/ceremonyclient/ git checkout release-cdn # Build Ceremonyclient qClient echo "⏳Building qCiient" sleep 1 # Add a 1-second delay cd ~/ceremonyclient/node GOEXPERIMENT=arenas go build -o qclient main.go # Step 5:Determine the ExecStart line based on the architecture # Get the current user's home directory HOME=$(eval echo ~$HOME_DIR) # Use the home directory in the path NODE_PATH="$HOME/ceremonyclient/node" EXEC_START="$NODE_PATH/$NODE_BINARY" # Create Ceremonyclient Service echo "⏳Creating Ceremonyclient Service" sleep 1 # Add a 1-second delay # Check if the file exists before attempting to remove it if [ -f "/lib/systemd/system/ceremonyclient.service" ]; then # If the file exists, remove it rm /lib/systemd/system/ceremonyclient.service echo "ceremonyclient.service file removed." else # If the file does not exist, inform the user echo "ceremonyclient.service file does not exist. No action taken." fi sudo tee /lib/systemd/system/ceremonyclient.service > /dev/null <