---
name: awg-operations
description: >-
  Установка, настройка и эксплуатация именно awg-containers-and-tools:
  awg-tool, Docker Compose, AmneziaWG 1.0/1.5/2.0/3.0/3.1, генерация и
  проверка параметров, SSH-развёртывание, сохранённые подключения, выдача и
  отзыв клиентов (awg-tool peer, awg-peer), смена обфускации (awg-tool
  rotate), резолвер туннеля (списки, зоны, цепочка, awg-tool dns), страницы
  .vpn и диагностика. Используй этот навык при любом запросе об установке
  этого проекта, конфигурациях .conf/vpn://, новых устройствах, проблемах
  handshake, DNS, маршрутов, MTU или обновлении сервера, даже если
  пользователь не произносит слово «навык».
---

# AmneziaWG: справка для агента

Помогай работать с существующими инструментами проекта, не придумывая новые
скрипты, команды или слой управления. Это неофициальный community-проект,
не официальный установщик AmneziaVPN. Отвечай на языке пользователя;
справка написана по-русски, команды и идентификаторы оставлены исходными.

## Навигация

Пути `references/...` относительны каталогу этого `SKILL.md`; пути
`containers/...`, `crates/...` и `README.md` относительны корню репозитория.

| Задача | Что прочитать |
|---|---|
| Сборка CLI, требования, новый сервер, SSH, сохранённые подключения, Compose | [references/installation.md](references/installation.md) |
| Выбор версии и клиента, генерация, проверка, `.conf`, переменные, DNS, маршруты | [references/configuration.md](references/configuration.md) |
| Новое устройство, сохранение конфига, full/split tunnel, отзыв доступа, смена обфускации | [references/clients.md](references/clients.md) |
| Status, doctor, logs, утилиты узла, страницы .vpn, обновление, резервирование, вклад в код | [references/operations.md](references/operations.md) |
| Сценарии проверки ответов агента | [evals/evals.json](evals/evals.json) |

Читай только нужные разделы, но при добавлении клиента сначала проверь
ограничения выдачи в `clients.md`: они влияют на безопасность и совместимость.

Переключатели генератора принимают значение: `--random-trailers off`,
`--disable-h off`, `--header-protection on`. Флаг без значения включает.
Выбор `--version` сначала применяет пресет версии (для 3.1: MTU 1280,
`RandomTrailers` включён, H1-H4 = 1..4), флаги меняют только то, что указано.

## Порядок работы

1. **Определи задачу и контекст.** Нужна инструкция или выполнение? Новый
   сервер или существующий? Локальный Docker, сервер по SSH или приложение на
   телефоне? Не запускай установку ради ответа на вопрос.
2. **Сначала наблюдение.** Найди действующий Compose, имя и образ контейнера,
   поколение протокола, интерфейс, опубликованный UDP-порт, state-volume и
   фактический endpoint. Используй `awg-tool status --local`, `--server ИМЯ`
   или `--host АДРЕС`. Не печатай конфигурации с ключами в чат.
3. **Выбери один рабочий путь.** Удалённая установка: `awg-tool install`.
   Ручная контейнерная установка: Compose. Новое устройство на работающем узле:
   `awg-tool peer add` (или `awg-peer` внутри контейнера), не новый
   `install`/`gen`. Новая обфускация на работающем узле: `awg-tool rotate`.
4. **Сверь текущее поведение.** `awg-tool --help` и исходники checkout важнее
   примеров в документации. У CLI ручной парсер: наличие неизвестного флага в
   команде не доказывает, что он сработает. Не изобретай `export`, `backup`,
   `restore`, `install --out` или `install --dns`.
5. **Уточни только недоступные из окружения решения.** Для реального развёртывания
   нужны целевой host/SSH, доступный клиентам endpoint, порт, целевое приложение
   и full/split tunnel. Не проси пользователя присылать приватные ключи.
6. **Изменяй после согласования риска.** Установка пакетов и Docker, перезапись
   серверного `.conf`, ротация обфускации, открытие firewall, перезапуск, отзыв
   peer и удаление данных затрагивают доступ. Назови точный узел, изменение и
   возможный обрыв. Вопрос «как установить» не разрешение выполнить команды на
   сервере. `rotate --yes` пропускает вопрос: передавай его только после явного
   согласия.
7. **Проверь результат на нужном конце.** `errno=0` значит, что демон принял
   конфиг; `healthy`: интерфейс и UAPI живы. Рабочий VPN подтверждают handshake
   после трафика, изменение rx/tx, DNS и доступ к нужному ресурсу с реального
   клиента (`awg-tool under` на этой машине, страницы `amiunder.vpn` и
   `leak.vpn`). Не объявляй успешной удалённую установку по одной сборке CLI.

## Инварианты

- Согласуй поколение образа, допустимые ключи и приложение клиента. Нельзя
  включать поля 3.1 в 3.0; для старых сборок клиента учитывай
  `--client-release` (например, ограничение H у AmneziaWG Windows до 2.0.2).
- Для одной серверной конфигурации используй один согласованный блок
  обфускации; не генерируй новый для каждого добавленного устройства. Смена
  блока для всех сразу: `awg-tool rotate`, после чего каждому клиенту нужен
  новый блок.
- Выдаваемый `.conf` и `vpn://` это секреты. PrivateKey, PSK,
  HeaderProtectionKey, SSH-пароли и сырой UAPI не попадают в Git, issue и ответ.
- Сохраняй `/var/lib/awg` и исходный серверный конфиг: live peer без
  постоянного источника после пересоздания исчезнет. Для `.conf`-peer одного
  `awg-peer rm` недостаточно: entrypoint восстановит его при следующем запуске.
- Не публикуй внутренний DNS и страницы наружу и не обещай полный kill switch:
  изоляция DNS bridge не управляет fallback, DoH и IPv6 на устройстве.
  Проверяй это `awg-tool under`, `awg-leak` и страницей `leak.vpn`.
- Не исправляй проблему через `--privileged`, отключение firewall или проверки
  SSH host key, удаление volumes, `curl | sh` или запуск чужого установщика.
- Не меняй код ради обхода ограничения, если запрос только на эксплуатацию.
  Объясни ограничение и выбери поддержанный путь; новые скрипты не нужны.

## Формат ответа

Для инструкции укажи: выбранный путь и предпосылки, затем команды с местом
запуска, ожидаемый проверяемый результат и что делать при характерной ошибке.
Отделяй примеры от готовых к выполнению команд, не оставляй фиктивные ключи в
файле, который предлагается немедленно запускать.

После выполнения назови конкретный узел или контейнер, что изменено, где сохранён
секретный артефакт (без содержимого), какие проверки реально выполнены и что
не удалось проверить. Для ошибки: наблюдение, подтверждённая причина либо
гипотезы, минимальная следующая проверка. Не подменяй отсутствие данных
уверенным диагнозом.
