fix: require docker compose v2; reject legacy docker-compose 1.x

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Андрей Бобырев
2026-05-15 00:26:33 +03:00
parent a4808b5e0a
commit e47f674811
5 changed files with 29 additions and 13 deletions

View File

@@ -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 (спросит только ключ)

View File

@@ -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`.

View File

@@ -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() {

View File

@@ -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:"

View File

@@ -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