From 5c3797d3d84f18c310f44dbcda403608a59f5e4d 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 01:23:51 +0300 Subject: [PATCH] docs(install): explain GitHub stall; curl timeouts and optional progress Co-authored-by: Cursor --- README.md | 6 ++++++ package.json | 2 +- scripts/install.sh | 28 +++++++++++++++++++++++----- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0c47b96..9a02568 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,8 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web/main/scrip curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web/main/scripts/install.sh | sudo bash ``` +После сообщения **`→ Клонирование релиза …`** несколько минут **может ничего не печататься**: идёт `curl … | tar` с GitHub. Для **полосы прогресса**: `sudo INSTALL_SCRIPT_VERBOSE=1 bash` (или передайте переменную в окружение до `|`). Если обрывает по времени или «тишина» часами задайте таймауты: **`CURL_CONNECT_TIMEOUT`** (по умолчанию 30 с к подключению), **`CURL_MAX_TIME`** (по умолчанию до 900 с на загрузку), **`CURL_RETRY`**. Полный URL tar.gz можно подменить: **`GITHUB_REPO_URL_OVERRIDE`** (должен указывать на архив того же вида **`${REPO}-${BRANCH}.tar.gz`**, после распаковки каталог будет **`ИмяРепозитория-${BRANCH}`**). + Принудительная пересборка образа: **`NO_CACHE=1`**. --- @@ -105,6 +107,10 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web/main/scrip Образ **`docker:26-cli`** на Alpine часто **без `curl`**; ваш приватный `install.sh`, скачивающий архив через `curl … | tar`, падает, а **`tar`** читает пустые данные («invalid magic»). Актуальная панель **перед запуском** `install.sh` в helper ставит **`curl`** через **`apk`** / **`apt-get`**. Если сетевая политика блокирует `apk add`/`apt-get`, укажите другой образ в **`COMMUNITY_PRO_INSTALL_HELPER_IMAGE`** (со встроенным `curl`), либо замените `curl` в своём **`install.sh`** на **`wget`**. Отключить авто-доставку `curl`: **`COMMUNITY_HELPER_SKIP_PREPARE_TOOLS=1`** (обычно не нужно). +### Установка «зависла» на сообщении **`→ Клонирование релиза …`** и долго без вывода + +Это этап **скачивания и распаковки** архива с GitHub. Запустите установщик с **`INSTALL_SCRIPT_VERBOSE=1`** (полоска загрузки `curl`). Задайте **`CURL_MAX_TIME`** если нужно усечь ожидание. При блокировках GitHub с хоста — зеркальный полный URL в **`GITHUB_REPO_URL_OVERRIDE`** (см. раздел «Обновление»). + ### Лендинг: порт 80 занят Если на хосте уже что-то слушает **TCP 80**, установщик сообщит об этом и, при дефолтном **`LANDING_PORT=80`**, сам попробует другой свободный порт (обычно начиная с **8081**). Либо явно: **`LANDING_PORT=8083`**, либо **`SKIP_LANDING=1`**. diff --git a/package.json b/package.json index f467990..03f8713 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amnezia-admin", - "version": "1.2.2", + "version": "1.2.3", "private": true, "description": "amnezia_web — базовая панель AmneziaWG (FREE: просмотр и удаление клиентов; полная версия — PRO).", "license": "MIT", diff --git a/scripts/install.sh b/scripts/install.sh index 4c05bfe..d8149b7 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -42,16 +42,34 @@ trap cleanup EXIT if [[ "${SKIP_DOWNLOAD:-}" != "1" ]]; then echo "→ Клонирование релиза ${GITHUB_REPO} (${BRANCH})..." + echo "→ Скачивание tar.gz с GitHub (вывода может не быть 1–10 мин.; при блокировках задайте зеркало GITHUB_REPO_URL или см. CURL_MAX_TIME ниже)." TMP=$(mktemp -d) - curl -fsSL \ - -H 'Cache-Control: no-cache' \ - -H 'Pragma: no-cache' \ - "https://github.com/${GITHUB_REPO}/archive/refs/heads/${BRANCH}.tar.gz" \ - | tar xz -C "${TMP}" + CURL_OPTS=( + -fsSL + -H 'Cache-Control: no-cache' + -H 'Pragma: no-cache' + --connect-timeout "${CURL_CONNECT_TIMEOUT:-30}" + --max-time "${CURL_MAX_TIME:-900}" + --retry "${CURL_RETRY:-2}" + --retry-delay "${CURL_RETRY_DELAY:-5}" + --retry-connrefused + ) + if [[ "${INSTALL_SCRIPT_VERBOSE:-}" == "1" ]]; then CURL_OPTS+=(--progress-bar); fi + CURL_URL="${GITHUB_REPO_URL_OVERRIDE:-}" + if [[ -z "${CURL_URL}" ]]; then + CURL_URL="https://github.com/${GITHUB_REPO}/archive/refs/heads/${BRANCH}.tar.gz" + fi + if ! curl "${CURL_OPTS[@]}" "${CURL_URL}" | tar xz -C "${TMP}"; then + echo "Ошибка: не удалось скачать или распаковать архив (${CURL_URL})." + echo "Подсказка: проверьте ping/curl до github.com, при необходимости export GITHUB_REPO_URL_OVERRIDE='…' или INSTALL_SCRIPT_VERBOSE=1." + exit 1 + fi + echo "→ Перенос распакованного дерева в ${INSTALL_DIR}…" rm -rf "${INSTALL_DIR}" mkdir -p "$(dirname "${INSTALL_DIR}")" mv "${TMP}/${REPO_SLUG}-${BRANCH}" "${INSTALL_DIR}" TMP="" + echo "→ Источники на месте." fi mkdir -p "${DATA_DIR}"