### Version v1.0.0 2023-12-29 - StevieTV - adapted from servarr script for Sonarr installs
### Version V1.0.1 2024-01-02 - StevieTV - remove UTF8-BOM
### Version V1.0.2 2024-01-03 - markus101 - Get user input from /dev/tty
### Version V1.0.3 2024-01-06 - StevieTV - exit script when it is ran from install directory
### Version V1.0.3 2024-01-06 - StevieTV - exit script when it is ran from install
### Version V1.0.4 2024-04-10 - nostrusdominion - added colors, moved root check, added title splash screen, improved readablity, changed app_prereq to not bother apt if they are already installed, supressed tarball extraction, add sleep timers.
### Boilerplate Warning
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
@ -16,27 +17,55 @@
#OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
#WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### Colors
green='\033[0;32m'
yellow='\033[1;33m'
red='\033[0;31m'
brown='\033[0;33m'
reset='\033[0m'# No Color
scriptversion="1.0.3"
scriptdate="2024-01-06"
set -euo pipefail
echo"Running Sonarr Install Script - Version [$scriptversion] as of [$scriptdate]"
echo -e " Running version ${brown}[$scriptversion]${reset} as of ${brown}[$scriptdate]${reset}"
# Stuff the gremlins needs to know
app="sonarr"
app_port="8989"
app_prereq="curl sqlite3 wget"
app_umask="0002"
branch="main"
# Constants
### CONSTANTS
### Update these variables as required for your specific instance
installdir="/opt"# {Update me if needed} Install Location
bindir="${installdir}/${app^}"# Full Path to Install Location
@ -45,22 +74,50 @@ app_bin=${app^} # Binary Name of the app
# This script should not be ran from installdir, otherwise later in the script the extracted files will be removed before they can be moved to installdir.
echo -e " It is ${red}CRITICAL${reset} that the ${brown}User${reset} and ${brown}Group${reset} you select"
echo -e " to run ${brown}[${app^}]${reset} will have both ${red}READ${reset} and ${red}WRITE${reset} access"
echo -e " to your Media Library and Download Client directories!"${reset}
# Prompt User
read -r -p "What user should ${app^} run as? (Default: $app): " app_uid < /dev/tty
echo""
read -r -p "What user should [${app^}] run as? (Default: $app): " app_uid
app_uid=$(echo"$app_uid"| tr -d ' ')
app_uid=${app_uid:-$app}
# Prompt Group
read -r -p "What group should ${app^} run as? (Default: media): " app_guid < /dev/tty
echo""
read -r -p "What group should [${app^}] run as? (Default: media): " app_guid
app_guid=$(echo"$app_guid"| tr -d ' ')
app_guid=${app_guid:-media}
echo"This will install [${app^}] to [$bindir] and use [$datadir] for the AppData Directory"
echo"${app^} will run as the user [$app_uid] and group [$app_guid]. By continuing, you've confirmed that that user and group will have READ and WRITE access to your Media Library and Download Client Completed Download directories"
read -n 1 -r -s -p $'Press enter to continue or ctrl+c to exit...\n' < /dev/tty
# Info for the user and user confirmation
echo""
echo -e "${brown}[${app^}]${reset} will be installed to ${brown}[$bindir]${reset} and use ${brown}[$datadir]${reset} for the AppData Directory"
echo""
echo -e "${brown}${app^}${reset} will run as the user ${brown}[$app_uid]${reset} and group ${brown}[$app_guid]${reset}."
echo""
echo -e " By continuing, you've ${red}CONFIRMED${reset} that that ${brown}[$app_uid]${reset} and ${brown}[$app_guid]${reset}"
echo -e " will have both ${red}READ${reset} and ${red}WRITE${reset} access to all required directories."
# User confirmation for installation to continue.
echo
read -r -p "Please type 'yes' to continue with the installation: " response
if[[$response !="yes"&&$response !="YES"]];then
echo"Invalid response. Operation is canceled!"
echo"Exiting script!"
exit0
fi
# Create User / Group as needed
if["$app_guid" !="$app_uid"];then
@ -70,35 +127,61 @@ if [ "$app_guid" != "$app_uid" ]; then