Fix duplicate prompts after whiptail menu selection
Applied WHIPTAIL_USED flag check to all 25 service prompts that appear
after the whiptail menu to prevent services from being prompted
individually when they weren't selected in the checkbox menu.
This fixes the issue where services like AudioBookshelf were being
prompted even when not selected in whiptail.
Services fixed:
- AudioBookshelf, Emby, ARM, FileBrowser, Magic Mirror
- ActualBudget, Keycloak, Caddy, fail2ban
- Lyrion Music Server, Mealie, Minecraft, Jellyfin, Frigate
- ddclient, ntfy, Uptime Kuma, wg-easy
- Traccar, Portainer, MeshCentral Server
- FindMyDevice, Frigate-Notify, Watchtower
Pattern applied:
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_SERVICE" ]; then
# Show prompt
fi
This ensures prompts only appear when whiptail was not used OR
the service variable is not yet set.
This commit is contained in:
+208
-176
@@ -2278,10 +2278,16 @@ else
|
|||||||
echo "Selected services:"
|
echo "Selected services:"
|
||||||
echo "$SELECTED_SERVICES" | tr '"' '\n' | grep -v '^$' | sed 's/^/ - /'
|
echo "$SELECTED_SERVICES" | tr '"' '\n' | grep -v '^$' | sed 's/^/ - /'
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
# Mark that whiptail was used - skip all individual prompts
|
||||||
|
WHIPTAIL_USED=true
|
||||||
|
else
|
||||||
|
# Whiptail not available - will use individual prompts
|
||||||
|
WHIPTAIL_USED=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- IMMICH ----
|
# ---- IMMICH ----
|
||||||
if [ -z "$INSTALL_IMMICH" ]; then
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_IMMICH" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ IMMICH - Self-hosted photo & video backup │"
|
echo "│ IMMICH - Self-hosted photo & video backup │"
|
||||||
@@ -2491,13 +2497,15 @@ IMMICH_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- AUDIOBOOKSHELF ----
|
# ---- AUDIOBOOKSHELF ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_AUDIOBOOKSHELF" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ AUDIOBOOKSHELF - Audiobook & podcast server │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Stream audiobooks with progress sync across devices. │"
|
echo "│ AUDIOBOOKSHELF - Audiobook & podcast server │"
|
||||||
echo "│ Port: 13378 │"
|
echo "│ Stream audiobooks with progress sync across devices. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 13378 │"
|
||||||
prompt_yn "Install Audiobookshelf? (y/n):" "n" INSTALL_AUDIOBOOKSHELF
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Audiobookshelf? (y/n):" "n" INSTALL_AUDIOBOOKSHELF
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_AUDIOBOOKSHELF" = "y" ] || [ "$INSTALL_AUDIOBOOKSHELF" = "Y" ]; then
|
if [ "$INSTALL_AUDIOBOOKSHELF" = "y" ] || [ "$INSTALL_AUDIOBOOKSHELF" = "Y" ]; then
|
||||||
echo "Installing Audiobookshelf..."
|
echo "Installing Audiobookshelf..."
|
||||||
@@ -2553,14 +2561,14 @@ ABS_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- EMBY ----
|
# ---- EMBY ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_EMBY" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ EMBY - Media server for movies, TV, music │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Stream your media library to any device. │"
|
echo "│ EMBY - Media server for movies, TV, music │"
|
||||||
echo "│ Port: 8096 (web), 8920 (https) │"
|
echo "│ Stream your media library to any device. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8096 (web), 8920 (https) │"
|
||||||
if [ -z "$INSTALL_EMBY" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Emby? (y/n):" "n" INSTALL_EMBY
|
prompt_yn "Install Emby? (y/n):" "n" INSTALL_EMBY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_EMBY" = "y" ] || [ "$INSTALL_EMBY" = "Y" ]; then
|
if [ "$INSTALL_EMBY" = "y" ] || [ "$INSTALL_EMBY" = "Y" ]; then
|
||||||
@@ -2620,14 +2628,14 @@ EMBY_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- A.R.M. (Automatic Ripping Machine) ----
|
# ---- A.R.M. (Automatic Ripping Machine) ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_ARM" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ A.R.M. - Automatic Ripping Machine │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Automatically rip DVDs, Blu-rays, and CDs. │"
|
echo "│ A.R.M. - Automatic Ripping Machine │"
|
||||||
echo "│ Port: 8080 │"
|
echo "│ Automatically rip DVDs, Blu-rays, and CDs. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8080 │"
|
||||||
if [ -z "$INSTALL_ARM" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install A.R.M.? (y/n):" "n" INSTALL_ARM
|
prompt_yn "Install A.R.M.? (y/n):" "n" INSTALL_ARM
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_ARM" = "y" ] || [ "$INSTALL_ARM" = "Y" ]; then
|
if [ "$INSTALL_ARM" = "y" ] || [ "$INSTALL_ARM" = "Y" ]; then
|
||||||
@@ -2704,14 +2712,14 @@ ARM_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- FILEBROWSER ----
|
# ---- FILEBROWSER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_FILEBROWSER" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ FILEBROWSER - Web-based file manager │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Browse, upload, download files via web interface. │"
|
echo "│ FILEBROWSER - Web-based file manager │"
|
||||||
echo "│ Port: 8085 │"
|
echo "│ Browse, upload, download files via web interface. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8085 │"
|
||||||
if [ -z "$INSTALL_FILEBROWSER" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Filebrowser? (y/n):" "n" INSTALL_FILEBROWSER
|
prompt_yn "Install Filebrowser? (y/n):" "n" INSTALL_FILEBROWSER
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_FILEBROWSER" = "y" ] || [ "$INSTALL_FILEBROWSER" = "Y" ]; then
|
if [ "$INSTALL_FILEBROWSER" = "y" ] || [ "$INSTALL_FILEBROWSER" = "Y" ]; then
|
||||||
@@ -2781,14 +2789,14 @@ FB_SETTINGS
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- MAGIC MIRROR ----
|
# ---- MAGIC MIRROR ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_MAGICMIRROR" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ MAGIC MIRROR - Smart mirror / dashboard display │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Modular smart mirror platform. Run up to 3 instances. │"
|
echo "│ MAGIC MIRROR - Smart mirror / dashboard display │"
|
||||||
echo "│ Ports: 8081, 8082, 8083 │"
|
echo "│ Modular smart mirror platform. Run up to 3 instances. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Ports: 8081, 8082, 8083 │"
|
||||||
if [ -z "$INSTALL_MAGICMIRROR" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Magic Mirror? (y/n):" "n" INSTALL_MAGICMIRROR
|
prompt_yn "Install Magic Mirror? (y/n):" "n" INSTALL_MAGICMIRROR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_MAGICMIRROR" = "y" ] || [ "$INSTALL_MAGICMIRROR" = "Y" ]; then
|
if [ "$INSTALL_MAGICMIRROR" = "y" ] || [ "$INSTALL_MAGICMIRROR" = "Y" ]; then
|
||||||
@@ -3014,13 +3022,13 @@ MM_CONFIG
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- ACTUALBUDGET ----
|
# ---- ACTUALBUDGET ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_ACTUALBUDGET" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ ACTUALBUDGET - Open-source Personal Finance Management │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Budget tracking with bank account synchronization via SimpleFIN│"
|
echo "│ ACTUALBUDGET - Open-source Personal Finance Management │"
|
||||||
echo "│ Port: 5006 │"
|
echo "│ Budget tracking with bank account synchronization via SimpleFIN│"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 5006 │"
|
||||||
if [ -z "$INSTALL_ACTUALBUDGET" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install ActualBudget? (y/n):" "n" INSTALL_ACTUALBUDGET
|
prompt_yn "Install ActualBudget? (y/n):" "n" INSTALL_ACTUALBUDGET
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -3069,13 +3077,13 @@ AB_COMPOSE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- KEYCLOAK ----
|
# ---- KEYCLOAK ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_KEYCLOAK" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ KEYCLOAK - Identity and Access Management (IAM) │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ SSO, OAuth2, SAML, User Management, MFA │"
|
echo "│ KEYCLOAK - Identity and Access Management (IAM) │"
|
||||||
echo "│ Port: 8180 (HTTP) - Use reverse proxy for HTTPS │"
|
echo "│ SSO, OAuth2, SAML, User Management, MFA │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8180 (HTTP) - Use reverse proxy for HTTPS │"
|
||||||
if [ -z "$INSTALL_KEYCLOAK" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Keycloak? (y/n):" "n" INSTALL_KEYCLOAK
|
prompt_yn "Install Keycloak? (y/n):" "n" INSTALL_KEYCLOAK
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -3587,13 +3595,13 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- CADDY WEB SERVER ----
|
# ---- CADDY WEB SERVER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_CADDY" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ CADDY - Modern Web Server & Reverse Proxy │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Automatic HTTPS, reverse proxy for all your services │"
|
echo "│ CADDY - Modern Web Server & Reverse Proxy │"
|
||||||
echo "│ Port: 80 (HTTP), 443 (HTTPS) │"
|
echo "│ Automatic HTTPS, reverse proxy for all your services │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 80 (HTTP), 443 (HTTPS) │"
|
||||||
if [ -z "$INSTALL_CADDY" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Caddy reverse proxy? (y/n):" "n" INSTALL_CADDY
|
prompt_yn "Install Caddy reverse proxy? (y/n):" "n" INSTALL_CADDY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -3727,13 +3735,13 @@ CADDYFILE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- FAIL2BAN ----
|
# ---- FAIL2BAN ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_FAIL2BAN" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ FAIL2BAN - Intrusion Prevention System │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Automatically ban IPs with failed auth attempts │"
|
echo "│ FAIL2BAN - Intrusion Prevention System │"
|
||||||
echo "│ Protects SSH, Caddy, and other services │"
|
echo "│ Automatically ban IPs with failed auth attempts │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Protects SSH, Caddy, and other services │"
|
||||||
if [ -z "$INSTALL_FAIL2BAN" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install and configure fail2ban? (y/n):" "n" INSTALL_FAIL2BAN
|
prompt_yn "Install and configure fail2ban? (y/n):" "n" INSTALL_FAIL2BAN
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -3859,14 +3867,14 @@ backend = auto"
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- LYRION MUSIC SERVER ----
|
# ---- LYRION MUSIC SERVER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_LMS" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ LYRION MUSIC SERVER (LMS) - Music streaming server │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Stream music to Squeezebox devices, apps, and Chromecast. │"
|
echo "│ LYRION MUSIC SERVER (LMS) - Music streaming server │"
|
||||||
echo "│ Port: 9000 (web), 9090 (CLI), 3483 (players) │"
|
echo "│ Stream music to Squeezebox devices, apps, and Chromecast. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 9000 (web), 9090 (CLI), 3483 (players) │"
|
||||||
if [ -z "$INSTALL_LMS" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Lyrion Music Server? (y/n):" "n" INSTALL_LMS
|
prompt_yn "Install Lyrion Music Server? (y/n):" "n" INSTALL_LMS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_LMS" = "y" ] || [ "$INSTALL_LMS" = "Y" ]; then
|
if [ "$INSTALL_LMS" = "y" ] || [ "$INSTALL_LMS" = "Y" ]; then
|
||||||
@@ -3925,14 +3933,14 @@ LMS_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- MEALIE ----
|
# ---- MEALIE ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_MEALIE" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ MEALIE - Recipe manager & meal planner │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Save recipes, plan meals, generate shopping lists. │"
|
echo "│ MEALIE - Recipe manager & meal planner │"
|
||||||
echo "│ Port: 9925 │"
|
echo "│ Save recipes, plan meals, generate shopping lists. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 9925 │"
|
||||||
if [ -z "$INSTALL_MEALIE" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Mealie? (y/n):" "n" INSTALL_MEALIE
|
prompt_yn "Install Mealie? (y/n):" "n" INSTALL_MEALIE
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_MEALIE" = "y" ] || [ "$INSTALL_MEALIE" = "Y" ]; then
|
if [ "$INSTALL_MEALIE" = "y" ] || [ "$INSTALL_MEALIE" = "Y" ]; then
|
||||||
@@ -3986,14 +3994,14 @@ MEALIE_COMPOSE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- MINECRAFT SERVER ----
|
# ---- MINECRAFT SERVER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_MINECRAFT" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ MINECRAFT SERVER - Game server with RAM limit │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Fabric server with configurable memory allocation. │"
|
echo "│ MINECRAFT SERVER - Game server with RAM limit │"
|
||||||
echo "│ Port: 25565 │"
|
echo "│ Fabric server with configurable memory allocation. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 25565 │"
|
||||||
if [ -z "$INSTALL_MINECRAFT" ]; then
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
prompt_yn "Install Minecraft Server? (y/n):" "n" INSTALL_MINECRAFT
|
prompt_yn "Install Minecraft Server? (y/n):" "n" INSTALL_MINECRAFT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_MINECRAFT" = "y" ] || [ "$INSTALL_MINECRAFT" = "Y" ]; then
|
if [ "$INSTALL_MINECRAFT" = "y" ] || [ "$INSTALL_MINECRAFT" = "Y" ]; then
|
||||||
@@ -4144,13 +4152,15 @@ MC_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- JELLYFIN (Alternative to Emby) ----
|
# ---- JELLYFIN (Alternative to Emby) ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_JELLYFIN" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ JELLYFIN - Free media server (alternative to Emby) │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Stream movies, TV, music. No premium features locked. │"
|
echo "│ JELLYFIN - Free media server (alternative to Emby) │"
|
||||||
echo "│ Port: 8096 │"
|
echo "│ Stream movies, TV, music. No premium features locked. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8096 │"
|
||||||
prompt_yn "Install Jellyfin? (y/n):" "n" INSTALL_JELLYFIN
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Jellyfin? (y/n):" "n" INSTALL_JELLYFIN
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_JELLYFIN" = "y" ] || [ "$INSTALL_JELLYFIN" = "Y" ]; then
|
if [ "$INSTALL_JELLYFIN" = "y" ] || [ "$INSTALL_JELLYFIN" = "Y" ]; then
|
||||||
echo "Installing Jellyfin..."
|
echo "Installing Jellyfin..."
|
||||||
@@ -4214,13 +4224,15 @@ JELLYFIN_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- FRIGATE NVR ----
|
# ---- FRIGATE NVR ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_FRIGATE" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ FRIGATE - AI-powered NVR for security cameras │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Object detection, recordings, 24/7 monitoring. │"
|
echo "│ FRIGATE - AI-powered NVR for security cameras │"
|
||||||
echo "│ Port: 5000 (web), 8554 (RTSP), 8555 (WebRTC) │"
|
echo "│ Object detection, recordings, 24/7 monitoring. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 5000 (web), 8554 (RTSP), 8555 (WebRTC) │"
|
||||||
prompt_yn "Install Frigate? (y/n):" "n" INSTALL_FRIGATE
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Frigate? (y/n):" "n" INSTALL_FRIGATE
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_FRIGATE" = "y" ] || [ "$INSTALL_FRIGATE" = "Y" ]; then
|
if [ "$INSTALL_FRIGATE" = "y" ] || [ "$INSTALL_FRIGATE" = "Y" ]; then
|
||||||
echo "Installing Frigate..."
|
echo "Installing Frigate..."
|
||||||
@@ -4536,13 +4548,15 @@ CADDY_FILE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- DDCLIENT DYNAMIC DNS ----
|
# ---- DDCLIENT DYNAMIC DNS ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_DDCLIENT" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ DDCLIENT - Dynamic DNS updater │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Keep your domain pointing to your home IP. │"
|
echo "│ DDCLIENT - Dynamic DNS updater │"
|
||||||
echo "│ Supports: Cloudflare, DuckDNS, No-IP, and more. │"
|
echo "│ Keep your domain pointing to your home IP. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Supports: Cloudflare, DuckDNS, No-IP, and more. │"
|
||||||
prompt_yn "Install ddclient? (y/n):" "n" INSTALL_DDCLIENT
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install ddclient? (y/n):" "n" INSTALL_DDCLIENT
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_DDCLIENT" = "y" ] || [ "$INSTALL_DDCLIENT" = "Y" ]; then
|
if [ "$INSTALL_DDCLIENT" = "y" ] || [ "$INSTALL_DDCLIENT" = "Y" ]; then
|
||||||
echo "Installing ddclient..."
|
echo "Installing ddclient..."
|
||||||
@@ -4622,13 +4636,15 @@ DDCLIENT_CONF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- NTFY NOTIFICATIONS ----
|
# ---- NTFY NOTIFICATIONS ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_NTFY" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ NTFY - Push notifications server │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Send notifications from scripts to your phone. │"
|
echo "│ NTFY - Push notifications server │"
|
||||||
echo "│ Port: 8090 │"
|
echo "│ Send notifications from scripts to your phone. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8090 │"
|
||||||
prompt_yn "Install ntfy? (y/n):" "n" INSTALL_NTFY
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install ntfy? (y/n):" "n" INSTALL_NTFY
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_NTFY" = "y" ] || [ "$INSTALL_NTFY" = "Y" ]; then
|
if [ "$INSTALL_NTFY" = "y" ] || [ "$INSTALL_NTFY" = "Y" ]; then
|
||||||
echo "Installing ntfy..."
|
echo "Installing ntfy..."
|
||||||
@@ -4683,13 +4699,15 @@ NTFY_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- UPTIME KUMA ----
|
# ---- UPTIME KUMA ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_UPTIMEKUMA" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ UPTIME KUMA - Service monitoring dashboard │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Monitor websites, servers, Docker containers. │"
|
echo "│ UPTIME KUMA - Service monitoring dashboard │"
|
||||||
echo "│ Port: 3001 │"
|
echo "│ Monitor websites, servers, Docker containers. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 3001 │"
|
||||||
prompt_yn "Install Uptime Kuma? (y/n):" "n" INSTALL_UPTIMEKUMA
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Uptime Kuma? (y/n):" "n" INSTALL_UPTIMEKUMA
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_UPTIMEKUMA" = "y" ] || [ "$INSTALL_UPTIMEKUMA" = "Y" ]; then
|
if [ "$INSTALL_UPTIMEKUMA" = "y" ] || [ "$INSTALL_UPTIMEKUMA" = "Y" ]; then
|
||||||
echo "Installing Uptime Kuma..."
|
echo "Installing Uptime Kuma..."
|
||||||
@@ -4734,13 +4752,15 @@ UPTIME_COMPOSE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- WG-EASY (WireGuard with Web UI) ----
|
# ---- WG-EASY (WireGuard with Web UI) ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_WGEASY" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ WG-EASY - WireGuard VPN with web management │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Easy WireGuard setup with QR codes for clients. │"
|
echo "│ WG-EASY - WireGuard VPN with web management │"
|
||||||
echo "│ Port: 51821 (web), 51820 (VPN) │"
|
echo "│ Easy WireGuard setup with QR codes for clients. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 51821 (web), 51820 (VPN) │"
|
||||||
prompt_yn "Install wg-easy? (y/n):" "n" INSTALL_WGEASY
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install wg-easy? (y/n):" "n" INSTALL_WGEASY
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_WGEASY" = "y" ] || [ "$INSTALL_WGEASY" = "Y" ]; then
|
if [ "$INSTALL_WGEASY" = "y" ] || [ "$INSTALL_WGEASY" = "Y" ]; then
|
||||||
echo "Installing wg-easy..."
|
echo "Installing wg-easy..."
|
||||||
@@ -4808,13 +4828,15 @@ WGEASY_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- TRACCAR GPS TRACKING ----
|
# ---- TRACCAR GPS TRACKING ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_TRACCAR" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ TRACCAR - GPS tracking server │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Track phones, vehicles, assets with OwnTracks/Traccar apps. │"
|
echo "│ TRACCAR - GPS tracking server │"
|
||||||
echo "│ Port: 8082 (web), 5055 (OsmAnd), 5000+ (devices) │"
|
echo "│ Track phones, vehicles, assets with OwnTracks/Traccar apps. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8082 (web), 5055 (OsmAnd), 5000+ (devices) │"
|
||||||
prompt_yn "Install Traccar? (y/n):" "n" INSTALL_TRACCAR
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Traccar? (y/n):" "n" INSTALL_TRACCAR
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_TRACCAR" = "y" ] || [ "$INSTALL_TRACCAR" = "Y" ]; then
|
if [ "$INSTALL_TRACCAR" = "y" ] || [ "$INSTALL_TRACCAR" = "Y" ]; then
|
||||||
echo "Installing Traccar..."
|
echo "Installing Traccar..."
|
||||||
@@ -4879,13 +4901,15 @@ TRACCAR_XML
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- PORTAINER ----
|
# ---- PORTAINER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_PORTAINER" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ PORTAINER - Docker management web UI │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Manage containers, images, volumes via browser. │"
|
echo "│ PORTAINER - Docker management web UI │"
|
||||||
echo "│ Port: 9443 (https), 9000 (http) │"
|
echo "│ Manage containers, images, volumes via browser. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 9443 (https), 9000 (http) │"
|
||||||
prompt_yn "Install Portainer? (y/n):" "n" INSTALL_PORTAINER
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Portainer? (y/n):" "n" INSTALL_PORTAINER
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_PORTAINER" = "y" ] || [ "$INSTALL_PORTAINER" = "Y" ]; then
|
if [ "$INSTALL_PORTAINER" = "y" ] || [ "$INSTALL_PORTAINER" = "Y" ]; then
|
||||||
echo "Installing Portainer..."
|
echo "Installing Portainer..."
|
||||||
@@ -4932,13 +4956,15 @@ PORTAINER_COMPOSE
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- MESHCENTRAL SERVER ----
|
# ---- MESHCENTRAL SERVER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_MESHCENTRAL_SERVER" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ MESHCENTRAL SERVER - Self-hosted remote management │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Full MeshCentral server (not just agent). Manage all devices. │"
|
echo "│ MESHCENTRAL SERVER - Self-hosted remote management │"
|
||||||
echo "│ Port: 4430 (https), 4433 (agent) │"
|
echo "│ Full MeshCentral server (not just agent). Manage all devices. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 4430 (https), 4433 (agent) │"
|
||||||
prompt_yn "Install MeshCentral Server? (y/n):" "n" INSTALL_MESHCENTRAL_SERVER
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install MeshCentral Server? (y/n):" "n" INSTALL_MESHCENTRAL_SERVER
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_MESHCENTRAL_SERVER" = "y" ] || [ "$INSTALL_MESHCENTRAL_SERVER" = "Y" ]; then
|
if [ "$INSTALL_MESHCENTRAL_SERVER" = "y" ] || [ "$INSTALL_MESHCENTRAL_SERVER" = "Y" ]; then
|
||||||
echo "Installing MeshCentral Server..."
|
echo "Installing MeshCentral Server..."
|
||||||
@@ -5010,13 +5036,15 @@ MC_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- FINDMYDEVICE (FMD) ----
|
# ---- FINDMYDEVICE (FMD) ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_FMD" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ FINDMYDEVICE - Self-hosted device tracking │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Track and locate Android devices. Alternative to Google Find. │"
|
echo "│ FINDMYDEVICE - Self-hosted device tracking │"
|
||||||
echo "│ Port: 8084 │"
|
echo "│ Track and locate Android devices. Alternative to Google Find. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Port: 8084 │"
|
||||||
prompt_yn "Install FindMyDevice server? (y/n):" "n" INSTALL_FMD
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install FindMyDevice server? (y/n):" "n" INSTALL_FMD
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_FMD" = "y" ] || [ "$INSTALL_FMD" = "Y" ]; then
|
if [ "$INSTALL_FMD" = "y" ] || [ "$INSTALL_FMD" = "Y" ]; then
|
||||||
echo "Installing FindMyDevice..."
|
echo "Installing FindMyDevice..."
|
||||||
@@ -5073,13 +5101,15 @@ FMD_ENV
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- FRIGATE-NOTIFY ----
|
# ---- FRIGATE-NOTIFY ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_FRIGATE_NOTIFY" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ FRIGATE-NOTIFY - Push notifications for Frigate events │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Get alerts when Frigate detects people, cars, etc. │"
|
echo "│ FRIGATE-NOTIFY - Push notifications for Frigate events │"
|
||||||
echo "│ Sends to: ntfy, Pushover, Discord, Gotify, and more. │"
|
echo "│ Get alerts when Frigate detects people, cars, etc. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Sends to: ntfy, Pushover, Discord, Gotify, and more. │"
|
||||||
prompt_yn "Install Frigate-Notify? (y/n):" "n" INSTALL_FRIGATE_NOTIFY
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Frigate-Notify? (y/n):" "n" INSTALL_FRIGATE_NOTIFY
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_FRIGATE_NOTIFY" = "y" ] || [ "$INSTALL_FRIGATE_NOTIFY" = "Y" ]; then
|
if [ "$INSTALL_FRIGATE_NOTIFY" = "y" ] || [ "$INSTALL_FRIGATE_NOTIFY" = "Y" ]; then
|
||||||
echo "Installing Frigate-Notify..."
|
echo "Installing Frigate-Notify..."
|
||||||
@@ -5176,13 +5206,15 @@ FN_CONFIG
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ---- WATCHTOWER ----
|
# ---- WATCHTOWER ----
|
||||||
echo ""
|
if [ "$WHIPTAIL_USED" != true ] && [ -z "$INSTALL_WATCHTOWER" ]; then
|
||||||
echo "┌─────────────────────────────────────────────────────────────────┐"
|
echo ""
|
||||||
echo "│ WATCHTOWER - Container update monitoring │"
|
echo "┌─────────────────────────────────────────────────────────────────┐"
|
||||||
echo "│ Monitor containers for updates. NOTIFY ONLY by default. │"
|
echo "│ WATCHTOWER - Container update monitoring │"
|
||||||
echo "│ Why notify-only? Apps like Immich have breaking DB migrations. │"
|
echo "│ Monitor containers for updates. NOTIFY ONLY by default. │"
|
||||||
echo "└─────────────────────────────────────────────────────────────────┘"
|
echo "│ Why notify-only? Apps like Immich have breaking DB migrations. │"
|
||||||
prompt_yn "Install Watchtower? (y/n):" "n" INSTALL_WATCHTOWER
|
echo "└─────────────────────────────────────────────────────────────────┘"
|
||||||
|
prompt_yn "Install Watchtower? (y/n):" "n" INSTALL_WATCHTOWER
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$INSTALL_WATCHTOWER" = "y" ] || [ "$INSTALL_WATCHTOWER" = "Y" ]; then
|
if [ "$INSTALL_WATCHTOWER" = "y" ] || [ "$INSTALL_WATCHTOWER" = "Y" ]; then
|
||||||
echo "Installing Watchtower..."
|
echo "Installing Watchtower..."
|
||||||
|
|||||||
Reference in New Issue
Block a user