diff --git a/README.md b/README.md index a173007..fc3da3d 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia_web/main/scrip ### `SKIP_DOWNLOAD=1 bash scripts/install.sh` завершается сразу без вывода («нифига» не происходит) -В старых версиях под **`set -o pipefail`** подсчёт контейнеров через **`grep`** падал, если **нет ни одного запущенного имени `amnezia-awg…`** (например WG остановлен или имя другое): скрипт завершался до строки **«Сборка образа»**. Обновите **`scripts/install.sh`** до актуального из `main` или не используйте локальную копию без исправления. +В старых версиях под **`set -o pipefail`** подсчёт контейнеров через **`grep`** падал, если **нет ни одного запущенного имени `amnezia-awg…`**; отдельно тот же эффект давал пайплайн **`docker port … | head | awk`** при **остановленном** `amnezia-admin`: `docker inspect` ещё «видит» контейнер, а **`docker port` возвращает ошибку**. Скрипт обрывался до **«Сборка образа»**. Обновите **`scripts/install.sh`** до актуального из `main` или временно выполните **`docker rm -f amnezia-admin`** перед установкой. ### Лендинг: порт 80 занят diff --git a/package.json b/package.json index 17395f3..e787a7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amnezia-admin", - "version": "1.2.4", + "version": "1.2.5", "private": true, "description": "amnezia_web — базовая панель AmneziaWG (FREE: просмотр и удаление клиентов; полная версия — PRO).", "license": "MIT", diff --git a/scripts/install.sh b/scripts/install.sh index 790ef60..e62f939 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -77,7 +77,12 @@ mkdir -p "${DATA_DIR}" # При повторном запуске не менять внешний порт панели, если не указали HOST_PORT явно (по умолчанию 8080). PREV_HOST_PORT="" if docker inspect "${CONTAINER_NAME}" >/dev/null 2>&1; then - PREV_HOST_PORT="$(docker port "${CONTAINER_NAME}" 3980/tcp 2>/dev/null | head -1 | awk -F: '{print $NF}')" + # Контейнер может существовать, но быть остановлен: `docker port` тогда код ≠ 0 — при pipefail рвём весь скрипт без сообщения. + __dock_port_out="" + __dock_port_out="$(docker port "${CONTAINER_NAME}" 3980/tcp 2>/dev/null)" || : + if [[ -n "${__dock_port_out}" ]]; then + PREV_HOST_PORT="$(printf '%s\n' "${__dock_port_out}" | head -n1 | awk -F: '{print $NF}')" || PREV_HOST_PORT="" + fi if [[ -n "${PREV_HOST_PORT}" && "${HOST_PORT}" == "8080" ]]; then HOST_PORT="${PREV_HOST_PORT}" echo "→ Уже запущен ${CONTAINER_NAME}: сохраняю внешний порт ${HOST_PORT} (укажите HOST_PORT=… чтобы сменить)."