summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Gonzalez <roger@rogs.me>2023-10-21 15:09:40 -0300
committerRoger Gonzalez <roger@rogs.me>2023-10-21 15:09:40 -0300
commitf5c161dce195cf0b951977d70f6c15c29ff5c834 (patch)
treecd84d67e835397b30eb0bd69fb0272d985384f11
parente2cda39364463e092acf72c7a32989a7182796ad (diff)
First iteration for literate config
-rw-r--r--docs.org444
-rw-r--r--install_new.sh268
2 files changed, 712 insertions, 0 deletions
diff --git a/docs.org b/docs.org
new file mode 100644
index 0000000..ab71780
--- /dev/null
+++ b/docs.org
@@ -0,0 +1,444 @@
+#+title: Docs
+#+PROPERTY: header-args :tangle install_new.sh
+#+auto_tangle: t
+
+* Table of contents :toc:
+:PROPERTIES:
+:ID: faf95c8a-9133-4072-8544-0ef456a67611
+:END:
+
+- [[#welcome-message][Welcome message]]
+- [[#functions][Functions]]
+ - [[#message-formatting][Message formatting]]
+ - [[#check-the-dependencies][Check the dependencies]]
+ - [[#running-services-location][Running services location]]
+- [[#verify-all-the-dependencies][Verify all the dependencies]]
+- [[#gather-all-the-required-information][Gather all the required information]]
+ - [[#checking-install-location][Checking install location]]
+ - [[#verify-media-folder][Verify media folder]]
+ - [[#setting-perferred-media-service][Setting perferred media service]]
+ - [[#setting-the-vpn][Setting the VPN]]
+- [[#installing-yams][Installing YAMS]]
+ - [[#copy-the-docker-compose-file-to-the-install-location][Copy the docker-compose file to the install location]]
+ - [[#set-puid-pgid-media-folder-media-service-config-folder-and-vpn][Set PUID, PGID, Media Folder, Media Service, Config folder and VPN]]
+ - [[#set-the-configuration-for-the-yams-binary][Set the configuration for the YAMS binary]]
+ - [[#success-message][Success message!]]
+- [[#clean-up][Clean up]]
+ - [[#install-the-yams-cli][Install the YAMS CLI]]
+- [[#display-closing-message][Display closing message]]
+
+* Welcome message
+:PROPERTIES:
+:ID: 525c03eb-cab9-44f8-8cc5-e5ec9035a938
+:END:
+
+This is just a welcome message for the script
+
+#+begin_src bash
+#!/bin/bash
+set -euo pipefail
+
+printf "\033c"
+echo "===================================================="
+echo " ___ ___ ___ "
+echo " ___ / /\ /__/\ / /\ "
+echo " /__/| / /::\ | |::\ / /:/_ "
+echo " | |:| / /:/\:\ | |:|:\ / /:/ /\ "
+echo " | |:| / /:/~/::\ __|__|:|\:\ / /:/ /::\\"
+echo " __|__|:| /__/:/ /:/\:\ /__/::::| \:\ /__/:/ /:/\:\\"
+echo "/__/::::\ \ \:\/:/__\/ \ \:\~~\__\/ \ \:\/:/~/:/"
+echo " ~\~~\:\ \ \::/ \ \:\ \ \::/ /:/ "
+echo " \ \:\ \ \:\ \ \:\ \__\/ /:/ "
+echo " \__\/ \ \:\ \ \:\ /__/:/ "
+echo " \__\/ \__\/ \__\/ "
+echo "===================================================="
+echo "Welcome to YAMS (Yet Another Media Server)"
+echo "Installation process should be really quick"
+echo "We just need you to answer some questions"
+echo "We are going to ask for your sudo password in the end"
+echo "To finish the installation of the CLI"
+echo "===================================================="
+echo ""
+#+end_src
+
+* Functions
+:PROPERTIES:
+:ID: 111a7df4-08f5-4e6c-a799-dd822c5d030e
+:END:
+
+To make development easier, we declare some functions that are going to be used a lot later
+
+** Message formatting
+:PROPERTIES:
+:ID: 61387bd4-2ecf-44fe-ac69-dc6347c0d1b8
+:END:
+Both of these functions format the message in different colors, depending on what the message means
+*** Success
+:PROPERTIES:
+:ID: ec8f113c-43f9-4585-a1b5-8c7ec4e84bb2
+:END:
+
+#+begin_src bash
+send_success_message() {
+ echo -e $(printf "\e[32m$1\e[0m")
+}
+#+end_src
+
+*** Error
+:PROPERTIES:
+:ID: 1a6cd951-c9ce-46fc-8953-f5e206f7cd23
+:END:
+
+Error is basically the same as before, but it ~exit 255~ to finish the execution.
+
+#+begin_src bash
+send_error_message() {
+ echo -e $(printf "\e[31m$1\e[0m")
+ exit 255
+}
+#+end_src
+
+** Check the dependencies
+:PROPERTIES:
+:ID: e7d01eeb-c7ef-42ff-b60d-010be30bc6a8
+:END:
+
+This function verifies that the dependencies are installed. ~Docker~ and ~docker-compose~ are required
+for YAMS to work.
+
+#+begin_src bash
+check_dependencides() {
+ if command -v $1 &> /dev/null; then
+ send_success_message "$1 exists ✅ "
+ else
+ echo -e $(printf "\e[31m ⚠️ $1 not found! ⚠️\e[0m")
+ read -p "Do you want YAMS to install docker and docker-compose? IT ONLY WORKS ON DEBIAN AND UBUNTU! [y/N]: " install_docker
+ install_docker=${install_docker:-"n"}
+
+ if [ "$install_docker" == "y" ]; then
+ bash ./docker.sh
+ else
+ send_error_message "Install docker and docker-compose and come back later!"
+ fi
+ fi
+}
+#+end_src
+
+** Running services location
+:PROPERTIES:
+:ID: 53213557-edfe-4da7-88c0-e0e202429116
+:END:
+
+This function just displays the locations for every container so the user can access to it when YAMS
+finish installing.
+
+#+begin_src bash
+running_services_location() {
+ host_ip=$(hostname -I | awk '{ print $1 }')
+ echo "qBittorrent: http://$host_ip:8080/"
+ echo "Radarr: http://$host_ip:7878/"
+ echo "Sonarr: http://$host_ip:8989/"
+ echo "Lidarr: http://$host_ip:8686/"
+ echo "Readarr: http://$host_ip:8787/"
+ echo "Prowlarr: http://$host_ip:9696/"
+ echo "Bazarr: http://$host_ip:6767/"
+ echo "$media_service: http://$host_ip:$media_service_port/"
+ echo "Portainer: http://$host_ip:9000/"
+}
+#+end_src
+
+* Verify all the dependencies
+:PROPERTIES:
+:ID: e945d5a8-5142-41fe-8175-96de7aa84cf2
+:END:
+
+#+begin_src bash
+echo "Checking prerequisites..."
+
+
+check_dependencides "docker"
+check_dependencides "docker-compose"
+
+if [[ "$EUID" = 0 ]]; then
+ send_error_message "YAMS has to run without sudo! Please, run it again with regular permissions"
+fi
+#+end_src
+
+* Gather all the required information
+:PROPERTIES:
+:ID: 438cecef-2bd6-4d7c-b429-6c674ae311d9
+:END:
+** Checking install location
+:PROPERTIES:
+:ID: fff12355-9d79-40fe-a540-cfba2a176a3e
+:END:
+
+#+begin_src bash
+read -p "Where do you want to install the docker-compose file? [/opt/yams]: " install_location
+
+install_location=${install_location:-/opt/yams}
+[[ -f "$install_location" ]] || mkdir -p "$install_location" || send_error_message "There was an error with your install location! Make sure the directory exists and the user \"$USER\" has permissions on it"
+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
+
+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 media folder [/srv/media]: " media_folder
+media_folder=${media_folder:-"/srv/media"}
+#+end_src
+
+** Verify media folder
+:PROPERTIES:
+:ID: 9726dead-8833-4f23-98b8-2790d72605de
+:END:
+
+#+begin_src bash
+realpath "$media_folder" &>/dev/null || send_error_message "There was an error with your media folder! The directory \"$media_folder\" does not exist!"
+
+media_folder=$(realpath "$media_folder")
+
+read -p "Are you sure your media folder is \"$media_folder\"? [y/N]: " media_folder_correct
+media_folder_correct=${media_folder_correct:-"n"}
+
+if [ "$media_folder_correct" == "n" ]; then
+ send_error_message "Media folder is not correct. Please, fix it and run the script again"
+fi
+#+end_src
+
+** Setting perferred media service
+:PROPERTIES:
+:ID: 3af8dbed-3a88-4739-a721-6434993c0b67
+:END:
+
+#+begin_src bash
+echo
+echo
+echo
+echo "Time to choose your media service."
+echo "Your media service is the one responsible for serving your files to your network."
+echo "By default, YAMS support 3 media services:"
+echo "- jellyfin (recommended, easier)"
+echo "- emby"
+echo "- plex (advanced, always online)"
+read -p "Choose your media service [jellyfin]: " media_service
+media_service=${media_service:-"jellyfin"}
+media_service=$(echo "$media_service" | sed -e 's/\(.*\)/\L\1/')
+
+media_service_port=8096
+if [ "$media_service" == "plex" ]; then
+ media_service_port=32400
+fi
+
+if echo "emby plex jellyfin" | grep -qw "$media_service"; then
+ echo "YAMS is going to install \"$media_service\" on port \"$media_service_port\""
+else
+ send_error_message "\"$media_service\" is not supported by YAMS. Are you sure you chose the correct service?"
+fi
+#+end_src
+
+** Setting the VPN
+:PROPERTIES:
+:ID: 1da4fe67-ee20-4b70-8f36-4a9f7161b6ca
+:END:
+
+#+begin_src bash
+echo
+echo
+echo
+echo "Time to set up the VPN."
+echo "You can check the supported VPN list here: https://yams.media/advanced/vpn."
+read -p "Do you want to configure a VPN? [Y/n]: " setup_vpn
+setup_vpn=${setup_vpn:-"y"}
+
+if [ "$setup_vpn" == "y" ]; then
+ read -p "What's your VPN service? (with spaces) [mullvad]: " vpn_service
+ vpn_service=${vpn_service:-"mullvad"}
+ echo
+ echo "You should read $vpn_service's documentation in case it has different configurations for username and password."
+ echo "The documentation for $vpn_service is here: https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/${vpn_service// /-}.md"
+ echo
+ read -p "What's your VPN username? (without spaces): " vpn_user
+
+ unset vpn_password
+ charcount=0
+ prompt="What's your VPN password? (if you are using mullvad, just enter your username again): "
+ while IFS= read -p "$prompt" -r -s -n 1 char
+ do
+ if [[ $char == $'\0' ]]
+ then
+ break
+ fi
+ if [[ $char == $'\177' ]] ; then
+ if [ $charcount -gt 0 ] ; then
+ charcount=$((charcount-1))
+ prompt=$'\b \b'
+ vpn_password="${vpn_password%?}"
+ else
+ prompt=''
+ fi
+ else
+ charcount=$((charcount+1))
+ prompt='*'
+ vpn_password+="$char"
+ fi
+ done
+ echo
+
+ echo "What country do you want to use?"
+ echo "If you are using: NordVPN, Perfect Privacy, Private Internet Access, VyprVPN, WeVPN or Windscribe, then input a region"
+ read -p "You can check the countries/regions list for your VPN here: https://github.com/qdm12/gluetun/wiki/$vpn_service#servers [brazil]: " vpn_country
+ vpn_country=${vpn_country:-"brazil"}
+fi
+
+echo "Configuring the docker-compose file for the user \"$username\" on \"$install_location\"..."
+#+end_src
+
+* Installing YAMS
+:PROPERTIES:
+:ID: 44e5f3f1-3ae7-4f88-ba96-8149c9980fb2
+:END:
+** Copy the docker-compose file to the install location
+:PROPERTIES:
+:ID: 09018e25-ed48-46e9-85c3-586c37844c11
+:END:
+
+#+begin_src bash
+echo ""
+echo "Copying $filename..."
+
+cp docker-compose.example.yaml "$filename" || send_error_message "Your user ($USER) needs to have permissions on the installation folder!"
+#+end_src
+
+** Set PUID, PGID, Media Folder, Media Service, Config folder and VPN
+:PROPERTIES:
+:ID: 3d169001-f0f7-477f-a954-0460484f4b43
+:END:
+
+#+begin_src bash
+# Set PUID
+sed -i -e "s/<your_PUID>/$puid/g" "$filename"
+
+# Set PGID
+sed -i -e "s/<your_PGID>/$pgid/g" "$filename"
+
+# Set media_folder
+sed -i -e "s;<media_folder>;$media_folder;g" "$filename"
+
+# Set media_service
+sed -i -e "s;<media_service>;$media_service;g" "$filename"
+if [ "$media_service" == "plex" ]; then
+ sed -i -e "s;#network_mode: host # plex;network_mode: host # plex;g" "$filename"
+fi
+
+# Set config folder
+sed -i -e "s;<install_location>;$install_location;g" "$filename"
+
+# Set VPN
+if [ "$setup_vpn" == "y" ]; then
+ sed -i -e "s;<vpn_service>;$vpn_service;g" "$filename"
+ sed -i -e "s;<vpn_user>;$vpn_user;g" "$filename"
+ sed -i -e "s;<vpn_country>;$vpn_country;g" "$filename"
+ sed -i -e "s;<vpn_password>;$vpn_password;g" "$filename"
+ sed -i -e "s;#network_mode: \"service:gluetun\";network_mode: \"service:gluetun\";g" "$filename"
+ sed -i -e "s;ports: # qbittorrent;#port: # qbittorrent;g" "$filename"
+ sed -i -e "s;- 8080:8080 # qbittorrent;#- 8080:8080 # qbittorrent;g" "$filename"
+ sed -i -e "s;#- 8080:8080/tcp # gluetun;- 8080:8080/tcp # gluetun;g" "$filename"
+ if echo "nordvpn perfect privacy private internet access vyprvpn wevpn windscribe" | grep -qw "$vpn_service"; then
+ sed -i -e "s;SERVER_COUNTRIES;SERVER_REGIONS;g" "$filename"
+ fi
+fi
+#+end_src
+
+** Set the configuration for the YAMS binary
+:PROPERTIES:
+:ID: b6a8732f-9dbe-4d93-b04d-27156eacdea2
+:END:
+
+#+begin_src bash
+sed -i -e "s;<filename>;$filename;g" yams
+sed -i -e "s;<install_location>;$install_location;g" yams
+#+end_src
+
+** Success message!
+:PROPERTIES:
+:ID: 7b0ed8f5-780b-4685-8123-8d5c4229eaba
+:END:
+
+Finally, YAMS is installed 🔥. Show the success message
+
+#+begin_src bash
+send_success_message "Everything installed correctly! 🎉"
+
+echo "Running the server..."
+echo "This is going to take a while..."
+
+docker-compose -f "$filename" up -d
+#+end_src
+* Clean up
+:PROPERTIES:
+:ID: 65ce5828-b69a-4a0e-83f6-b029e19caea1
+:END:
+** Install the YAMS CLI
+:PROPERTIES:
+:ID: f4f9d166-8a2b-4d79-bc7f-fe73ecf5fb77
+:END:
+
+#+begin_src bash
+send_success_message "We need your sudo password to install the yams CLI and correct permissions..."
+sudo cp yams /usr/local/bin/yams && sudo chmod +x /usr/local/bin/yams
+[[ -f "$media_folder" ]] || sudo mkdir -p "$media_folder" || send_error_message "There was an error with your install location!"
+sudo chown -R "$puid":"$pgid" "$media_folder"
+[[ -f $install_location/config ]] || sudo mkdir -p "$install_location/config"
+sudo chown -R "$puid":"$pgid" "$install_location"
+#+end_src
+
+* Display closing message
+:PROPERTIES:
+:ID: 238e3eae-9df7-4a7f-a460-7a61c07b5442
+:END:
+
+#+begin_src bash
+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"
+echo "========================================================"
+echo "Everything should be running now! To check everything running, go to:"
+echo
+running_services_location
+echo
+echo
+echo "You might need to wait for a couple of minutes while everything gets up and running"
+echo
+echo "All the services location are also saved in ~/yams_services.txt"
+running_services_location > ~/yams_services.txt
+echo "========================================================"
+echo
+echo "To configure YAMS, check the documentation at"
+echo "https://yams.media/config"
+echo
+echo "========================================================"
+exit 0
+#+end_src
diff --git a/install_new.sh b/install_new.sh
new file mode 100644
index 0000000..e6b0b08
--- /dev/null
+++ b/install_new.sh
@@ -0,0 +1,268 @@
+#!/bin/bash
+set -euo pipefail
+
+printf "\033c"
+echo "===================================================="
+echo " ___ ___ ___ "
+echo " ___ / /\ /__/\ / /\ "
+echo " /__/| / /::\ | |::\ / /:/_ "
+echo " | |:| / /:/\:\ | |:|:\ / /:/ /\ "
+echo " | |:| / /:/~/::\ __|__|:|\:\ / /:/ /::\\"
+echo " __|__|:| /__/:/ /:/\:\ /__/::::| \:\ /__/:/ /:/\:\\"
+echo "/__/::::\ \ \:\/:/__\/ \ \:\~~\__\/ \ \:\/:/~/:/"
+echo " ~\~~\:\ \ \::/ \ \:\ \ \::/ /:/ "
+echo " \ \:\ \ \:\ \ \:\ \__\/ /:/ "
+echo " \__\/ \ \:\ \ \:\ /__/:/ "
+echo " \__\/ \__\/ \__\/ "
+echo "===================================================="
+echo "Welcome to YAMS (Yet Another Media Server)"
+echo "Installation process should be really quick"
+echo "We just need you to answer some questions"
+echo "We are going to ask for your sudo password in the end"
+echo "To finish the installation of the CLI"
+echo "===================================================="
+echo ""
+
+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
+ echo -e $(printf "\e[31m ⚠️ $1 not found! ⚠️\e[0m")
+ read -p "Do you want YAMS to install docker and docker-compose? IT ONLY WORKS ON DEBIAN AND UBUNTU! [y/N]: " install_docker
+ install_docker=${install_docker:-"n"}
+
+ if [ "$install_docker" == "y" ]; then
+ bash ./docker.sh
+ else
+ send_error_message "Install docker and docker-compose and come back later!"
+ fi
+ fi
+}
+
+running_services_location() {
+ host_ip=$(hostname -I | awk '{ print $1 }')
+ echo "qBittorrent: http://$host_ip:8080/"
+ echo "Radarr: http://$host_ip:7878/"
+ echo "Sonarr: http://$host_ip:8989/"
+ echo "Lidarr: http://$host_ip:8686/"
+ echo "Readarr: http://$host_ip:8787/"
+ echo "Prowlarr: http://$host_ip:9696/"
+ echo "Bazarr: http://$host_ip:6767/"
+ echo "$media_service: http://$host_ip:$media_service_port/"
+ echo "Portainer: http://$host_ip:9000/"
+}
+
+echo "Checking prerequisites..."
+
+
+check_dependencides "docker"
+check_dependencides "docker-compose"
+
+if [[ "$EUID" = 0 ]]; then
+ send_error_message "YAMS has to run without sudo! Please, run it again with regular permissions"
+fi
+
+read -p "Where do you want to install the docker-compose file? [/opt/yams]: " install_location
+
+install_location=${install_location:-/opt/yams}
+[[ -f "$install_location" ]] || mkdir -p "$install_location" || send_error_message "There was an error with your install location! Make sure the directory exists and the user \"$USER\" has permissions on it"
+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
+
+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 media folder [/srv/media]: " media_folder
+media_folder=${media_folder:-"/srv/media"}
+
+realpath "$media_folder" &>/dev/null || send_error_message "There was an error with your media folder! The directory \"$media_folder\" does not exist!"
+
+media_folder=$(realpath "$media_folder")
+
+read -p "Are you sure your media folder is \"$media_folder\"? [y/N]: " media_folder_correct
+media_folder_correct=${media_folder_correct:-"n"}
+
+if [ "$media_folder_correct" == "n" ]; then
+ send_error_message "Media folder is not correct. Please, fix it and run the script again"
+fi
+
+echo
+echo
+echo
+echo "Time to choose your media service."
+echo "Your media service is the one responsible for serving your files to your network."
+echo "By default, YAMS support 3 media services:"
+echo "- jellyfin (recommended, easier)"
+echo "- emby"
+echo "- plex (advanced, always online)"
+read -p "Choose your media service [jellyfin]: " media_service
+media_service=${media_service:-"jellyfin"}
+media_service=$(echo "$media_service" | sed -e 's/\(.*\)/\L\1/')
+
+media_service_port=8096
+if [ "$media_service" == "plex" ]; then
+ media_service_port=32400
+fi
+
+if echo "emby plex jellyfin" | grep -qw "$media_service"; then
+ echo "YAMS is going to install \"$media_service\" on port \"$media_service_port\""
+else
+ send_error_message "\"$media_service\" is not supported by YAMS. Are you sure you chose the correct service?"
+fi
+
+echo
+echo
+echo
+echo "Time to set up the VPN."
+echo "You can check the supported VPN list here: https://yams.media/advanced/vpn."
+read -p "Do you want to configure a VPN? [Y/n]: " setup_vpn
+setup_vpn=${setup_vpn:-"y"}
+
+if [ "$setup_vpn" == "y" ]; then
+ read -p "What's your VPN service? (with spaces) [mullvad]: " vpn_service
+ vpn_service=${vpn_service:-"mullvad"}
+ echo
+ echo "You should read $vpn_service's documentation in case it has different configurations for username and password."
+ echo "The documentation for $vpn_service is here: https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/${vpn_service// /-}.md"
+ echo
+ read -p "What's your VPN username? (without spaces): " vpn_user
+
+ unset vpn_password
+ charcount=0
+ prompt="What's your VPN password? (if you are using mullvad, just enter your username again): "
+ while IFS= read -p "$prompt" -r -s -n 1 char
+ do
+ if [[ $char == $'\0' ]]
+ then
+ break
+ fi
+ if [[ $char == $'\177' ]] ; then
+ if [ $charcount -gt 0 ] ; then
+ charcount=$((charcount-1))
+ prompt=$'\b \b'
+ vpn_password="${vpn_password%?}"
+ else
+ prompt=''
+ fi
+ else
+ charcount=$((charcount+1))
+ prompt='*'
+ vpn_password+="$char"
+ fi
+ done
+ echo
+
+ echo "What country do you want to use?"
+ echo "If you are using: NordVPN, Perfect Privacy, Private Internet Access, VyprVPN, WeVPN or Windscribe, then input a region"
+ read -p "You can check the countries/regions list for your VPN here: https://github.com/qdm12/gluetun/wiki/$vpn_service#servers [brazil]: " vpn_country
+ vpn_country=${vpn_country:-"brazil"}
+fi
+
+echo "Configuring the docker-compose file for the user \"$username\" on \"$install_location\"..."
+
+echo ""
+echo "Copying $filename..."
+
+cp docker-compose.example.yaml "$filename" || send_error_message "Your user ($USER) needs to have permissions on the installation folder!"
+
+# Set PUID
+sed -i -e "s/<your_PUID>/$puid/g" "$filename"
+
+# Set PGID
+sed -i -e "s/<your_PGID>/$pgid/g" "$filename"
+
+# Set media_folder
+sed -i -e "s;<media_folder>;$media_folder;g" "$filename"
+
+# Set media_service
+sed -i -e "s;<media_service>;$media_service;g" "$filename"
+if [ "$media_service" == "plex" ]; then
+ sed -i -e "s;#network_mode: host # plex;network_mode: host # plex;g" "$filename"
+fi
+
+# Set config folder
+sed -i -e "s;<install_location>;$install_location;g" "$filename"
+
+# Set VPN
+if [ "$setup_vpn" == "y" ]; then
+ sed -i -e "s;<vpn_service>;$vpn_service;g" "$filename"
+ sed -i -e "s;<vpn_user>;$vpn_user;g" "$filename"
+ sed -i -e "s;<vpn_country>;$vpn_country;g" "$filename"
+ sed -i -e "s;<vpn_password>;$vpn_password;g" "$filename"
+ sed -i -e "s;#network_mode: \"service:gluetun\";network_mode: \"service:gluetun\";g" "$filename"
+ sed -i -e "s;ports: # qbittorrent;#port: # qbittorrent;g" "$filename"
+ sed -i -e "s;- 8080:8080 # qbittorrent;#- 8080:8080 # qbittorrent;g" "$filename"
+ sed -i -e "s;#- 8080:8080/tcp # gluetun;- 8080:8080/tcp # gluetun;g" "$filename"
+ if echo "nordvpn perfect privacy private internet access vyprvpn wevpn windscribe" | grep -qw "$vpn_service"; then
+ sed -i -e "s;SERVER_COUNTRIES;SERVER_REGIONS;g" "$filename"
+ fi
+fi
+
+sed -i -e "s;<filename>;$filename;g" yams
+sed -i -e "s;<install_location>;$install_location;g" yams
+
+send_success_message "Everything installed correctly! 🎉"
+
+echo "Running the server..."
+echo "This is going to take a while..."
+
+docker-compose -f "$filename" up -d
+
+send_success_message "We need your sudo password to install the yams CLI and correct permissions..."
+sudo cp yams /usr/local/bin/yams && sudo chmod +x /usr/local/bin/yams
+[[ -f "$media_folder" ]] || sudo mkdir -p "$media_folder" || send_error_message "There was an error with your install location!"
+sudo chown -R "$puid":"$pgid" "$media_folder"
+[[ -f $install_location/config ]] || sudo mkdir -p "$install_location/config"
+sudo chown -R "$puid":"$pgid" "$install_location"
+
+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"
+echo "========================================================"
+echo "Everything should be running now! To check everything running, go to:"
+echo
+running_services_location
+echo
+echo
+echo "You might need to wait for a couple of minutes while everything gets up and running"
+echo
+echo "All the services location are also saved in ~/yams_services.txt"
+running_services_location > ~/yams_services.txt
+echo "========================================================"
+echo
+echo "To configure YAMS, check the documentation at"
+echo "https://yams.media/config"
+echo
+echo "========================================================"
+exit 0