mirror of
https://github.com/andrey271192/amnezia-web-pro-deploy.git
synced 2026-09-20 13:50:06 +00:00
feat: quick-install removes FREE panel before PRO; detect AWG container
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
17
README.md
17
README.md
@@ -7,23 +7,32 @@
|
||||
- VPS с **Docker** и **Docker Compose v2** (`docker compose`), **curl**, при первой установке — **git**
|
||||
- Активная подписка и **ключ** (GitHub PAT с `read:packages`), см. закрытый пост Boosty
|
||||
|
||||
## Одна ссылка — установка (спросит только ключ)
|
||||
## Одна команда — FREE → PRO (спросит только ключ)
|
||||
|
||||
Скопируйте и выполните на VPS **от root** (или через `sudo`):
|
||||
На VPS **от root**:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
||||
```
|
||||
|
||||
Скрипт сам возьмёт актуальный тег образа из файла [`PRO_IMAGE_TAG`](PRO_IMAGE_TAG), склонирует этот репозиторий в `/opt/amnezia-web-pro-deploy` и попросит ввести **ключ** (персональный токен для `docker pull` с GHCR). Ввод скрыт; запрос идёт через **`/dev/tty`**, чтобы работало при конструкции `curl | sudo bash`.
|
||||
Скрипт **перед установкой PRO**:
|
||||
|
||||
Если на сервере интерактив всё равно недоступен — тот же скрипт файлом:
|
||||
1. **Убирает FREE-панель** из типового `install.sh` (**amnezia_web**): контейнеры `amnezia-admin`, `amnezia-web-landing`, локальные образы `amnezia-admin:latest` / `amnezia-web-landing:latest`, каталог сборки **`/opt/amnezia-admin`**.
|
||||
2. **Не трогает** контейнеры VPN/Wi‑Fi (**amnezia-awg**, **amnezia-awg2** и т.д.).
|
||||
3. Подставляет **`AWG_CONTAINER`** автоматически, если на сервере уже есть `amnezia-awg` или `amnezia-awg2`.
|
||||
4. Клонирует/обновляет **`/opt/amnezia-web-pro-deploy`**, тянет тег из [`PRO_IMAGE_TAG`](PRO_IMAGE_TAG), запрашивает **ключ PAT** (ввод с **`/dev/tty`**).
|
||||
|
||||
Отключить снос FREE (редко нужно): `SKIP_REMOVE_FREE=1 curl … | sudo -E bash`.
|
||||
|
||||
Если **нет интерактива** на stdin:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh -o /tmp/amnezia-quick-install.sh
|
||||
sudo bash /tmp/amnezia-quick-install.sh
|
||||
```
|
||||
|
||||
**Порт:** если после удаления FREE **8080** всё ещё занят — скрипт предложит другой или задайте `HOST_PORT=8081 curl … | sudo -E bash`.
|
||||
|
||||
## Ручной способ (git + .env)
|
||||
|
||||
```bash
|
||||
|
||||
@@ -17,7 +17,9 @@ sudo apt-get update && sudo apt-get install -y curl git
|
||||
curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo bash
|
||||
```
|
||||
|
||||
Скрипт спросит **ключ доступа** (скрытый ввод с клавиатуры). Вставьте ключ из блока ниже и нажмите Enter.
|
||||
Установщик **снимает FREE-панель** (типовой `amnezia_web`: контейнеры `amnezia-admin`, лендинг, образы и `/opt/amnezia-admin`). **Контейнер AmneziaWG/VPN не удаляется.** Затем ставится PRO и запрашивается ключ ниже.
|
||||
|
||||
Если FREE оставить нельзя по ошибке (редко): `SKIP_REMOVE_FREE=1 curl … | sudo -E bash`.
|
||||
|
||||
Если после вставки ключа появляются ошибки — альтернатива (тот же установщик):
|
||||
|
||||
@@ -26,14 +28,12 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy
|
||||
sudo bash /tmp/amnezia-quick-install.sh
|
||||
```
|
||||
|
||||
**Порт 8080 занят:** освободите его (`docker ps`, остановите лишний контейнер) или укажите другой порт и повторите установку:
|
||||
**Порт 8080 занят не FREE-панелью:** скрипт сам предложит другой порт, либо явно:
|
||||
|
||||
```bash
|
||||
HOST_PORT=8081 curl -fsSL https://raw.githubusercontent.com/andrey271192/amnezia-web-pro-deploy/main/quick-install.sh | sudo -E bash
|
||||
```
|
||||
|
||||
Либо правкой `/opt/amnezia-web-pro-deploy/.env` и `cd /opt/amnezia-web-pro-deploy && docker compose up -d`.
|
||||
|
||||
### Ваш ключ (Personal Access Token для GHCR)
|
||||
|
||||
```
|
||||
|
||||
@@ -40,6 +40,26 @@ if ! docker info >/dev/null 2>&1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Снимаем FREE-панель (amnezia_web / install.sh): контейнеры + локальный образ + каталог сборки.
|
||||
# VPN/AWG контейнеры (amnezia-awg, amnezia-awg2 и т.д.) не останавливаем.
|
||||
remove_free_amnezia_web_panel() {
|
||||
if [[ "${SKIP_REMOVE_FREE:-}" == "1" ]]; then
|
||||
echo "→ SKIP_REMOVE_FREE=1 — FREE-панель не удаляю."
|
||||
return 0
|
||||
fi
|
||||
echo "→ Удаляю FREE-панель Amnezia Web (освобождаю порт 8080 при необходимости)..."
|
||||
local c
|
||||
for c in amnezia-admin amnezia-web-landing; do
|
||||
docker rm -f "${c}" 2>/dev/null || true
|
||||
done
|
||||
docker rmi -f amnezia-admin:latest 2>/dev/null || true
|
||||
docker rmi -f amnezia-web-landing:latest 2>/dev/null || true
|
||||
rm -rf /opt/amnezia-admin 2>/dev/null || true
|
||||
echo "→ FREE-панель снята (контейнеры WireGuard/AmneziaWG не трогались)."
|
||||
}
|
||||
|
||||
remove_free_amnezia_web_panel
|
||||
|
||||
echo "→ Получаю актуальный тег образа..."
|
||||
IMAGE_TAG="$(trim "$(curl -fsSL "${RAW_BASE}/PRO_IMAGE_TAG")")"
|
||||
if [[ -z "${IMAGE_TAG}" ]]; then
|
||||
@@ -126,7 +146,24 @@ pick_host_port() {
|
||||
printf '%s' "${alt}"
|
||||
}
|
||||
|
||||
pick_awg_container_name() {
|
||||
if [[ -n "${AWG_CONTAINER:-}" ]]; then
|
||||
printf '%s' "${AWG_CONTAINER}"
|
||||
return
|
||||
fi
|
||||
if docker inspect amnezia-awg >/dev/null 2>&1; then
|
||||
printf '%s' 'amnezia-awg'
|
||||
return
|
||||
fi
|
||||
if docker inspect amnezia-awg2 >/dev/null 2>&1; then
|
||||
printf '%s' 'amnezia-awg2'
|
||||
return
|
||||
fi
|
||||
printf '%s' 'amnezia-awg2'
|
||||
}
|
||||
|
||||
SELECTED_HOST_PORT="$(pick_host_port)"
|
||||
SELECTED_AWG="$(pick_awg_container_name)"
|
||||
|
||||
umask 077
|
||||
# %q экранирует $ и прочее — безопасно для «source .env» в install.sh
|
||||
@@ -137,7 +174,7 @@ umask 077
|
||||
printf 'GHCR_TOKEN=%q\n' "${GHCR_KEY}"
|
||||
printf 'HOST_PORT=%q\n' "${SELECTED_HOST_PORT}"
|
||||
printf 'CONTAINER_NAME=%q\n' "${CONTAINER_NAME:-amnezia-admin-pro}"
|
||||
printf 'AWG_CONTAINER=%q\n' "${AWG_CONTAINER:-amnezia-awg2}"
|
||||
printf 'AWG_CONTAINER=%q\n' "${SELECTED_AWG}"
|
||||
} >"${INSTALL_ROOT}/.env"
|
||||
|
||||
echo "→ Запуск установки из ${INSTALL_ROOT}"
|
||||
|
||||
Reference in New Issue
Block a user