From f5c161dce195cf0b951977d70f6c15c29ff5c834 Mon Sep 17 00:00:00 2001 From: Roger Gonzalez Date: Sat, 21 Oct 2023 15:09:40 -0300 Subject: First iteration for literate config --- docs.org | 444 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ install_new.sh | 268 ++++++++++++++++++++++++++++++++++ 2 files changed, 712 insertions(+) create mode 100644 docs.org create mode 100644 install_new.sh 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//$puid/g" "$filename" + +# Set PGID +sed -i -e "s//$pgid/g" "$filename" + +# Set media_folder +sed -i -e "s;;$media_folder;g" "$filename" + +# Set media_service +sed -i -e "s;;$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;g" "$filename" + +# Set VPN +if [ "$setup_vpn" == "y" ]; then + sed -i -e "s;;$vpn_service;g" "$filename" + sed -i -e "s;;$vpn_user;g" "$filename" + sed -i -e "s;;$vpn_country;g" "$filename" + sed -i -e "s;;$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;g" yams +sed -i -e "s;;$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//$puid/g" "$filename" + +# Set PGID +sed -i -e "s//$pgid/g" "$filename" + +# Set media_folder +sed -i -e "s;;$media_folder;g" "$filename" + +# Set media_service +sed -i -e "s;;$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;g" "$filename" + +# Set VPN +if [ "$setup_vpn" == "y" ]; then + sed -i -e "s;;$vpn_service;g" "$filename" + sed -i -e "s;;$vpn_user;g" "$filename" + sed -i -e "s;;$vpn_country;g" "$filename" + sed -i -e "s;;$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;g" yams +sed -i -e "s;;$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 -- cgit v1.2.3