From d902f78667080744b02bdbf7eaefd37ecb2aa903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Fri, 15 May 2026 02:33:21 +0300 Subject: [PATCH] fix(community): install openssl and tar into helper PRO install.sh calls openssl (line 102) for initial secrets and tar to unpack the release; Alpine docker:*-cli ships neither. Add them to apk/apt step plus early presence check for clearer log. Co-authored-by: Cursor --- package.json | 2 +- server.js | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 51985ae..25c6404 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amnezia-admin", - "version": "1.2.10", + "version": "1.2.11", "private": true, "description": "amnezia_web — базовая панель AmneziaWG (FREE: просмотр и удаление клиентов; полная версия — PRO).", "license": "MIT", diff --git a/server.js b/server.js index 1920c2c..3dec68b 100644 --- a/server.js +++ b/server.js @@ -415,20 +415,28 @@ function shellSafeDockerContainerName(raw, fallback) { } /** - * Одноразовый helper (`docker:*-cli`) почти всегда Alpine: нет **`bash`** (#!/usr/bin/env bash у install.sh) и **`curl`**. - * Без них `exec bash ./install.sh` падает сразу (~код 2 и пустое продолжение лога после строки про helper). - * Отключить: COMMUNITY_HELPER_SKIP_PREPARE_TOOLS=1 (если свой образ уже с bash+curl или меняете shebang скрипта PRO). + * Одноразовый helper (`docker:*-cli`) почти всегда Alpine: нет **`bash`** (#!/usr/bin/env bash у install.sh), **`curl`**, **`openssl`** и **`tar`**. + * Без них `exec bash ./install.sh` падает сразу (~код 2/127 и пустое продолжение лога после строки про helper). + * Отключить: COMMUNITY_HELPER_SKIP_PREPARE_TOOLS=1 (если свой образ уже со всем необходимым). */ function dockerCliHelperEnsureFetchToolsScript() { if (envTruthy(process.env.COMMUNITY_HELPER_SKIP_PREPARE_TOOLS)) return ""; return ` -# bash + curl для приватного install.sh (#!/usr/bin/env bash у большинства install.sh из репозиториев GitHub). -if ! command -v bash >/dev/null 2>&1 || ! command -v curl >/dev/null 2>&1; then +# bash + curl + openssl + tar для приватного install.sh: +# - bash: shebang #!/usr/bin/env bash +# - curl: скачивание tar.gz релиза с GitHub +# - openssl: генерация первичного пароля/секретов +# - tar: распаковка tar.gz +if ! command -v bash >/dev/null 2>&1 || ! command -v curl >/dev/null 2>&1 \\ + || ! command -v openssl >/dev/null 2>&1 || ! command -v tar >/dev/null 2>&1; then if command -v apk >/dev/null 2>&1; then - apk add --no-cache bash curl ca-certificates || echo "⚠ helper: apk add bash/curl failed — install.sh может не запуститься" + apk add --no-cache bash curl ca-certificates openssl tar \\ + || echo "⚠ helper: apk add bash/curl/openssl/tar failed — install.sh может не запуститься" elif command -v apt-get >/dev/null 2>&1; then export DEBIAN_FRONTEND=noninteractive - apt-get update -qq >/dev/null && apt-get install -y -qq bash curl ca-certificates || echo "⚠ helper: apt bash/curl failed — install.sh может не запуститься" + apt-get update -qq >/dev/null \\ + && apt-get install -y -qq bash curl ca-certificates openssl tar \\ + || echo "⚠ helper: apt bash/curl/openssl/tar failed — install.sh может не запуститься" fi fi `.trim(); @@ -1626,6 +1634,8 @@ echo " staging: ${stageInHelper} (host: ${tmpDir.replace(DATA_DIR, dataHost)})" ${prelude} ${fetchTools ? `${fetchTools}\n` : ""}command -v bash >/dev/null 2>&1 || { echo "⚠ helper: нет bash после apk/apt — см. ошибки apk выше"; exit 126; } command -v curl >/dev/null 2>&1 || { echo "⚠ helper: нет curl после apk/apt"; exit 126; } +command -v openssl >/dev/null 2>&1 || { echo "⚠ helper: нет openssl после apk/apt — install.sh падает на генерации пароля"; exit 126; } +command -v tar >/dev/null 2>&1 || { echo "⚠ helper: нет tar после apk/apt — install.sh падает на распаковке релиза"; exit 126; } set +e ( cd ${stageInHelper} && bash ./install.sh ) rv=$?