From e47f674811badc5de5c8898aa729dc0210f1a86e 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 00:26:33 +0300 Subject: [PATCH] fix: require docker compose v2; reject legacy docker-compose 1.x Co-authored-by: Cursor --- README.md | 5 ++++- docs/BOOSTY_SUBSCRIBERS_POST.md | 5 ++++- quick-install.sh | 10 ++++++++++ scripts/install.sh | 17 +++++++++-------- scripts/update.sh | 5 ++--- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e3944ad..2202798 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,10 @@ ## Требования -- VPS с **Docker** и **Docker Compose v2** (`docker compose`), **curl**, при первой установке — **git** +- VPS с **Docker** и **Docker Compose v2** — команда **`docker compose`** (плагин `docker-compose-plugin`). + **Не подходит** старый **`docker-compose`** 1.x из Ubuntu — на новых образах будет ошибка **`ContainerConfig` / KeyError**. +- Установка плагина: `sudo apt-get update && sudo apt-get install -y docker-compose-plugin` +- Также нужны **curl** и при первой установке — **git** - Активная подписка и **ключ** (GitHub PAT с `read:packages`), см. закрытый пост Boosty ## Одна команда — FREE → PRO (спросит только ключ) diff --git a/docs/BOOSTY_SUBSCRIBERS_POST.md b/docs/BOOSTY_SUBSCRIBERS_POST.md index 7fdc70a..b55ee8a 100644 --- a/docs/BOOSTY_SUBSCRIBERS_POST.md +++ b/docs/BOOSTY_SUBSCRIBERS_POST.md @@ -13,10 +13,13 @@ На VPS установите Docker и Compose v2, затем выполните **от root**: ```bash -sudo apt-get update && sudo apt-get install -y curl git +sudo apt-get update && sudo apt-get install -y curl git docker-compose-plugin +docker compose version curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash ``` +Нужен именно **`docker compose`** (плагин v2). Старый пакет **`docker-compose`** 1.x из Ubuntu ломает установку (**ContainerConfig**). + Установщик **снимает FREE-панель** (типовой `amnezia_web`: контейнеры `amnezia-admin`, лендинг, образы и `/opt/amnezia-admin`). **Контейнер AmneziaWG/VPN не удаляется.** Затем ставится PRO и запрашивается ключ ниже. Если FREE оставить нельзя по ошибке (редко): `SKIP_REMOVE_FREE=1 curl … | sudo -E bash`. diff --git a/quick-install.sh b/quick-install.sh index 5cf5c96..23176b8 100755 --- a/quick-install.sh +++ b/quick-install.sh @@ -40,6 +40,16 @@ if ! docker info >/dev/null 2>&1; then exit 1 fi +if ! docker compose version >/dev/null 2>&1; then + echo "Ошибка: нужен Docker Compose v2 — команда «docker compose»." >&2 + echo "Старый «docker-compose» 1.x из apt даёт ошибку ContainerConfig на новых образах." >&2 + echo "" >&2 + echo "Установите плагин и повторите:" >&2 + echo " sudo apt-get update && sudo apt-get install -y docker-compose-plugin" >&2 + echo " docker compose version" >&2 + exit 1 +fi + # Снимаем FREE-панель (amnezia_web / install.sh): контейнеры + локальный образ + каталог сборки. # VPN/AWG контейнеры (amnezia-awg, amnezia-awg2 и т.д.) не останавливаем. remove_free_amnezia_web_panel() { diff --git a/scripts/install.sh b/scripts/install.sh index 4ad4ad9..d3b7b33 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -24,22 +24,23 @@ need_docker() { } } -need_compose() { +# Не используем legacy docker-compose 1.x (Python): KeyError ContainerConfig на новых образах. +need_compose_v2() { if docker compose version >/dev/null 2>&1; then COMPOSE=(docker compose) - return + return 0 fi - if command -v docker-compose >/dev/null 2>&1; then - COMPOSE=(docker-compose) - return - fi - echo "Нужен Docker Compose v2 (docker compose)." + echo "Ошибка: нужен Docker Compose v2 — команда «docker compose», не старый «docker-compose» 1.x из apt." >&2 + echo "" >&2 + echo "Установка плагина (Ubuntu/Debian):" >&2 + echo " sudo apt-get update && sudo apt-get install -y docker-compose-plugin" >&2 + echo "Проверка: docker compose version" >&2 exit 1 } need_root need_docker -need_compose +need_compose_v2 if [[ ! -f "${ENV_FILE}" ]]; then echo "Создайте файл .env из .env.example и вставьте GHCR_* из закрытого поста Boosty:" diff --git a/scripts/update.sh b/scripts/update.sh index bc10cf7..49d4787 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -11,10 +11,9 @@ fi if docker compose version >/dev/null 2>&1; then COMPOSE=(docker compose) -elif command -v docker-compose >/dev/null 2>&1; then - COMPOSE=(docker-compose) else - echo "Нужен docker compose." + echo "Ошибка: нужен Docker Compose v2 («docker compose»). Старый docker-compose 1.x не поддерживается." >&2 + echo " sudo apt-get update && sudo apt-get install -y docker-compose-plugin" >&2 exit 1 fi