diff --git a/.env.example b/.env.example index 34f9659..ae4c91b 100644 --- a/.env.example +++ b/.env.example @@ -2,6 +2,7 @@ PUID= PGID= MEDIA_DIRECTORY= +CONFIG_DIRECTORY= INSTALL_DIRECTORY= MEDIA_SERVICE= diff --git a/README.org b/README.org index 5411910..d6f69d9 100644 --- a/README.org +++ b/README.org @@ -92,7 +92,11 @@ Prepare the following: - Default: ~/opt/yams~ - Ensure your user has write permissions -2. *Media Directory* +2. *Configuration Directory* + - Default: ~/opt/yams/config~ + - Ensure your user has write permissions and there is enough space for logs. + +3. *Media Directory* - Default: ~/srv/media~ - Will contain subdirectories: + ~/srv/media/tvshows~: TV series @@ -102,11 +106,11 @@ Prepare the following: + ~/srv/media/downloads~: Temporary download location + ~/srv/media/blackhole~: Watch folder for torrents -3. *Non-root User* +4. *Non-root User* - Regular system user to own and manage files - Must have sudo privileges for initial setup -4. *VPN Service* (Optional but Recommended) +5. *VPN Service* (Optional but Recommended) - Supported providers listed at [[https://yams.media/advanced/vpn#official-supported-vpns][yams.media/advanced/vpn]] - [[https://protonvpn.com/][ProtonVPN]] recommended for: + Simple configuration diff --git a/docker-compose.example.yaml b/docker-compose.example.yaml index 105ae8a..365fcae 100644 --- a/docker-compose.example.yaml +++ b/docker-compose.example.yaml @@ -11,7 +11,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/${MEDIA_SERVICE}:/config + - ${CONFIG_DIRECTORY}/${MEDIA_SERVICE}:/config ports: # plex - 8096:8096 # plex restart: unless-stopped @@ -27,7 +27,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/qbittorrent:/config + - ${CONFIG_DIRECTORY}/qbittorrent:/config restart: unless-stopped ports: # qbittorrent - 8081:8081 # qbittorrent @@ -44,7 +44,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/sabnzbd:/config + - ${CONFIG_DIRECTORY}/sabnzbd:/config ports: # sabnzbd - 8080:8080 # sabnzbd restart: unless-stopped @@ -61,7 +61,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/sonarr:/config + - ${CONFIG_DIRECTORY}/sonarr:/config ports: - 8989:8989 restart: unless-stopped @@ -77,7 +77,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/radarr:/config + - ${CONFIG_DIRECTORY}/radarr:/config ports: - 7878:7878 restart: unless-stopped @@ -93,7 +93,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/lidarr:/config + - ${CONFIG_DIRECTORY}/lidarr:/config ports: - 8686:8686 restart: unless-stopped @@ -109,7 +109,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/readarr:/config + - ${CONFIG_DIRECTORY}/readarr:/config ports: - 8787:8787 restart: unless-stopped @@ -125,7 +125,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - ${MEDIA_DIRECTORY}:/data - - ${INSTALL_DIRECTORY}/config/bazarr:/config + - ${CONFIG_DIRECTORY}/bazarr:/config ports: - 6767:6767 restart: unless-stopped @@ -140,7 +140,7 @@ services: - PGID=${PGID} volumes: - /etc/localtime:/etc/localtime:ro - - ${INSTALL_DIRECTORY}/config/prowlarr:/config + - ${CONFIG_DIRECTORY}/prowlarr:/config ports: - 9696:9696 restart: unless-stopped @@ -179,7 +179,7 @@ services: volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - - ${INSTALL_DIRECTORY}/config/portainer:/data + - ${CONFIG_DIRECTORY}/portainer:/data restart: unless-stopped # Watchtower is going to keep our instances updated diff --git a/docs.org b/docs.org index b8eb585..ae1de7b 100644 --- a/docs.org +++ b/docs.org @@ -59,6 +59,7 @@ echo "" #+begin_src bash # Constants readonly DEFAULT_INSTALL_DIR="/opt/yams" +readonly DEFAULT_CONFIG_DIR="/opt/yams/config" readonly DEFAULT_MEDIA_DIR="/srv/media" readonly SUPPORTED_MEDIA_SERVICES=("jellyfin" "emby" "plex") readonly DEFAULT_MEDIA_SERVICE="jellyfin" @@ -403,6 +404,10 @@ get_installation_paths() { install_directory=${install_directory:-$DEFAULT_INSTALL_DIR} create_and_verify_directory "$install_directory" "installation" + read -p "Configuration directory? [$DEFAULT_CONFIG_DIR]: " config_directory + config_directory=${config_directory:-$DEFAULT_CONFIG_DIR} + create_and_verify_directory "$config_directory" "configuration" + read -p "Media directory? [$DEFAULT_MEDIA_DIR]: " media_directory media_directory=${media_directory:-$DEFAULT_MEDIA_DIR} @@ -415,8 +420,9 @@ get_installation_paths() { setup_directory_structure "$media_directory" verify_user_permissions "$username" "$media_directory" + verify_user_permissions "$username" "$config_directory" - export install_directory media_directory + export install_directory media_directory config_directory } #+end_src @@ -455,6 +461,7 @@ update_configuration_files() { log_info "Updating environment configuration..." sed -i -e "s||$puid|g" \ -e "s||$pgid|g" \ + -e "s||$config_directory|g" \ -e "s||$media_directory|g" \ -e "s||$media_service|g" \ -e "s||$install_directory|g" \ @@ -528,7 +535,7 @@ install_cli() { } set_permissions() { - local dirs=("$media_directory" "$install_directory" "$install_directory/config") + local dirs=("$media_directory" "$install_directory" "$config_directory") for dir in "${dirs[@]}"; do log_info "Setting permissions for $dir..." diff --git a/install.sh b/install.sh index 3ccd531..31f2ab7 100644 --- a/install.sh +++ b/install.sh @@ -25,6 +25,7 @@ echo "" # Constants readonly DEFAULT_INSTALL_DIR="/opt/yams" +readonly DEFAULT_CONFIG_DIR="/opt/yams/config" readonly DEFAULT_MEDIA_DIR="/srv/media" readonly SUPPORTED_MEDIA_SERVICES=("jellyfin" "emby" "plex") readonly DEFAULT_MEDIA_SERVICE="jellyfin" @@ -336,6 +337,10 @@ get_installation_paths() { install_directory=${install_directory:-$DEFAULT_INSTALL_DIR} create_and_verify_directory "$install_directory" "installation" + read -p "Configuration directory? [$DEFAULT_CONFIG_DIR]: " config_directory + config_directory=${config_directory:-$DEFAULT_CONFIG_DIR} + create_and_verify_directory "$config_directory" "configuration" + read -p "Media directory? [$DEFAULT_MEDIA_DIR]: " media_directory media_directory=${media_directory:-$DEFAULT_MEDIA_DIR} @@ -348,8 +353,9 @@ get_installation_paths() { setup_directory_structure "$media_directory" verify_user_permissions "$username" "$media_directory" + verify_user_permissions "$username" "$config_directory" - export install_directory media_directory + export install_directory media_directory config_directory } copy_configuration_files() { @@ -382,6 +388,7 @@ update_configuration_files() { sed -i -e "s||$puid|g" \ -e "s||$pgid|g" \ -e "s||$media_directory|g" \ + -e "s||$config_directory|g" \ -e "s||$media_service|g" \ -e "s||$install_directory|g" \ -e "s|vpn_enabled|$setup_vpn|g" "$env_file" || \ @@ -454,7 +461,7 @@ install_cli() { } set_permissions() { - local dirs=("$media_directory" "$install_directory" "$install_directory/config") + local dirs=("$media_directory" "$install_directory" "$config_directory") for dir in "${dirs[@]}"; do log_info "Setting permissions for $dir..."