#!/bin/bash if [ "$(id -u)" != "0" ]; then echo -e "\033[31mThis script requires superuser rights.\033[0m" exit 0 fi if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then echo "Please provide SERVER_HOST SERVER_ORIGIN_PASSWORD GITEA_API_ADD_SSH_KEY as arguments" exit 1 fi SERVER_HOST=$1 SERVER_ORIGIN_PASSWORD=$2 GITEA_API_ADD_SSH_KEY=$3 REMOTE_USER="root" 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 "create global environment vars..." bash global-env.sh SERVER_DOMAIN $SERVER_HOST bash global-env.sh ADMIN_EMAIL $ADMINEMAIL bash global-env.sh SRV_START_DIR $SERVER_NAME 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 "