From 1960c2212ab98afca18722a6c59aef5a07516d7b Mon Sep 17 00:00:00 2001 From: andrey271192 Date: Tue, 16 Jun 2026 21:46:49 +0300 Subject: [PATCH] feat(install): AmneziaWG presence check + clear warnings/logs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses tester feedback: the installer gave no signal about whether a working AmneziaWG server was present, so failures ("cannot create client") were hard to diagnose. install.sh now prints a "Проверка AmneziaWG" block after deploy: - lists every container that actually holds /opt/amnezia/awg/*.conf, with its UDP port and client count; - states that the panel auto-discovers them (no manual AWG_PROFILES); - if none found, warns loudly that this is normal on a fresh VPS and spells out the two ways forward (deploy an instance from the panel's "Протоколы / инстансы", or install a server with the Amnezia app), noting that until then the client list is empty by design. --- scripts/install.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/scripts/install.sh b/scripts/install.sh index 2ee4312..e8318ef 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -297,6 +297,35 @@ else echo "→ Лендинг пропущен (SKIP_LANDING=1 или нет каталога landing)." fi +# ── Диагностика AmneziaWG: что увидит панель ────────────────────────────── +echo "" +echo "── Проверка AmneziaWG ──" +__awg_running="$(docker ps --format '{{.Names}}' 2>/dev/null | grep -E '^amnezia-?awg|amnezia.*wg|awg' || true)" +__awg_with_conf="" +for __c in $(docker ps --format '{{.Names}}' 2>/dev/null); do + if docker exec "${__c}" sh -c 'test -f /opt/amnezia/awg/awg0.conf || test -f /opt/amnezia/awg/wg0.conf' 2>/dev/null; then + __awg_with_conf="${__awg_with_conf} ${__c}" + fi +done +__awg_with_conf="$(echo "${__awg_with_conf}" | xargs 2>/dev/null || true)" + +if [[ -n "${__awg_with_conf}" ]]; then + echo "✓ Найдены контейнеры AmneziaWG: ${__awg_with_conf}" + echo " Панель подхватит их автоматически (рантайм-обнаружение) — ручной AWG_PROFILES не нужен." + for __c in ${__awg_with_conf}; do + __cnt="$(docker exec "${__c}" sh -c 'cat /opt/amnezia/awg/clientsTable 2>/dev/null' 2>/dev/null | grep -c clientId || true)" + __prt="$(docker exec "${__c}" sh -c 'grep -h ListenPort /opt/amnezia/awg/*.conf 2>/dev/null' 2>/dev/null | grep -oE '[0-9]+' | head -1 || true)" + echo " • ${__c}: порт ${__prt:-?}/udp, клиентов в таблице: ${__cnt:-0}" + done +else + echo "⚠ Не найдено ни одного контейнера AmneziaWG (нет /opt/amnezia/awg/*.conf ни в одном контейнере)." + echo " Это НОРМАЛЬНО для чистого VPS. Дальше есть два пути:" + echo " 1) Развернуть AmneziaWG прямо из панели: раздел «Протоколы / инстансы» → выбрать вариант и порт → «Развернуть инстанс»." + echo " 2) Поставить сервер приложением Amnezia на этот VPS — панель подхватит контейнер сама." + echo " Пока сервера нет, список клиентов будет пустым и создание клиента вернёт ошибку «контейнер не найден» — это ожидаемо." +fi +echo "────────────────────────" + echo "" echo "=== Готово ===" echo "Админ-панель: http://${IP:-SERVER_IP}:${HOST_PORT}"