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