Skip to content

Instantly share code, notes, and snippets.

@umair313
Last active March 7, 2023 06:57
Show Gist options
  • Save umair313/175cc5a2e81b786a5571dd3f0ef4e9ba to your computer and use it in GitHub Desktop.
Save umair313/175cc5a2e81b786a5571dd3f0ef4e9ba to your computer and use it in GitHub Desktop.
bash script to install the required packages and clone the project repository from github. Tested on Ubuntu 22.04, with digital ocean server.
#!/bin/bash
username=$1
github_email="github email used to generate SSH keys and clone the repository"
github_repo="repository SSH link"
server_ip=SERVER_IP
# Emoji
strong_emoji="\U1F4AA"
party_emoji="\U1F973"
echo -e "
echo ------------------------------
echo \"creating user ${username} \"
echo ------------------------------
useradd -m -s /bin/bash $username
if [ $? -eq 0 ]; then
echo -e \"user created! type a storng ${strong_emoji} password for $username\"
passwd $username
usermod -aG sudo $username
rsync --archive --chown=$username:$username ~/.ssh /home/$username
fi
" > create_user.sh
echo -e "
echo ------------------------------
echo \"Updating server \"
echo ------------------------------
sudo apt update -y
echo ------------------------------
echo installing packages
echo ------------------------------
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common make gnupg lsb-release
echo ------------------------------
echo -e \"installing Docker \U1F600\"
echo ------------------------------
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
\"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo docker run hello-world
echo -e \"\U1F600 all set up \n\n\"
echo ------------------------------
echo generating ssh keys, add these keys to github account to clone the repository
echo Don't provide passphares just hit enter on all the inputs
echo ------------------------------
ssh-keygen -t ed25519 -C \"${github_email}\"
echo -------------------PRIVATE KEY------------------
cat ~/.ssh/id_ed25519
echo -------------------PUBLIC KEY-------------------
cat ~/.ssh/id_ed25519.pub
echo ------------------------------------------------
read -n 1 -s -r -p\"Press Any Key to clone ${github_repo}:\";echo
git clone ${github_repo}
" > install_packages.sh
echo "copying generated bash files to remote server"
scp create_user.sh root@$server_ip:/root/
ssh -t root@$server_ip bash ./create_user.sh
echo "created user $username"
echo ------------------------------
echo "SSH into server with user $username"
echo ------------------------------
scp install_packages.sh "$username"@$server_ip:/home/"$username"
ssh -t "$username"@$server_ip bash ./install_packages.sh
echo -e "
${party_emoji} All setup run the bellow command to SSH into remote server\n
* ssh $username@$server_ip
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment