From 5d17626b83f2d2698eaa7b73196eae8b48fc10cf Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 10 Sep 2025 07:58:02 +0200 Subject: [PATCH] Improve npmplus credential retrieval and messaging Enhanced the install script to attempt live log monitoring for credentials if not found initially, and updated the info message in npmplus.json to guide users to check docker logs if the credentials file is missing. --- frontend/public/json/npmplus.json | 2 +- install/npmplus-install.sh | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/frontend/public/json/npmplus.json b/frontend/public/json/npmplus.json index 96265f859..265f593cb 100644 --- a/frontend/public/json/npmplus.json +++ b/frontend/public/json/npmplus.json @@ -52,7 +52,7 @@ "type": "info" }, { - "text": "Application credentials: `cat /opt/.npm_pwd`", + "text": "Application credentials: `cat /opt/.npm_pwd` - if file not exist in LXC check docker logs for password with `docker logs npmplus`", "type": "info" } ] diff --git a/install/npmplus-install.sh b/install/npmplus-install.sh index 1162bc45c..58688240f 100644 --- a/install/npmplus-install.sh +++ b/install/npmplus-install.sh @@ -89,19 +89,36 @@ customize msg_info "Retrieving Default Login (Patience)" PASSWORD_FOUND=0 + for i in {1..60}; do - PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | awk '/Creating a new user:/ { print; exit }') - if [[ -n "$PASSWORD_LINE" ]]; then - PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}') - echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd + PASSWORD_LINE=$( + { awk '/Creating a new user:/{print; exit}' < <(docker logs "$CONTAINER_ID" 2>&1); } || true + ) + + if [[ -n "${PASSWORD_LINE:-}" ]]; then + PASSWORD="${PASSWORD_LINE#*password: }" + printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd msg_ok "Saved default login to /opt/.npm_pwd" PASSWORD_FOUND=1 break fi sleep 2 done +if [[ $PASSWORD_FOUND -eq 0 ]]; then + PASSWORD_LINE=$( + timeout 30s bash -c ' + docker logs -f --since=0s --tail=0 "$1" 2>&1 | awk "/Creating a new user:/{print; exit}" + ' _ "$CONTAINER_ID" || true + ) + if [[ -n "${PASSWORD_LINE:-}" ]]; then + PASSWORD="${PASSWORD_LINE#*password: }" + printf 'username: admin@example.org\npassword: %s\n' "$PASSWORD" >/opt/.npm_pwd + msg_ok "Saved default login to /opt/.npm_pwd (live)" + PASSWORD_FOUND=1 + fi +fi if [[ $PASSWORD_FOUND -eq 0 ]]; then - msg_error "Could not retrieve default login after 60 seconds." + msg_error "Could not retrieve default login after 120s." echo -e "\nYou can manually check the container logs with:\n docker logs $CONTAINER_ID | grep 'Creating a new user:'\n" fi