From 3b0146747789009c7f7ff256051c4d61b775507e Mon Sep 17 00:00:00 2001 From: EZ-Homelab Date: Thu, 22 Jan 2026 21:32:44 -0500 Subject: [PATCH] Fix Docker detection logic to avoid unnecessary system setup - Script now properly detects if Docker is installed and user is in docker group - Prevents forcing logout/login when Docker is already properly configured - Only runs system_setup when actually needed --- scripts/ez-homelab.sh | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/scripts/ez-homelab.sh b/scripts/ez-homelab.sh index fe4c645..ab519cb 100755 --- a/scripts/ez-homelab.sh +++ b/scripts/ez-homelab.sh @@ -608,12 +608,39 @@ main() { echo "" # Check if system setup is needed - if [ "$EUID" -eq 0 ] || ! command -v docker &> /dev/null; then - log_info "Docker not found or running as root. Performing system setup first..." - system_setup "$@" - echo "" - log_info "System setup complete. Please log out and back in, then run this script again." - exit 0 + # Only run system setup if Docker is not installed OR if running as root and Docker setup hasn't been done + DOCKER_INSTALLED=false + if command -v docker &> /dev/null && docker --version &> /dev/null; then + DOCKER_INSTALLED=true + fi + + # Check if current user is in docker group (or if we're root and will add them) + USER_IN_DOCKER_GROUP=false + if groups "$USER" 2>/dev/null | grep -q docker; then + USER_IN_DOCKER_GROUP=true + fi + + if [ "$EUID" -eq 0 ]; then + # Running as root - check if we need to do system setup + if [ "$DOCKER_INSTALLED" = false ] || [ "$USER_IN_DOCKER_GROUP" = false ]; then + log_info "Docker not fully installed or user not in docker group. Performing system setup..." + system_setup "$@" + echo "" + log_info "System setup complete. Please log out and back in, then run this script again." + exit 0 + else + log_info "Docker is already installed and user is in docker group. Skipping system setup." + fi + else + # Not running as root + if [ "$DOCKER_INSTALLED" = false ]; then + log_error "Docker is not installed. Please run this script with sudo to perform system setup." + exit 1 + fi + if [ "$USER_IN_DOCKER_GROUP" = false ]; then + log_error "Current user is not in the docker group. Please log out and back in, or run with sudo to fix group membership." + exit 1 + fi fi # Prompt for configuration values