Files
amnezia_web-PRO/docs/panel-guide.md
Андрей Бобырев 5853aaae00 docs: panel guide + README refresh for multi-instance & cascade
- Add docs/panel-guide.md (features, troubleshooting, API table)
- README: intro, two AWG_PROFILES examples with pskPath, landing port note
- Bump package.json to 1.1.0; update verify grep for current UI

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-14 18:54:58 +03:00

62 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Руководство по Amnezia Admin WebUI
Краткий справочник по функциям, типичным проблемам и HTTP API.
## Возможности
| Блок в интерфейсе | Назначение |
|-------------------|------------|
| **Инстанс** | Переключение между профилями из `AWG_PROFILES` (разные контейнеры AmneziaWG / Legacy). Виден только если в контейнере панели задан JSON из **двух и более** профилей. |
| **Время** | Отображение часов контейнера и браузера; синхронизация времени хоста VPS по SSH (если доступно). |
| **Cloudflare WARP** | Выбор клиентов (IPv4 `/32`), выход в интернет через интерфейс `warp` в контейнере AWG. |
| **Новый клиент под каскад** | Создание нового peer на сервере с **вашим Endpoint** (промежуточный узел); выдача готового `.conf`. |
| **Пользователи** | Вкл/выкл peer, удаление, переименование, даты отключения; экспорт `.conf` если в записи есть `userData.last_config`. |
## Переключатель «Инстанс» не отображается
1. Проверьте переменную контейнера панели:
```bash
docker inspect amnezia-admin --format '{{range .Config.Env}}{{println .}}{{end}}' | grep '^AWG_PROFILES='
```
2. Если строки нет — один раз задайте JSON при установке (пример см. в основном [README](../README.md)) или восстановите файл **`/root/amnezia-admin.awg-profiles.json`** на VPS и снова запустите `install.sh` **без** своего `AWG_PROFILES` — установщик подставит значение из файла или из старого контейнера перед удалением.
3. После правок обновите страницу с **жёстким сбросом кэша** (Ctrl+Shift+R).
## Лендинг не поднимается (порт 80 занят)
При ошибке bind `:80` используйте при установке **`SKIP_LANDING=1`** или **`LANDING_PORT=8081`** — админка на `HOST_PORT` (например 8080) от этого не зависит.
## Конфигурации клиентов
- **Старые строки без `last_config`** — полный `.conf` с сервера собрать нельзя (нет приватного ключа). Используйте приложение Amnezia или блок **«Новый клиент под каскад»** (новый ключ на сервере).
- **Экспорт по кнопкам** — только если в `clientsTable` есть **`userData.last_config`** с полем `config` или `client_priv_key`.
## HTTP API (все маршруты под `/`, кроме статики)
Требуют cookie-сессии после **`POST /api/login`**, если не указано иное.
| Метод | Путь | Назначение |
|-------|------|------------|
| GET | `/health` | Проверка живости |
| GET | `/api/session` | Есть ли действующая сессия |
| POST | `/api/login` | `{ "password": "…" }` |
| POST | `/api/logout` | Выход |
| POST | `/api/change-password` | Смена пароля |
| GET | `/api/protocols` | Текущий профиль, список инстансов, подсказка если профиль один |
| POST | `/api/protocol` | `{ "profileId": "…" }` — смена инстанса |
| GET | `/api/clients` | Таблица клиентов и метаданные WARP |
| POST | `/api/clients/disable` | Выключить peer |
| POST | `/api/clients/enable` | Включить peer |
| POST | `/api/clients/delete` | Удалить |
| POST | `/api/clients/rename` | Переименовать |
| POST | `/api/clients/disconnect-date` | Даты отключения / расписание |
| GET/POST | `/api/clients/export-config` | Скачать `.conf`; GET — прямая ссылка (сессия); опционально `?token=…` если задан `EXPORT_CONFIG_SECRET` |
| POST | `/api/clients/create-cascade` | `{ "endpointHost", "endpointPort?", "tunnelIp?", "clientName?", "profileId?" }` — новый peer и файл `.conf` |
| POST | `/api/warp/start` | Поднять WARP |
| POST | `/api/warp/stop` | Остановить WARP |
| POST | `/api/warp/routing` | Политика по клиентам |
| GET | `/api/server-time` | Время и подсказки по поясам |
| GET | `/api/time-sync-capabilities` | Доступность синхронизации по SSH |
| POST | `/api/sync-host-time` | Запись времени на хост через SSH |
Подробности переменных окружения — в таблице установки в [README](../README.md).