install/install.sh
2024-08-05 06:04:51 +05:00

87 lines
2.4 KiB
Bash

#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo -e "\033[31mThis script requires superuser rights.\033[0m"
exit 0
fi
if [ -z "$1" ]; then
echo "Please provide SERVER_HOST as argument"
exit 1
fi
REMOTE_USER="root"
SERVER_HOST=$1
SECRETS_PATH=/data/secrets/$SERVER_HOST/$SERVER_HOST.env
trap 'echo -e "\033[31minstall.sh: Something went wrong\033[0m"; exit 1' ERR
set -e
export DEBIAN_FRONTEND=noninteractive
source $SECRETS_PATH
echo "Keygen SSH keys for $SERVER_NAME..."
if [ -f ~/.ssh/id_ed25519 ]; then
echo "SSH key already exists: ~/.ssh/id_ed25519"
else
ssh-keygen -t ed25519 -C "$SERVER_NAME" -f ~/.ssh/id_ed25519 -N ""
fi
echo "Install sshpass..."
apt-get update
apt-get install -y sshpass
echo "Install public SSH key from HOST to ORIGIN..."
sshpass -p $SERVER_ORIGIN_PASSWORD ssh-copy-id -i ~/.ssh/id_ed25519.pub -o StrictHostKeyChecking=no $REMOTE_USER@$SERVER_ORIGIN_DOMAIN
echo "Add public SSH key to gitea app..."
SSH_PUBLIC_KEY=$(cat ~/.ssh/id_ed25519.pub)
echo "Get SSH keys list from gitea API..."
keys=$(curl -X GET -H "Authorization: token $GITEA_API_ADD_SSH_KEY" "https://$GITEA_DOMAIN/api/v1/user/keys")
echo "Search SSH key in gitea..."
existing_key_id=$(echo $keys | jq -r ".[] | select(.title == \"$SERVER_NAME\") | .id")
echo "If already exist SSH key in gitea, remove it..."
if [ -n "$existing_key_id" ]; then
curl -X DELETE -H "Authorization: token $GITEA_API_ADD_SSH_KEY" "https://$GITEA_DOMAIN/api/v1/user/keys/$existing_key_id"
echo "SSH key removed"
fi
echo "Add new SSH public key in gitea..."
curl -X POST \
"https://$GITEA_DOMAIN/api/v1/user/keys" \
-H "Authorization: token $GITEA_API_ADD_SSH_KEY" \
-H "Content-Type: application/json" \
-d "{
\"title\": \"$SERVER_NAME\",
\"key\": \"$SSH_PUBLIC_KEY\"
}"
echo "Install utils from gitea origin..."
cd /data
echo "Connect to git repository on host: $GIT_SSH_DOMAIN"
echo "On username: $GIT_USER"
git clone git@"$GIT_SSH_DOMAIN":"$GIT_USER"/utils.git
cd /data/utils
echo "Run init-server script..."
bash init-server.sh
echo "Install $SERVER_NAME from gitea origin..."
cd /data
echo "Connect to git repository on host: $GIT_SSH_DOMAIN"
echo "On username: $GIT_USER"
git clone git@"$GIT_SSH_DOMAIN":"$GIT_USER"/$SERVER_NAME.git
cd /data/$SERVER_NAME
echo "Run $SERVER_NAME install.sh..."
bash /data/$SERVER_NAME/install.sh $SERVER_HOST
trap - ERR
echo "Install complete. Please exit and login again on port $SSH_PORT with ssh key "