mirror of
https://github.com/andrey271192/amnezia-web-pro-deploy.git
synced 2026-09-20 13:50:06 +00:00
fix: require docker compose v2; reject legacy docker-compose 1.x
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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
|
- Активная подписка и **ключ** (GitHub PAT с `read:packages`), см. закрытый пост Boosty
|
||||||
|
|
||||||
## Одна команда — FREE → PRO (спросит только ключ)
|
## Одна команда — FREE → PRO (спросит только ключ)
|
||||||
|
|||||||
@@ -13,10 +13,13 @@
|
|||||||
На VPS установите Docker и Compose v2, затем выполните **от root**:
|
На VPS установите Docker и Compose v2, затем выполните **от root**:
|
||||||
|
|
||||||
```bash
|
```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
|
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-панель** (типовой `amnezia_web`: контейнеры `amnezia-admin`, лендинг, образы и `/opt/amnezia-admin`). **Контейнер AmneziaWG/VPN не удаляется.** Затем ставится PRO и запрашивается ключ ниже.
|
||||||
|
|
||||||
Если FREE оставить нельзя по ошибке (редко): `SKIP_REMOVE_FREE=1 curl … | sudo -E bash`.
|
Если FREE оставить нельзя по ошибке (редко): `SKIP_REMOVE_FREE=1 curl … | sudo -E bash`.
|
||||||
|
|||||||
@@ -40,6 +40,16 @@ if ! docker info >/dev/null 2>&1; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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): контейнеры + локальный образ + каталог сборки.
|
# Снимаем FREE-панель (amnezia_web / install.sh): контейнеры + локальный образ + каталог сборки.
|
||||||
# VPN/AWG контейнеры (amnezia-awg, amnezia-awg2 и т.д.) не останавливаем.
|
# VPN/AWG контейнеры (amnezia-awg, amnezia-awg2 и т.д.) не останавливаем.
|
||||||
remove_free_amnezia_web_panel() {
|
remove_free_amnezia_web_panel() {
|
||||||
|
|||||||
@@ -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
|
if docker compose version >/dev/null 2>&1; then
|
||||||
COMPOSE=(docker compose)
|
COMPOSE=(docker compose)
|
||||||
return
|
return 0
|
||||||
fi
|
fi
|
||||||
if command -v docker-compose >/dev/null 2>&1; then
|
echo "Ошибка: нужен Docker Compose v2 — команда «docker compose», не старый «docker-compose» 1.x из apt." >&2
|
||||||
COMPOSE=(docker-compose)
|
echo "" >&2
|
||||||
return
|
echo "Установка плагина (Ubuntu/Debian):" >&2
|
||||||
fi
|
echo " sudo apt-get update && sudo apt-get install -y docker-compose-plugin" >&2
|
||||||
echo "Нужен Docker Compose v2 (docker compose)."
|
echo "Проверка: docker compose version" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
need_root
|
need_root
|
||||||
need_docker
|
need_docker
|
||||||
need_compose
|
need_compose_v2
|
||||||
|
|
||||||
if [[ ! -f "${ENV_FILE}" ]]; then
|
if [[ ! -f "${ENV_FILE}" ]]; then
|
||||||
echo "Создайте файл .env из .env.example и вставьте GHCR_* из закрытого поста Boosty:"
|
echo "Создайте файл .env из .env.example и вставьте GHCR_* из закрытого поста Boosty:"
|
||||||
|
|||||||
@@ -11,10 +11,9 @@ fi
|
|||||||
|
|
||||||
if docker compose version >/dev/null 2>&1; then
|
if docker compose version >/dev/null 2>&1; then
|
||||||
COMPOSE=(docker compose)
|
COMPOSE=(docker compose)
|
||||||
elif command -v docker-compose >/dev/null 2>&1; then
|
|
||||||
COMPOSE=(docker-compose)
|
|
||||||
else
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user