From 9c094744122ab2b5863060488b565e94db8e450e Mon Sep 17 00:00:00 2001 From: Roger Gonzalez Date: Sat, 7 Jan 2023 12:54:50 -0300 Subject: Moved setup to install --- install.sh | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- setup.sh | 185 ------------------------------------------------------------ 2 files changed, 182 insertions(+), 191 deletions(-) delete mode 100755 setup.sh diff --git a/install.sh b/install.sh index e6c8a42..3cd0751 100755 --- a/install.sh +++ b/install.sh @@ -1,9 +1,185 @@ -#!/usr/bin/env sh +#!/bin/bash set -eu -echo "We need your sudo password to install the script." -echo "You can check the script in https://gitlab.com/rogs/yams/-/blob/master/setup.sh" +printf "\033c" +echo "====================================================" +echo " ___ ___ ___ " +echo " ___ / /\ /__/\ / /\ " +echo " /__/| / /::\ | |::\ / /:/_ " +echo " | |:| / /:/\:\ | |:|:\ / /:/ /\ " +echo " | |:| / /:/~/::\ __|__|:|\:\ / /:/ /::\\" +echo " __|__|:| /__/:/ /:/\:\ /__/::::| \:\ /__/:/ /:/\:\\" +echo "/__/::::\ \ \:\/:/__\/ \ \:\~~\__\/ \ \:\/:/~/:/" +echo " ~\~~\:\ \ \::/ \ \:\ \ \::/ /:/ " +echo " \ \:\ \ \:\ \ \:\ \__\/ /:/ " +echo " \__\/ \ \:\ \ \:\ /__/:/ " +echo " \__\/ \__\/ \__\/ " +echo "====================================================" +echo "Welcome to YAMS (Yet Another Media Server)" +echo "Instalation process should be really quick" +echo "We just need you to answer some questions" +echo "====================================================" +echo "" -sudo rm -r /tmp/yams || true -git clone https://gitlab.com/rogs/yams.git /tmp/yams -sudo bash /tmp/yams/setup.sh +# ============================================================================================ +# Functions to ease development +# ============================================================================================ + +send_success_message() { + echo -e $(printf "\e[32m$1\e[0m") +} + +send_error_message() { + echo -e $(printf "\e[31m$1\e[0m") + exit 255 +} + +check_dependencides() { + if command -v $1 &> /dev/null; then + send_success_message "$1 exists ✅ " + else + send_error_message "⚠️ You need to have \"$1\" installed and in your PATH! EXITING ⚠️" + fi +} + +running_services_location() { + host_ip=$(hostname -I | awk '{ print $1 }') + echo "Sonarr: http://$host_ip:8989/" + echo "Radarr: http://$host_ip:7878/" + echo "Bazarr: http://$host_ip:6767/" + echo "Jackett: http://$host_ip:9117/" + echo "Emby: http://$host_ip:8096/" +} + +# ============================================================================================ +# Check all the prerequisites are installed before continuing +# ============================================================================================ +echo "Checking prerequisites..." + + +check_dependencides "docker" +check_dependencides "docker-compose" + +# ============================================================================================ + +# ============================================================================================ +# Gathering information +# ============================================================================================ +read -p "Where do you want to instal the docker-compose file? [/opt/yams] : " install_location + +# Checking if the install_location exists +install_location=${install_location:-/opt/yams} +[[ -f $install_location ]] || mkdir -p $install_location || send_error_message "There was an error with your install location! (Maybe you forgot to run with sudo?)" +install_location=$(realpath $install_location) +filename="$install_location/docker-compose.yaml" + +read -p "What's the user that is going to own the media server files? [$USER] : " username + +# Checking that the user exists +username=${username:-$USER} + +if id -u $username &>/dev/null; then + puid=$(id -u $username); + pgid=$(id -g $username); +else + send_error_message "The user $username doesn't exist!" +fi + +read -p "Please, input your entertainment folder: " entertainment_folder + +# Checking that the entertainment folder exists + +realpath $entertainment_folder &>/dev/null || send_error_message "There was an error with your entertainment folder! The directory \"$entertainment_folder\" does not exist!" + +entertainment_folder=$(realpath $entertainment_folder) + +read -p "Are you sure your entertainment folder is $entertainment_folder? [y/N]: " entertainment_folder_correct +entertainment_folder_correct=${entertainment_folder_correct:-"n"} + +if [ $entertainment_folder_correct == "n" ]; then + send_error_message "Entertainment folder is not correct. Please, fix it and run the script again" +fi + +echo "Configuring the docker-compose file for the user \"$username\" on \"$install_location\"..." +# ============================================================================================ + +# ============================================================================================ +# Actually installing everything! +# ============================================================================================ + +# Copy the docker-compose file from the example to the real one +echo "" +echo "Copying $filename..." + +cp docker-compose.example.yaml $filename || send_error_message "You need to have permissions on the folder! (Maybe you forgot to run with sudo?)" + +# Set PUID +sed -i -e "s//$puid/g" $filename + +# Set PGID +sed -i -e "s//$pgid/g" $filename + +# Set entertainment_folder +sed -i -e "s;;$entertainment_folder;g" $filename + +# Set yams script +sed -i -e "s;;$filename;g" yams + +send_success_message "Everything installed correctly! 🎉" +read -p "Do you want to run the script now? [Y/n]: " run_now +run_now=${run_now:-"y"} + +if [ $run_now == "y" ]; then + echo "Running the server..." + echo "This is going to take a while..." + docker-compose -f $filename up -d +else + echo "Perfect! You can run the server later using the following command:" + echo "" + echo "========================================================" + echo "docker-compose -f $filename up -d" + echo "========================================================" + echo "" +fi +# ============================================================================================ + +# ============================================================================================ +# Cleaning up... +# ============================================================================================ + +cp setup.sh $install_location +cp yams /usr/local/bin/yams && chmod +x /usr/local/bin/yams + + +printf "\033c" + +echo "========================================================" +echo " _____ ___ ___ ___ " +echo " / /::\ / /\ /__/\ / /\ " +echo " / /:/\:\ / /::\ \ \:\ / /:/_ " +echo " / /:/ \:\ / /:/\:\ \ \:\ / /:/ /\ " +echo " /__/:/ \__\:| / /:/ \:\ _____\__\:\ / /:/ /:/_ " +echo " \ \:\ / /:/ /__/:/ \__\:\ /__/::::::::\ /__/:/ /:/ /\\" +echo " \ \:\ /:/ \ \:\ / /:/ \ \:\~~\~~\/ \ \:\/:/ /:/" +echo " \ \:\/:/ \ \:\ /:/ \ \:\ ~~~ \ \::/ /:/ " +echo " \ \::/ \ \:\/:/ \ \:\ \ \:\/:/ " +echo " \__\/ \ \::/ \ \:\ \ \::/ " +echo " \__\/ \__\/ \__\/ " +echo "========================================================" +send_success_message "All done!✅ Enjoy YAMS!" +echo "You can check the installation on $install_location" +if [ $run_now == "y" ]; then + echo "========================================================" + echo "Everythins should be running now! To check everything running, go to:" + running_services_location + echo "You might need to wait for a couple of minutes while everything gets up and running" + echo "All the services location are also saved in ~/yams_services.txt" + running_services_location > ~/yams_services.txt +else + echo "========================================================" + echo "Since YAMS is not running yet, to run it just execute:" + echo "docker-compose -f $filename up -d" +fi +echo "========================================================" +exit 0 +# ============================================================================================ diff --git a/setup.sh b/setup.sh deleted file mode 100755 index 3cd0751..0000000 --- a/setup.sh +++ /dev/null @@ -1,185 +0,0 @@ -#!/bin/bash -set -eu - -printf "\033c" -echo "====================================================" -echo " ___ ___ ___ " -echo " ___ / /\ /__/\ / /\ " -echo " /__/| / /::\ | |::\ / /:/_ " -echo " | |:| / /:/\:\ | |:|:\ / /:/ /\ " -echo " | |:| / /:/~/::\ __|__|:|\:\ / /:/ /::\\" -echo " __|__|:| /__/:/ /:/\:\ /__/::::| \:\ /__/:/ /:/\:\\" -echo "/__/::::\ \ \:\/:/__\/ \ \:\~~\__\/ \ \:\/:/~/:/" -echo " ~\~~\:\ \ \::/ \ \:\ \ \::/ /:/ " -echo " \ \:\ \ \:\ \ \:\ \__\/ /:/ " -echo " \__\/ \ \:\ \ \:\ /__/:/ " -echo " \__\/ \__\/ \__\/ " -echo "====================================================" -echo "Welcome to YAMS (Yet Another Media Server)" -echo "Instalation process should be really quick" -echo "We just need you to answer some questions" -echo "====================================================" -echo "" - -# ============================================================================================ -# Functions to ease development -# ============================================================================================ - -send_success_message() { - echo -e $(printf "\e[32m$1\e[0m") -} - -send_error_message() { - echo -e $(printf "\e[31m$1\e[0m") - exit 255 -} - -check_dependencides() { - if command -v $1 &> /dev/null; then - send_success_message "$1 exists ✅ " - else - send_error_message "⚠️ You need to have \"$1\" installed and in your PATH! EXITING ⚠️" - fi -} - -running_services_location() { - host_ip=$(hostname -I | awk '{ print $1 }') - echo "Sonarr: http://$host_ip:8989/" - echo "Radarr: http://$host_ip:7878/" - echo "Bazarr: http://$host_ip:6767/" - echo "Jackett: http://$host_ip:9117/" - echo "Emby: http://$host_ip:8096/" -} - -# ============================================================================================ -# Check all the prerequisites are installed before continuing -# ============================================================================================ -echo "Checking prerequisites..." - - -check_dependencides "docker" -check_dependencides "docker-compose" - -# ============================================================================================ - -# ============================================================================================ -# Gathering information -# ============================================================================================ -read -p "Where do you want to instal the docker-compose file? [/opt/yams] : " install_location - -# Checking if the install_location exists -install_location=${install_location:-/opt/yams} -[[ -f $install_location ]] || mkdir -p $install_location || send_error_message "There was an error with your install location! (Maybe you forgot to run with sudo?)" -install_location=$(realpath $install_location) -filename="$install_location/docker-compose.yaml" - -read -p "What's the user that is going to own the media server files? [$USER] : " username - -# Checking that the user exists -username=${username:-$USER} - -if id -u $username &>/dev/null; then - puid=$(id -u $username); - pgid=$(id -g $username); -else - send_error_message "The user $username doesn't exist!" -fi - -read -p "Please, input your entertainment folder: " entertainment_folder - -# Checking that the entertainment folder exists - -realpath $entertainment_folder &>/dev/null || send_error_message "There was an error with your entertainment folder! The directory \"$entertainment_folder\" does not exist!" - -entertainment_folder=$(realpath $entertainment_folder) - -read -p "Are you sure your entertainment folder is $entertainment_folder? [y/N]: " entertainment_folder_correct -entertainment_folder_correct=${entertainment_folder_correct:-"n"} - -if [ $entertainment_folder_correct == "n" ]; then - send_error_message "Entertainment folder is not correct. Please, fix it and run the script again" -fi - -echo "Configuring the docker-compose file for the user \"$username\" on \"$install_location\"..." -# ============================================================================================ - -# ============================================================================================ -# Actually installing everything! -# ============================================================================================ - -# Copy the docker-compose file from the example to the real one -echo "" -echo "Copying $filename..." - -cp docker-compose.example.yaml $filename || send_error_message "You need to have permissions on the folder! (Maybe you forgot to run with sudo?)" - -# Set PUID -sed -i -e "s//$puid/g" $filename - -# Set PGID -sed -i -e "s//$pgid/g" $filename - -# Set entertainment_folder -sed -i -e "s;;$entertainment_folder;g" $filename - -# Set yams script -sed -i -e "s;;$filename;g" yams - -send_success_message "Everything installed correctly! 🎉" -read -p "Do you want to run the script now? [Y/n]: " run_now -run_now=${run_now:-"y"} - -if [ $run_now == "y" ]; then - echo "Running the server..." - echo "This is going to take a while..." - docker-compose -f $filename up -d -else - echo "Perfect! You can run the server later using the following command:" - echo "" - echo "========================================================" - echo "docker-compose -f $filename up -d" - echo "========================================================" - echo "" -fi -# ============================================================================================ - -# ============================================================================================ -# Cleaning up... -# ============================================================================================ - -cp setup.sh $install_location -cp yams /usr/local/bin/yams && chmod +x /usr/local/bin/yams - - -printf "\033c" - -echo "========================================================" -echo " _____ ___ ___ ___ " -echo " / /::\ / /\ /__/\ / /\ " -echo " / /:/\:\ / /::\ \ \:\ / /:/_ " -echo " / /:/ \:\ / /:/\:\ \ \:\ / /:/ /\ " -echo " /__/:/ \__\:| / /:/ \:\ _____\__\:\ / /:/ /:/_ " -echo " \ \:\ / /:/ /__/:/ \__\:\ /__/::::::::\ /__/:/ /:/ /\\" -echo " \ \:\ /:/ \ \:\ / /:/ \ \:\~~\~~\/ \ \:\/:/ /:/" -echo " \ \:\/:/ \ \:\ /:/ \ \:\ ~~~ \ \::/ /:/ " -echo " \ \::/ \ \:\/:/ \ \:\ \ \:\/:/ " -echo " \__\/ \ \::/ \ \:\ \ \::/ " -echo " \__\/ \__\/ \__\/ " -echo "========================================================" -send_success_message "All done!✅ Enjoy YAMS!" -echo "You can check the installation on $install_location" -if [ $run_now == "y" ]; then - echo "========================================================" - echo "Everythins should be running now! To check everything running, go to:" - running_services_location - echo "You might need to wait for a couple of minutes while everything gets up and running" - echo "All the services location are also saved in ~/yams_services.txt" - running_services_location > ~/yams_services.txt -else - echo "========================================================" - echo "Since YAMS is not running yet, to run it just execute:" - echo "docker-compose -f $filename up -d" -fi -echo "========================================================" -exit 0 -# ============================================================================================ -- cgit v1.2.3