fix: auto-detect amnezia container runtime

This commit is contained in:
andrey271192
2026-06-23 12:17:50 +03:00
parent b264108819
commit 0a3f9de717
5 changed files with 1207 additions and 105 deletions

View File

@@ -1,6 +1,6 @@
# Руководство по Amnezia Admin WebUI
Краткий справочник по функциям, типичным проблемам и HTTP API.
Что нажимать в панели, если что-то «не так», и какие есть HTTP API. Скриншоты интерфейса — в [README](../README.md).
## Возможности
@@ -10,7 +10,7 @@
| **Время** | Отображение часов контейнера и браузера; синхронизация времени хоста VPS по SSH (если доступно). |
| **Cloudflare WARP** | *Необязательно.* Вывод части клиентов в интернет через интерфейс `warp` в контейнере AWG. Если WARP не ставили — статус **«Не установлен»** нормален; панель и VPN без этого работают. Установка и удаление — скрипт `scripts/warp-amnezia.sh` на хосте (`install` / **`uninstall`**), подробности в основном [README](../README.md). |
| **Новый клиент под каскад** | Создание нового peer на сервере с **вашим Endpoint** (промежуточный узел); выдача готового `.conf`. |
| **Пользователи** | Просмотр клиентов, **вкл/выкл**, переименование, даты отключения, экспорт `.conf`, **удаление** peer с сервера. |
| **Пользователи** | В FREE: просмотр и **удаление** peer с сервера. В PRO дополнительно: вкл/выкл, переименование, даты отключения; экспорт `.conf` если в записи есть `userData.last_config`. |
## Переключатель «Инстанс» не отображается
@@ -55,6 +55,10 @@
- **Старые строки без `last_config`** — полный `.conf` с сервера собрать нельзя (нет приватного ключа). Используйте приложение Amnezia или блок **«Новый клиент под каскад»** (новый ключ на сервере).
- **Экспорт по кнопкам** — только если в `clientsTable` есть **`userData.last_config`** с полем `config` или `client_priv_key`.
## Контейнер называется не `amnezia-awg`
Начиная с **v1.2.40** обычная панель сама ищет контейнер AmneziaWG, если дефолтный `amnezia-awg` отсутствует. Поддержаны имена вида `amneziawg`, `amnezia-awg`, `amnezia-awg2` и другие контейнеры с `wg/awg` в имени, если внутри есть конфиг. Панель также сама выбирает рабочий config/client table path и binary (`awg` или `wg`), чтобы не падать с `Error response from daemon: No such container: amnezia-awg` и `sh: awg: not found`.
### Экспорт: имя файла и прямая ссылка
Ответ **`GET /api/clients/export-config`** отдаёт заголовок **`Content-Disposition: attachment; filename="…"`**. В Node.js значение заголовка должно быть в **ASCII**: кириллическое имя клиента в приложении не попадает в имя файла как есть — используется безопасная подстановка (латиница из имени или короткий префикс от `clientId`), чтобы не было ошибки вида `Invalid character in header content`. Содержимое `.conf` при этом остаётся полным UTF-8 текстом.